oparl_openapi.jsonโข34.1 kB
{
"openapi": "3.0.3",
"info": {
"title": "OParl API",
"description": "Standardized interface for parliamentary information systems",
"version": "1.1.0",
"contact": {
"name": "OParl Initiative",
"url": "https://dev.oparl.org"
}
},
"servers": [
{
"url": "https://api.oparl.org",
"description": "OParl API Server"
}
],
"paths": {
"/system": {
"get": {
"tags": ["System"],
"summary": "Get system information",
"description": "Retrieve the root system information",
"operationId": "getSystem",
"responses": {
"200": {
"description": "System information",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/System"
}
}
}
}
}
}
},
"/body": {
"get": {
"tags": ["Body"],
"summary": "List all bodies",
"description": "Retrieve a list of all parliamentary bodies",
"operationId": "listBodies",
"parameters": [
{
"name": "limit",
"in": "query",
"description": "Maximum number of results to return",
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 20
}
},
{
"name": "offset",
"in": "query",
"description": "Number of results to skip",
"schema": {
"type": "integer",
"minimum": 0,
"default": 0
}
}
],
"responses": {
"200": {
"description": "List of bodies",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Body"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
}
}
}
}
}
}
}
},
"/body/{bodyId}": {
"get": {
"tags": ["Body"],
"summary": "Get body by ID",
"description": "Retrieve a specific parliamentary body",
"operationId": "getBody",
"parameters": [
{
"name": "bodyId",
"in": "path",
"required": true,
"description": "Body identifier",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Body information",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Body"
}
}
}
},
"404": {
"description": "Body not found"
}
}
}
},
"/body/{bodyId}/organization": {
"get": {
"tags": ["Organization"],
"summary": "List organizations for a body",
"description": "Retrieve organizations associated with a specific body",
"operationId": "listBodyOrganizations",
"parameters": [
{
"name": "bodyId",
"in": "path",
"required": true,
"description": "Body identifier",
"schema": {
"type": "string"
}
},
{
"name": "limit",
"in": "query",
"description": "Maximum number of results to return",
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 20
}
},
{
"name": "offset",
"in": "query",
"description": "Number of results to skip",
"schema": {
"type": "integer",
"minimum": 0,
"default": 0
}
}
],
"responses": {
"200": {
"description": "List of organizations",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Organization"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
}
}
}
}
}
}
}
},
"/body/{bodyId}/person": {
"get": {
"tags": ["Person"],
"summary": "List persons for a body",
"description": "Retrieve persons associated with a specific body",
"operationId": "listBodyPersons",
"parameters": [
{
"name": "bodyId",
"in": "path",
"required": true,
"description": "Body identifier",
"schema": {
"type": "string"
}
},
{
"name": "limit",
"in": "query",
"description": "Maximum number of results to return",
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 20
}
},
{
"name": "offset",
"in": "query",
"description": "Number of results to skip",
"schema": {
"type": "integer",
"minimum": 0,
"default": 0
}
}
],
"responses": {
"200": {
"description": "List of persons",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Person"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
}
}
}
}
}
}
}
},
"/body/{bodyId}/meeting": {
"get": {
"tags": ["Meeting"],
"summary": "List meetings for a body",
"description": "Retrieve meetings associated with a specific body",
"operationId": "listBodyMeetings",
"parameters": [
{
"name": "bodyId",
"in": "path",
"required": true,
"description": "Body identifier",
"schema": {
"type": "string"
}
},
{
"name": "limit",
"in": "query",
"description": "Maximum number of results to return",
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 20
}
},
{
"name": "offset",
"in": "query",
"description": "Number of results to skip",
"schema": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
{
"name": "start",
"in": "query",
"description": "Start date for filtering meetings",
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "end",
"in": "query",
"description": "End date for filtering meetings",
"schema": {
"type": "string",
"format": "date"
}
}
],
"responses": {
"200": {
"description": "List of meetings",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Meeting"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
}
}
}
}
}
}
}
},
"/body/{bodyId}/paper": {
"get": {
"tags": ["Paper"],
"summary": "List papers for a body",
"description": "Retrieve papers/documents associated with a specific body",
"operationId": "listBodyPapers",
"parameters": [
{
"name": "bodyId",
"in": "path",
"required": true,
"description": "Body identifier",
"schema": {
"type": "string"
}
},
{
"name": "limit",
"in": "query",
"description": "Maximum number of results to return",
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 20
}
},
{
"name": "offset",
"in": "query",
"description": "Number of results to skip",
"schema": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
{
"name": "search",
"in": "query",
"description": "Search term for filtering papers",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "List of papers",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Paper"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
}
}
}
}
}
}
}
},
"/meeting/{meetingId}": {
"get": {
"tags": ["Meeting"],
"summary": "Get meeting by ID",
"description": "Retrieve a specific meeting",
"operationId": "getMeeting",
"parameters": [
{
"name": "meetingId",
"in": "path",
"required": true,
"description": "Meeting identifier",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Meeting information",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Meeting"
}
}
}
},
"404": {
"description": "Meeting not found"
}
}
}
},
"/meeting/{meetingId}/agendaItem": {
"get": {
"tags": ["AgendaItem"],
"summary": "List agenda items for a meeting",
"description": "Retrieve agenda items for a specific meeting",
"operationId": "listMeetingAgendaItems",
"parameters": [
{
"name": "meetingId",
"in": "path",
"required": true,
"description": "Meeting identifier",
"schema": {
"type": "string"
}
},
{
"name": "limit",
"in": "query",
"description": "Maximum number of results to return",
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 20
}
},
{
"name": "offset",
"in": "query",
"description": "Number of results to skip",
"schema": {
"type": "integer",
"minimum": 0,
"default": 0
}
}
],
"responses": {
"200": {
"description": "List of agenda items",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AgendaItem"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
}
}
}
}
}
}
}
},
"/paper/{paperId}": {
"get": {
"tags": ["Paper"],
"summary": "Get paper by ID",
"description": "Retrieve a specific paper/document",
"operationId": "getPaper",
"parameters": [
{
"name": "paperId",
"in": "path",
"required": true,
"description": "Paper identifier",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Paper information",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Paper"
}
}
}
},
"404": {
"description": "Paper not found"
}
}
}
},
"/person/{personId}": {
"get": {
"tags": ["Person"],
"summary": "Get person by ID",
"description": "Retrieve a specific person",
"operationId": "getPerson",
"parameters": [
{
"name": "personId",
"in": "path",
"required": true,
"description": "Person identifier",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Person information",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Person"
}
}
}
},
"404": {
"description": "Person not found"
}
}
}
},
"/organization/{organizationId}": {
"get": {
"tags": ["Organization"],
"summary": "Get organization by ID",
"description": "Retrieve a specific organization",
"operationId": "getOrganization",
"parameters": [
{
"name": "organizationId",
"in": "path",
"required": true,
"description": "Organization identifier",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Organization information",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Organization"
}
}
}
},
"404": {
"description": "Organization not found"
}
}
}
}
},
"components": {
"schemas": {
"System": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the system"
},
"type": {
"type": "string",
"enum": ["https://schema.oparl.org/1.1/System"],
"description": "Type identifier"
},
"oparlVersion": {
"type": "string",
"description": "OParl version used by this system"
},
"body": {
"type": "string",
"format": "uri",
"description": "URL to the list of bodies"
},
"name": {
"type": "string",
"description": "Name of the system"
},
"website": {
"type": "string",
"format": "uri",
"description": "Website of the system"
},
"contactEmail": {
"type": "string",
"format": "email",
"description": "Contact email address"
},
"contactName": {
"type": "string",
"description": "Contact person name"
},
"vendor": {
"type": "string",
"description": "Vendor of the system"
},
"product": {
"type": "string",
"description": "Product name"
},
"created": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp"
},
"modified": {
"type": "string",
"format": "date-time",
"description": "Last modification timestamp"
}
},
"required": ["id", "type", "oparlVersion", "body"]
},
"Body": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the body"
},
"type": {
"type": "string",
"enum": ["https://schema.oparl.org/1.1/Body"],
"description": "Type identifier"
},
"system": {
"type": "string",
"format": "uri",
"description": "URL to the system"
},
"name": {
"type": "string",
"description": "Name of the body"
},
"shortName": {
"type": "string",
"description": "Short name or abbreviation"
},
"website": {
"type": "string",
"format": "uri",
"description": "Website of the body"
},
"email": {
"type": "string",
"format": "email",
"description": "Email address"
},
"organization": {
"type": "string",
"format": "uri",
"description": "URL to the list of organizations"
},
"person": {
"type": "string",
"format": "uri",
"description": "URL to the list of persons"
},
"meeting": {
"type": "string",
"format": "uri",
"description": "URL to the list of meetings"
},
"paper": {
"type": "string",
"format": "uri",
"description": "URL to the list of papers"
},
"legislativeTerm": {
"type": "array",
"items": {
"$ref": "#/components/schemas/LegislativeTerm"
},
"description": "Legislative terms"
},
"created": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp"
},
"modified": {
"type": "string",
"format": "date-time",
"description": "Last modification timestamp"
}
},
"required": ["id", "type", "system", "name"]
},
"Organization": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the organization"
},
"type": {
"type": "string",
"enum": ["https://schema.oparl.org/1.1/Organization"],
"description": "Type identifier"
},
"body": {
"type": "string",
"format": "uri",
"description": "URL to the body"
},
"name": {
"type": "string",
"description": "Name of the organization"
},
"shortName": {
"type": "string",
"description": "Short name or abbreviation"
},
"website": {
"type": "string",
"format": "uri",
"description": "Website of the organization"
},
"email": {
"type": "string",
"format": "email",
"description": "Email address"
},
"member": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to members"
},
"meeting": {
"type": "string",
"format": "uri",
"description": "URL to the list of meetings"
},
"created": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp"
},
"modified": {
"type": "string",
"format": "date-time",
"description": "Last modification timestamp"
}
},
"required": ["id", "type", "body", "name"]
},
"Person": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the person"
},
"type": {
"type": "string",
"enum": ["https://schema.oparl.org/1.1/Person"],
"description": "Type identifier"
},
"body": {
"type": "string",
"format": "uri",
"description": "URL to the body"
},
"name": {
"type": "string",
"description": "Full name of the person"
},
"familyName": {
"type": "string",
"description": "Family name"
},
"givenName": {
"type": "string",
"description": "Given name"
},
"title": {
"type": "array",
"items": {
"type": "string"
},
"description": "Academic or professional titles"
},
"affiliation": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to organizations"
},
"email": {
"type": "string",
"format": "email",
"description": "Email address"
},
"phone": {
"type": "string",
"description": "Phone number"
},
"status": {
"type": "string",
"description": "Status of the person"
},
"created": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp"
},
"modified": {
"type": "string",
"format": "date-time",
"description": "Last modification timestamp"
}
},
"required": ["id", "type", "body", "name"]
},
"Meeting": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the meeting"
},
"type": {
"type": "string",
"enum": ["https://schema.oparl.org/1.1/Meeting"],
"description": "Type identifier"
},
"body": {
"type": "string",
"format": "uri",
"description": "URL to the body"
},
"name": {
"type": "string",
"description": "Name of the meeting"
},
"meetingState": {
"type": "string",
"enum": ["scheduled", "cancelled", "took place"],
"description": "State of the meeting"
},
"start": {
"type": "string",
"format": "date-time",
"description": "Start time of the meeting"
},
"end": {
"type": "string",
"format": "date-time",
"description": "End time of the meeting"
},
"location": {
"type": "string",
"format": "uri",
"description": "URL to the location"
},
"organization": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to organizations"
},
"participant": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to participants"
},
"invitation": {
"type": "string",
"format": "uri",
"description": "URL to the invitation"
},
"resultsProtocol": {
"type": "string",
"format": "uri",
"description": "URL to the results protocol"
},
"verbatimProtocol": {
"type": "string",
"format": "uri",
"description": "URL to the verbatim protocol"
},
"auxiliaryFile": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to auxiliary files"
},
"agendaItem": {
"type": "string",
"format": "uri",
"description": "URL to the list of agenda items"
},
"created": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp"
},
"modified": {
"type": "string",
"format": "date-time",
"description": "Last modification timestamp"
}
},
"required": ["id", "type", "body", "name", "meetingState"]
},
"AgendaItem": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the agenda item"
},
"type": {
"type": "string",
"enum": ["https://schema.oparl.org/1.1/AgendaItem"],
"description": "Type identifier"
},
"meeting": {
"type": "string",
"format": "uri",
"description": "URL to the meeting"
},
"order": {
"type": "integer",
"description": "Order of the agenda item"
},
"name": {
"type": "string",
"description": "Name of the agenda item"
},
"public": {
"type": "boolean",
"description": "Whether the agenda item is public"
},
"consultation": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to consultations"
},
"resolutionText": {
"type": "string",
"description": "Text of the resolution"
},
"resolutionFile": {
"type": "string",
"format": "uri",
"description": "URL to the resolution file"
},
"created": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp"
},
"modified": {
"type": "string",
"format": "date-time",
"description": "Last modification timestamp"
}
},
"required": ["id", "type", "meeting", "name"]
},
"Paper": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the paper"
},
"type": {
"type": "string",
"enum": ["https://schema.oparl.org/1.1/Paper"],
"description": "Type identifier"
},
"body": {
"type": "string",
"format": "uri",
"description": "URL to the body"
},
"name": {
"type": "string",
"description": "Name of the paper"
},
"reference": {
"type": "string",
"description": "Reference number"
},
"date": {
"type": "string",
"format": "date",
"description": "Date of the paper"
},
"paperType": {
"type": "string",
"description": "Type of paper"
},
"relatedPaper": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to related papers"
},
"superordinatePaper": {
"type": "string",
"format": "uri",
"description": "URL to superordinate paper"
},
"subordinatePaper": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to subordinate papers"
},
"mainFile": {
"type": "string",
"format": "uri",
"description": "URL to the main file"
},
"auxiliaryFile": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to auxiliary files"
},
"location": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to locations"
},
"originatorPerson": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to originator persons"
},
"underDirectionOf": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to directing organizations"
},
"originatorOrganization": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "URLs to originator organizations"
},
"consultation": {
"type": "string",
"format": "uri",
"description": "URL to the consultation"
},
"created": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp"
},
"modified": {
"type": "string",
"format": "date-time",
"description": "Last modification timestamp"
}
},
"required": ["id", "type", "body", "name"]
},
"LegislativeTerm": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the legislative term"
},
"type": {
"type": "string",
"enum": ["https://schema.oparl.org/1.1/LegislativeTerm"],
"description": "Type identifier"
},
"body": {
"type": "string",
"format": "uri",
"description": "URL to the body"
},
"name": {
"type": "string",
"description": "Name of the legislative term"
},
"startDate": {
"type": "string",
"format": "date",
"description": "Start date of the legislative term"
},
"endDate": {
"type": "string",
"format": "date",
"description": "End date of the legislative term"
}
},
"required": ["id", "type", "body", "name"]
},
"Pagination": {
"type": "object",
"properties": {
"totalElements": {
"type": "integer",
"description": "Total number of elements"
},
"totalPages": {
"type": "integer",
"description": "Total number of pages"
},
"currentPage": {
"type": "integer",
"description": "Current page number"
},
"pageSize": {
"type": "integer",
"description": "Number of elements per page"
},
"hasNext": {
"type": "boolean",
"description": "Whether there is a next page"
},
"hasPrevious": {
"type": "boolean",
"description": "Whether there is a previous page"
}
}
}
}
}
}