{ "openapi": "3.0.0", "info": { "title": "Application Subscriber API", "version": "0.7", "description": "API vom Fachverfahren zum Zustelldienst", "contact": { "name": "FITKO", "url": "https://www.fitko.de/" }, "license": { "name": "Creative Commons Attribution Share Alike 4.0 (CC BY-SA 4.0)", "url": "https://creativecommons.org/licenses/by-sa/4.0/" } }, "servers": [ { "url": "https://subscriber-test.fiep-poc.de/beta7", "description": "Testsystem" } ], "paths": { "/destinations": { "parameters": [], "get": { "summary": "List Destinations", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "destinations": { "type": "array", "items": { "$ref": "../models/destination.json" } } } }, "examples": { "example-1": { "value": { "destinations": [ { "publicOrganization": { "organizationName": "Gewerbeamt Musterstadt", "address": { "type": "national", "street": "Kurzer Weg", "houseNumber": "7", "postalCode": "12345", "city": "Ankh-Morpork" }, "contact": { "telephones": [ { "number": "+49 89 32168-0", "mobile": false, "description": "work" } ], "email": "behoerde@example.com" } }, "schemas": [ { "mimeType": "application/json", "schemaSource": "none", } ], "callback": { "callbackURI": "http://127.0.0.1:4010/voluptas" }, "destinationId": "0ddf3ab5-dd89-4e04-9ecd-b2c50b0b4efd" }, { "publicOrganization": { "organizationName": "Gewerbeamt Musterstadt", "address": { "type": "national", "street": "Kurzer Weg", "houseNumber": "7", "postalCode": "12345", "city": "Ankh-Morpork" } }, "technicalContact": [ { "formOfAddress": "Herr", "doctoralDegrees": "Dr.", "firstName": "Kunibert", "lastName": "Vonundzu", "contact": { "telephones": [ { "number": "+49 89 32168-42", "mobile": false, "description": "work" }, { "number": "+49 123 456789", "mobile": true, "description": "work" } ], "email": "kunibert.vonundzu@example.com" } } ], "schemas": [ { "mimeType": "application/json", "schemaSource": "none", } ], "callback": { "callbackURI": "http://127.0.0.1:4010/voluptas" }, "destinationId": "0ddf3ab5-dd89-4e04-9ecd-b2c50b0b4efd" }, { "publicOrganization": { "organizationName": "Gewerbeamt Musterstadt", "address": { "type": "national", "street": "Kurzer Weg", "houseNumber": "7", "postalCode": "12345", "city": "Ankh-Morpork" }, "contact": { "telephones": [ { "number": "+49 89 32168-0", "mobile": false, "description": "work" } ], "email": "behoerde@example.com" } }, "schemas": [ { "mimeType": "application/json", "schemaSource": "none", } ], "callback": { "callbackURI": "http://127.0.0.1:4010/voluptas" }, "destinationId": "7881dba9-4055-4854-8b6d-11ea5b7f3047" } ] } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } } }, "operationId": "list-destinations", "description": "Ruft die Liste aller Destinations dieses Accounts auf.", "tags": [ "Destination Management" ], "security": [ { "OAuth20": [ "destination:manage", "destination:subscribe" ] } ] }, "post": { "summary": "Create Destination", "operationId": "create-destination", "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "destinationId": { "type": "string" } }, "required": [ "destinationId" ] }, "examples": { "example-1": { "value": { "destinationId": "7881dba9-4055-4854-8b6d-11ea5b7f3047" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } } }, "description": "Legt eine neue Destination an.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "../models/destination-no-id.json" }, "examples": { "example-1": { "value": { "publicOrganization": { "organizationName": "Gewerbeamt Musterstadt", "address": { "type": "national", "street": "Kurzer Weg", "houseNumber": "7", "postalCode": "12345", "city": "Ankh-Morpork" }, "contact": { "telephones": [ { "number": "+49 89 32168-0", "mobile": false, "description": "work" } ], "email": "behoerde@example.com" } }, "technicalContact": [ { "formOfAddress": "Herr", "doctoralDegrees": "Dr.", "firstName": "Kunibert", "lastName": "Vonundzu", "contact": { "telephones": [ { "number": "+49 89 32168-42", "mobile": false, "description": "work" }, { "number": "+49 123 456789", "mobile": true, "description": "work" } ], "email": "kunibert.vonundzu@example.com" } } ], "schemas": [ { "mimeType": "application/json", "schemaSource": "none", } ], "callback": { "callbackURI": "http://127.0.0.1:4010/voluptas" } } } } } }, "description": "Anzulegende Destination" }, "tags": [ "Destination Management" ], "security": [ { "OAuth20": [ "destination:manage" ] } ] } }, "/destinations/{destinationId}/applications/{applicationId}/data": { "parameters": [ { "schema": { "type": "string" }, "name": "destinationId", "in": "path", "required": true }, { "schema": { "type": "string" }, "name": "applicationId", "in": "path", "required": true } ], "get": { "summary": "Get Application Data", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": {} }, "examples": { "example-1": { "value": { "F99000001": "string", "G99000001": { "F99000002": "string", "F99000003": 42 }, "G99000002": [ { "F99000004": true, "G99000001": { "F99000002": "string", "F99000003": 17 } }, { "F99000004": true, "G99000001": { "F99000002": "string", "F99000003": 24 } } ] } } } }, "application/xml": { "schema": { "type": "object", "properties": {} }, "examples": {} }, "application/jose": { "schema": { "type": "string", "pattern": "^[a-zA-Z0-9-_=.]+$", "description": "JSON Web Encryption Compact Serialization, RFC 7516" }, "examples": { "example-1": { "value": "eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAtMjU2In0.nlXGAufYH36IABDy0En0LXEhGfC20IZSSchs27ADalHpRoTZKfXhc7hcMk8Y9V8yTP0jYbmrq6NtEg-QS2O5TQFD9Hluhpb631PBgKjPXHYX1Y6iUcR1sXxSUPjePi8F8PcZUZuUJLnhz6myyc9scdAq9BXG2cDJVgkfLI8eZdrqnrY24Hh32_7d5OKLFSpSDrBlqfyQuY8Wbs2h8Wy4Z4hwT1aWDO7b-SqJA181hUbNcF_rR4Mze3Fdtu-3uOIQYgLBBRmN1ZHDLk0EKNCI4B8MyDKLGPoM0ZomV5lVwVWjAMRI4CgQkIQ9rnm-Adof-GbegQL3yJSoNIWRWgzCnZBYZ638QgPllCMVW3WvEVvsgj0Hj16PbofqXTQ5S73LINfP6FZawfC0yMrYjSV_N2L0Lkp2KI3BkJcy-PcFhBnhwu2IsJGAlyDRCnXdVqig8m5yLHuSMQTpLW69LzPEskfsjhnNDR-CEBZpicjMfc-4CL6U7E7YoGc_99DzE5U5._JfqyKH23GiKsnDW.ZtMMjZ3GgcgHss8qbFRhrjl4L0kAfbco-oXICkk.VBHJ00FyDTYjOA_OYfiz5g" } } }, "text/plain": { "schema": { "$ref": "../models/common/base64.json" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } } }, "operationId": "get-application-data", "description": "Ruft die Fachdaten der Application ab.\n\nBeispiele:\n#### JSON\n```json\n{\n \"F99000001\": \"Eins\",\n \"G99000001\": {\n \"F99000002\": \"Zwei\",\n \"F99000003\": \"Drei\"\n }\n}\n```\n\n#### XML\n```xml\n<S99000001>\n <F99000001>Eins</F99000001>\n <G99000001>\n <F99000002>Zwei</F99000002>\n <F99000003>Drei</F99000003>\n </G99000001>\n</S99000001>\n```", "tags": [ "Application Retrieval" ], "security": [ { "OAuth20": [ "destination:manage", "destination:subscribe" ] } ] } }, "/destinations/{destinationId}/applications/{applicationId}/docs/{docId}": { "parameters": [ { "schema": { "type": "string" }, "name": "destinationId", "in": "path", "required": true }, { "schema": { "type": "string" }, "name": "applicationId", "in": "path", "required": true }, { "schema": { "type": "string" }, "name": "docId", "in": "path", "required": true } ], "get": { "summary": "Get Application Document", "responses": { "200": { "description": "OK", "content": { "*/*": { "schema": { "type": "string", "format": "binary" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } } }, "operationId": "get-application-document", "description": "Ruf ein Dokument (Formular oder Anlage) der Application ab.", "tags": [ "Application Retrieval" ], "security": [ { "OAuth20": [ "destination:manage", "destination:subscribe" ] } ] } }, "/destinations/{destinationId}/applications/{applicationId}": { "parameters": [ { "schema": { "type": "string" }, "name": "destinationId", "in": "path", "required": true }, { "schema": { "type": "string" }, "name": "applicationId", "in": "path", "required": true } ], "get": { "summary": "Get Application Metadata", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "../models/application/metadata.json" }, "examples": { "example-1": { "value": { "additionalReferenceInfo": { "subject": "Anmeldung eines Gewerbes in Musterstadt", "caseId": "DF/8923" }, "contentStructure": { "data": { "schema": { "mimeType": "application/json", "schemaSource": "none", } }, "docs": [ { "docId": "1", "purpose": "form", "size": 13046, "mimeType": "application/pdf", "filename": "test.pdf", "description": "Das Antragsformular", "lang": { "lang": "de", "region": "DE" }, "hash": { "algorithm": "SHA-256", "digest": "bf37d894fdf9aeade63975ed648d49c3e8a7a773923597d2418915f54cd7c3b9" } } ] }, "publicServiceType": { "name": "Gewerbeanmeldung", "description": "Eine Gewerbeanmeldung ist immer dann notwendig, wenn Sie einen stehenden Gewerbebetrieb beginnen.", "leikaId": "99050012104000", "otherIdentifiers": [ { "id": "8664844", "schemeId": "service.niedersachsen.de", "schemeName": "Serviceportal Niedersachsen" }, { "id": "354824", "schemeId": "buerger.thueringen.de", "schemeName": "Zuständigkeitsfinder Thüringen" } ] }, "applicationId": "0c508e3f-2353-4206-9a1e-34b2e864d5a8" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } } }, "operationId": "get-application", "description": "Ruft eine wartende Application ab.", "tags": [ "Application Retrieval" ], "security": [ { "OAuth20": [ "destination:manage", "destination:subscribe" ] } ] } }, "/destinations/{destinationId}/applications": { "parameters": [ { "schema": { "type": "string" }, "name": "destinationId", "in": "path", "required": true } ], "get": { "summary": "List Applications", "operationId": "list-applications", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "applications": { "type": "array", "items": { "$ref": "../models/application/metadata.json" } } } }, "examples": { "example-1": { "value": { "applications": [] } }, "example-2": { "value": { "applications": [ { "additionalReferenceInfo": { "subject": "Anmeldung eines Gewerbes in Musterstadt", "caseId": "DF/8923" }, "contentStructure": { "data": { "schema": { "mimeType": "application/json", "schemaSource": "none", } }, "docs": [ { "docId": "1", "purpose": "form", "size": 13046, "mimeType": "application/pdf", "filename": "test.pdf", "description": "Das Antragsformular", "lang": { "lang": "de", "region": "DE" }, "hash": { "algorithm": "SHA-256", "digest": "bf37d894fdf9aeade63975ed648d49c3e8a7a773923597d2418915f54cd7c3b9" } } ] }, "publicServiceType": { "name": "Gewerbeanmeldung", "description": "Eine Gewerbeanmeldung ist immer dann notwendig, wenn Sie einen stehenden Gewerbebetrieb beginnen.", "leikaId": "99050012104000", "otherIdentifiers": [ { "id": "8664844", "schemeId": "service.niedersachsen.de", "schemeName": "Serviceportal Niedersachsen" }, { "id": "354824", "schemeId": "buerger.thueringen.de", "schemeName": "Zuständigkeitsfinder Thüringen" } ] }, "applicationId": "0c508e3f-2353-4206-9a1e-34b2e864d5a8" } ] } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } } }, "description": "Ruft die Liste der wartenden Applications ab.", "tags": [ "Application Retrieval" ], "security": [ { "OAuth20": [ "destination:manage", "destination:subscribe" ] } ] } }, "/destinations/{destinationId}": { "parameters": [ { "schema": { "type": "string" }, "name": "destinationId", "in": "path", "required": true } ], "get": { "summary": "Get Destination", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "../models/destination.json" }, "examples": { "example-1": { "value": { "publicOrganization": { "organizationName": "Gewerbeamt Musterstadt", "address": { "type": "national", "street": "Kurzer Weg", "houseNumber": "7", "postalCode": "12345", "city": "Ankh-Morpork" }, "contact": { "telephones": [ { "number": "+49 89 32168-0", "mobile": false, "description": "work" } ], "email": "behoerde@example.com" } }, "technicalContact": [ { "formOfAddress": "Herr", "doctoralDegrees": "Dr.", "firstName": "Kunibert", "lastName": "Vonundzu", "contact": { "telephones": [ { "number": "+49 89 32168-42", "mobile": false, "description": "work" }, { "number": "+49 123 456789", "mobile": true, "description": "work" } ], "email": "kunibert.vonundzu@example.com" } } ], "schemas": [ { "mimeType": "application/json", "schemaSource": "none", } ], "callback": { "callbackURI": "http://127.0.0.1:4010/voluptas" }, "destinationId": "7881dba9-4055-4854-8b6d-11ea5b7f3047" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } } }, "operationId": "get-destination", "description": "Übertragungsziel abfragen", "tags": [ "Destination Management" ], "security": [ { "OAuth20": [ "destination:manage", "destination:subscribe" ] } ] }, "put": { "summary": "Update Destination", "operationId": "update-destination", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "result": { "type": "string", "enum": [ "success" ] } }, "required": [ "result" ] } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } } }, "description": "Übertragungsziel aktualisieren", "requestBody": { "content": { "application/json": { "schema": { "$ref": "../models/destination.json" }, "examples": { "example-1": { "value": { "destinationId": "7881dba9-4055-4854-8b6d-11ea5b7f3047", "publicOrganization": { "organizationName": "Gewerbeamt Ankh-Morpork", "address": { "type": "national", "street": "Kurzer Weg", "houseNumber": "7", "postalCode": "12345", "city": "Ankh-Morpork" }, "contact": { "telephones": [ { "number": "+49 89 32168-0", "mobile": false, "description": "work" } ], "email": "behoerde@example.com" } }, "technicalContact": [ { "formOfAddress": "Herr", "doctoralDegrees": "Dr.", "firstName": "Kunibert", "lastName": "Vonundzu", "contact": { "telephones": [ { "number": "+49 89 32168-42", "mobile": false, "description": "work" }, { "number": "+49 123 456789", "mobile": true, "description": "work" } ], "email": "kunibert.vonundzu@example.com" } } ], "schemas": [ { "mimeType": "application/json", "schemaSource": "none" } ], "callback": { "callbackURI": "http://127.0.0.1:4010/voluptas" } } } } } } }, "tags": [ "Destination Management" ], "security": [ { "OAuth20": [ "destination:manage" ] } ] }, "delete": { "summary": "Delete Destination", "operationId": "delete-destination", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "result": { "type": "string", "enum": [ "success" ] } }, "required": [ "result" ] } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } } }, "description": "Übertragungsziel löschen", "tags": [ "Destination Management" ], "security": [ { "OAuth20": [ "destination:manage" ] } ] } }, "/destinations/{destinationId}/applications/{applicationId}/status": { "parameters": [ { "schema": { "type": "string" }, "name": "destinationId", "in": "path", "required": true }, { "schema": { "type": "string" }, "name": "applicationId", "in": "path", "required": true } ], "put": { "summary": "Acknowledge Application", "operationId": "ack-application", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "result": { "type": "string", "enum": [ "success" ] } }, "required": [ "result" ] } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "../models/error-body.json" } } } } }, "description": "Bestätigt die Abholung der Application.\n\nDer Parameter `code` zeigt an, ob der Antrag noch weitergesendet wurde (`forwarded`) oder das finale Ziel erreicht hat (`delivered`).\n\nSofern der Wert `forwarded` übergeben wurde, muss zu einem späteren Zeitpunkt, wenn der Antrag final zugestellt wurde, ein weiterer Aufruf mit dem Wert `delivered` erfolgen.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "code": { "type": "string", "description": "Zeigt an, ob die Zustellung zum nächsten Hop (`forwarded`) oder bis zum Endpunkt (`delivered`) erfolgt ist.", "enum": [ "forwarded", "delivered" ] } }, "required": [ "code" ] }, "examples": { "example-1": { "value": { "code": "forwarded" } }, "example-2": { "value": { "code": "delivered" } } } } }, "description": "Details der Quittung" }, "tags": [ "Application Retrieval" ], "security": [ { "OAuth20": [ "destination:manage", "destination:subscribe" ] } ] } }, "/info": { "get": { "summary": "Get Info", "tags": [], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "version": { "type": "object", "properties": { "major": { "type": "integer" }, "minor": { "type": "integer" }, "patch": { "type": "integer" } } } } }, "examples": { "example-1": { "value": { "version": { "major": 0, "minor": 7, "patch": 0 } } } } } } } }, "operationId": "get-info", "security": [ { "OAuth20": [ "destination:manage", "destination:subscribe" ] } ], "description": "Gibt Informationen über den Server aus. Kann zu Testzwecken aufgerufen werden (Test der Erreichbarkeit und Zugriffaberechtigung)." } } }, "tags": [ { "name": "Destination Management" }, { "name": "Application Retrieval" } ], "components": { "securitySchemes": { "OAuth20": { "type": "oauth2", "flows": { "clientCredentials": { "tokenUrl": "https://subscriber-test-token.fiep-poc.de/auth/realms/test/protocol/openid-connect/token", "scopes": { "destination:manage": "Dieser Zugriffsbereich alle Destination Endpunkte eines Subscriber genutzt werden.", "destination:subscribe": "Dieser Zugriffsbereich erlaubt es, Anträge für allen Destinations abzuholen." } } }, "description": "Dieses Authentifizierungsmethode wird genutzt, um den Zugriff auf die API zu autorisieren. " } } } }