diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d70fde3a83bd58395e3555d0633a7bc9da9c0b75..793e052af3e273e1108f314c09b638816d56c621 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,12 +5,10 @@ - mkdir --mode 700 -p ~/.ssh - echo "$UBERSPACE_KNOWN_HOST" >> ~/.ssh/known_hosts -workflow: - rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS' - when: never - - if: '$CI_COMMIT_BRANCH' +include: + - project: 'fit-connect/pipeline' + ref: main + file: 'workflows/no-duplicate-pipelines.gitlab-ci.yml' stages: - build @@ -25,7 +23,7 @@ build: - apk add git - yarn script: - - export DOCUSAURUS_BASE_URL="/fit-connect/" && [[ "$CI_COMMIT_REF_NAME" != "main" ]] && export DOCUSAURUS_BASE_URL="/preview/fit-connect/$CI_COMMIT_REF_SLUG/" + - export DOCUSAURUS_BASE_URL="/fit-connect/" && [[ "$CI_COMMIT_REF_NAME" != "main" ]] && export DOCUSAURUS_BASE_URL="/fit-connect/$CI_COMMIT_REF_SLUG/" - yarn build artifacts: expose_as: 'Built Documentation' @@ -35,14 +33,14 @@ build: rules: - when: always -upload:review: +upload:preview: stage: upload image: alpine:latest environment: - name: review/$CI_COMMIT_REF_NAME - on_stop: stop:review + name: preview/$CI_COMMIT_REF_NAME + on_stop: stop:preview auto_stop_in: 2 week - url: https://docs.fitko.de/preview/fit-connect/$CI_COMMIT_REF_SLUG/ + url: https://preview.docs.fitko.dev/fit-connect/$CI_COMMIT_REF_SLUG/ needs: - build rules: @@ -50,7 +48,8 @@ upload:review: before_script: - *pre-deploy-uber-space-setup script: - - rsync -rLvz --delete --checksum -e "ssh -o CheckHostIP=no" --ipv4 --progress ./build/. fitko@dorado.uberspace.de:html/preview/fit-connect/$CI_COMMIT_REF_SLUG + - ssh -o CheckHostIP=no fitko@dorado.uberspace.de mkdir -p preview.docs.fitko.dev/fit-connect + - rsync -rLvz --delete --checksum -e "ssh -o CheckHostIP=no" --ipv4 --progress ./build/. fitko@dorado.uberspace.de:preview.docs.fitko.dev/fit-connect/$CI_COMMIT_REF_SLUG upload:production: stage: upload @@ -65,20 +64,21 @@ upload:production: before_script: - *pre-deploy-uber-space-setup script: - - rsync -rLvz --delete --checksum -e "ssh -o CheckHostIP=no" --ipv4 --progress ./build/. fitko@dorado.uberspace.de:html/fit-connect + - ssh -o CheckHostIP=no fitko@dorado.uberspace.de mkdir -p docs.fitko.de/fit-connect + - rsync -rLvz --delete --checksum -e "ssh -o CheckHostIP=no" --ipv4 --progress ./build/. fitko@dorado.uberspace.de:docs.fitko.de/fit-connect -stop:review: +stop:preview: stage: .post image: alpine:latest environment: - name: review/$CI_COMMIT_REF_NAME + name: preview/$CI_COMMIT_REF_NAME action: stop needs: - - upload:review + - upload:preview rules: - if: $CI_MERGE_REQUEST_ID when: manual before_script: - *pre-deploy-uber-space-setup script: - - ssh fitko@dorado.uberspace.de "rm -rf html/preview/fit-connect/$CI_COMMIT_REF_SLUG" + - ssh fitko@dorado.uberspace.de "rm -rf preview.docs.fitko.dev/fit-connect/$CI_COMMIT_REF_SLUG" diff --git a/docs/apis/routing-api.mdx b/docs/apis/routing-api.mdx index 85f6cabd766111b54eb05ac58686daa1742c3c37..cb9d5fb7ddadd9661f7988c7b73c121991e0989f 100644 --- a/docs/apis/routing-api.mdx +++ b/docs/apis/routing-api.mdx @@ -5,4 +5,4 @@ hide_table_of_contents: true import ApiSpec from '@views/ApiSpec' -<ApiSpec gitlabProjectId={"44"} path={"routing-api"} artifact={"routing-api.yaml"} version={"*"} includePrerelease={true} /> +<ApiSpec gitlabProjectId={"44"} path={"routing-api"} artifact={"routing-api.yaml"} version={"*"} includePrerelease={true} allowAuthentication={"false"} /> diff --git a/docs/changelog.md b/docs/changelog.md index bbefb5c6214c1b2cbd20df309b6ef86b2a3e23cf..0766d1156444d6dfb7b18f6a4fb7aacd7307e0aa 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,7 +2,11 @@ Das Format dieser Datei basiert auf [Keep a Changelog](https://keepachangelog.com/de). -Das hier veröffentlichte Changelog bezieht sich auf die [Testinstanz von FIT-Connect](https://docs.fitko.de/fit-connect/docs/getting-started/first-steps#test-infrastruktur). +Das hier veröffentlichte Changelog bezieht sich auf die [Testinstanz von FIT-Connect](https://docs.fitko.de/fit-connect/docs/getting-started/first-steps#testing). + +## 2022-04-27 +### Dokumentation +- [Beschreibung der Betriebsumgebungen](getting-started/first-steps.mdx#environments) ergänzt ## 2022-05-03 ### Dokumentation diff --git a/docs/getting-started/account.mdx b/docs/getting-started/account.mdx index 880815e6d3690cf03f57875bfdc1d6367c08bcfe..d0b95fdc0c9363936dd95370804a7875cf03e3ca 100644 --- a/docs/getting-started/account.mdx +++ b/docs/getting-started/account.mdx @@ -12,7 +12,7 @@ Zustellpunkte können dann im Rahmen von FIT-Connect über den Routingdienst gef ## Anmeldung am Self-Service-Portal Eine Nutzung des Self-Service-Portals setzt zwingend eine vorangehende Authentifizierung über einen der unterstützten Identity Provider voraus. -In der Testumgebung ist neben der Authentifizierung über das GitLab der FITKO auch ein Login mit einem bestehenden GitLab.com- oder GitHub-Account möglich. +In der Testumgebung ist neben der Authentifizierung über die GitLab-Instanz der FITKO auch ein Login mit einem bestehenden GitLab.com- oder GitHub-Account möglich. Falls Ihnen die Nutzung von GitLab.com- oder GitHub nicht möglich ist und Sie stattdessen eine Registrierung über die GitLab-Instanz der FITKO wünschen, wenden Sie sich bitte an `fit-connect <ät> fitko.de`. <img width="600" alt="Übersicht der aktuell unterstützten OAuth 2.0 Identiy Provider" src={useBaseUrl('/images/ssp/1-Login-Verfahren.png')} /> diff --git a/docs/getting-started/authentication.mdx b/docs/getting-started/authentication.mdx index d0dd855806cd494829276e43d0959f1a459c5537..716563207d00759ad0b01cc489a94cb399ad2c3b 100644 --- a/docs/getting-started/authentication.mdx +++ b/docs/getting-started/authentication.mdx @@ -12,7 +12,7 @@ Als Voraussetzungen hierfür ist es notwendig, Accounts für [API-Clients im Sel ## Abruf von Access Tokens beim OAuth-Dienst :::note Hinweis -Die URL der Submission API und die OAuth-Token-URL finden sich im Artikel [Erste Schritte](first-steps.mdx#test-infrastruktur). +Die URL der Submission API und die OAuth-Token-URL finden sich im Artikel [Erste Schritte](first-steps.mdx#testing). ::: Fast alle Anfragen an die FIT-Connect Submission API müssen authentifiziert werden. @@ -121,5 +121,5 @@ Authorization: Bearer ey... ``` :::note Hinweis -Die URL der Submission API findet sich im Artikel [Erste Schritte](first-steps.mdx#test-infrastruktur). +Die URL der Submission API findet sich im Artikel [Erste Schritte](first-steps.mdx#testing). ::: diff --git a/docs/getting-started/first-steps.mdx b/docs/getting-started/first-steps.mdx index 99a2f4b933be1c56b2efc5a07160840d76b40375..a294bdb42e5e71c44de6a38a5e34ae60bab8ff26 100644 --- a/docs/getting-started/first-steps.mdx +++ b/docs/getting-started/first-steps.mdx @@ -13,15 +13,28 @@ Kern von FIT-Connect ist der Zustelldienst, der sendende und empfangende Systeme Jedes empfangende System (Fachverfahren / virtuelle Poststelle) verfügt über einen oder mehrere Zustellpunkte (Destinations), an die Einreichungen (Anträge oder Berichte) gesendet werden. Zustellpunkte können von empfangenden Systemen [über das Self-Service-Portal](./account.mdx) konfiguriert und von sendenden Systemen adressiert werden. -## Test-Infrastruktur +:::tip Hinweis +Auf den folgenden Seiten stellen wir Code-Beispiele für die Anbindung von IT-Systemen an FIT-Connect zur Verfügung. Die Code-Beispiele veranschaulichen und vereinfachen die konkrete Implementierung der Nutzung der Programmierschnittstellen (APIs) von FIT-Connect. Diese Schnittstellen basieren auf gängigen offenen Standards und ermöglichen auch über die bereitgestellten Code-Beispiel hinaus eine Anbindung an FIT-Connect mit allen gängigen Programmiersprachen. +::: + +## Betriebsumgebungen der FIT-Connect-Infrastruktur {#environments} + +### Übersicht +Für FIT-Connect stehen derzeit mehrere Betriebsumgebungen bereit, die jeweils einen etwas anderen Zweck erfüllen. +Umgebungen, die von der FITKO zu Test- und Entwicklungszwecken bereitgestellt werden, stehen unter einer Subdomain unterhalb von `fitko.dev` zur Verfügung. +Produktive und produktivnahe Umgebungen stehen unter einer Subdomain unterhalb von `fitko.net` (bzw. unterhalb von `niedersachsen.de` für die bei IT.Niedersachsen betriebenen Infrastrukturen) zur Verfügung. + +| Umgebung | Zweck und Zielgruppe | +| ---------------------------------- | -------------------- | +| Testumgebung (`testing`) | **Zweck**: Die Testumgebung dient vorrangig Anbindungstests und der Erprobung neuer Features.<br/>**Zielgruppe**: Die Testumgebung steht allen Interessierten zur freien Nutzung zur Verfügung, darf nicht für produktive Zwecke genutzt werden und unterliegt keinerlei Verfügbarkeitsgarantien.<br/>**Besonderheiten**: In der Testumgebung können selbst-generierte Test-Zertifikate anstelle von Zertifikaten aus einer PKI-Infrastruktur genutzt werden. | +| Staging-/Referenzumgebung (`refz`) | **Zweck**: Die Stagingumgebung, auch Referenzumgebung genannt, ist identisch zur Produktivumgebung konfiguriert und dient dem Test von Updates der an FIT-Connect angebundenen Systeme, bevor diese an die Produktivumgebung angebunden werden. Zudem dient die Stagingumgebung der Gewährleistung einer reibungslosen Funktionalität von Updates der FIT-Connect-Infrastruktur selbst, bevor diese auf der Produktivumgebung ausgerollt werden.<br/>**Zielgruppe**: Die Stagingumgebung steht ausschließlich Systemen zur Verfügung, die ebenfalls zum Zugriff auf die Produktivumgebung berechtigt sind.<br/>**Besonderheiten**: Die Nutzung der Stagingumgebung setzt den Einsatz von Zertifikaten aus der Verwaltungs-PKI voraus. | +| Produktivumgebung (`prod`) | **Zweck**: Die Produktivumgebung dient der produktiven Nutzung der FIT-Connect-Infrastruktur.<br/>**Zielgruppe**: Die Nutzung der Produktivumgebung ist Betreiber:innen vorbehalten, die entsprechende Nutzungsbedingungen unterzeichnet und einen Auftragsdatenverarbeitungsvertrag mit der FITKO abgeschlossen haben.<br/>**Besonderheiten**: Die Nutzung der Produktivumgebung setzt den Einsatz von Zertifikaten aus der Verwaltungs-PKI voraus. | -Für Anbindungstests in der Testumgebung können Sie die folgenden Links & Infos verwenden: +### Testumgebung {#testing} + +Für Anbindungstests in der Testumgebung können Sie die folgenden Endpunkte & Infos verwenden: - Self-Service-Portal der Testumgebung: siehe [Accountregistrierung und Client-Verwaltung](./account.mdx) - [OAuth Token URL](./authentication.mdx): `https://auth-testing.fit-connect.fitko.dev/token` - [Submission API](../apis/submission-api.mdx): `https://submission-api-testing.fit-connect.fitko.dev` - [Routing API](../apis/routing-api.mdx): `https://routing-api-testing.fit-connect.fitko.dev` - -:::tip Hinweis -Auf den folgenden Seiten stellen wir Code-Beispiele für die Anbindung von IT-Systemen an FIT-Connect zur Verfügung. Die Code-Beispiele veranschaulichen und vereinfachen die konkrete Implementierung der Nutzung der Programmierschnittstellen (APIs) von FIT-Connect. Diese Schnittstellen basieren auf gängigen offenen Standards und ermöglichen auch über die bereitgestellten Code-Beispiel hinaus eine Anbindung an FIT-Connect mit allen gängigen Programmiersprachen. -::: diff --git a/docs/receiving/certificate.mdx b/docs/receiving/certificate.mdx index 7506af3650aceb20e732401af581e4e312cd7b94..fa25f173437a8c5781a05e40b93113eff458e3ac 100644 --- a/docs/receiving/certificate.mdx +++ b/docs/receiving/certificate.mdx @@ -41,7 +41,7 @@ Je nachdem ob Sie eine Smartcard oder ein Software-Zertifikat beantragen, stehen Wählen Sie hier die Sub-Domäne `DOI_OSCI` aus und bestätigen sie Ihre Auswahl mit **Weiter**. :::info Hinweis -Bei der Beantragung von Zertifikaten über die **Niedersächsische Registrierungsstelle** beim TLRZ wählen Sie stattdessen die Sub-Domäne `Kommunikation Thüringen`. +Bei der Beantragung von Zertifikaten über die **Thüringer Registrierungsstelle** beim TLRZ wählen Sie stattdessen die Sub-Domäne `Kommunikation Thüringen`. ::: <img width="600" alt="Auswahl der Domäne" src={useBaseUrl('/images/certificate_registration/certificate_registration_2.png')} /> diff --git a/docs/receiving/download-submission.mdx b/docs/receiving/download-submission.mdx index 0ee92b61dd8e0afb2773ce34785ab7d3188bf034..8c8821a45983dd25e518871e7d6063c357180110 100644 --- a/docs/receiving/download-submission.mdx +++ b/docs/receiving/download-submission.mdx @@ -8,7 +8,7 @@ import ApiLink from '@site/src/components/ApiLink' Der Abruf einer Einreichung ist über den Endpunkt <ApiLink api="submission-api" to="/v1/submissions/{submissionId}" /> möglich. Liegen zur Einreichung neben den verschlüsselten Metadaten (`encryptedMetadata`) und Fachdaten (`encryptedData`) zusätzlich weitere Anlagen vor, so sind die IDs der Anlagen im Feld `attachments` zu finden. Anlagen müssen separat heruntergeladen werden (siehe nächster Abschnitt). Einreichungen und deren Anlagen können dabei nur im Status Submitted oder Forwarded abgerufen werden. :::note Hinweis -Die URL der Submission API findet sich im Artikel [Erste Schritte](../getting-started/first-steps.mdx#test-infrastruktur). +Die URL der Submission API findet sich im Artikel [Erste Schritte](../getting-started/first-steps.mdx#testing). ::: ```bash title="Abfrage der Einreichung inkl. Fachdaten und Metadaten" diff --git a/docs/receiving/process-and-acknowledge.mdx b/docs/receiving/process-and-acknowledge.mdx index f6c7158ac148a88c31ebae00d01f71bec7992d76..7bb921576fb40f71cf0c8001a2a6a6672ab25e85 100644 --- a/docs/receiving/process-and-acknowledge.mdx +++ b/docs/receiving/process-and-acknowledge.mdx @@ -49,6 +49,7 @@ Sofern Sie den Fehler "'iat' must not be after ..." (`https://schema.fitko.de/fi ```java title=Annahmen JWK signaturePrivateKey; // privater (geheimer) Schlüssel des für die Signaturerstellung/-prüfung genutzten Schlüsselpaares des empfangenden Systems JWK signaturePublicKey; // öffentlicher Schlüssel des für die Signaturerstellung/-prüfung genutzten Schlüsselpaares des empfangenden Systems + String issuer = "943da3e2-c178-4b63-aa2d-2fe964b0e09d"; // our own destinationId (MUST match destinationId of this submission) String subject = "submission:f65feab2-4883-4dff-85fb-169448545d9f"; // submissionId String event ="https://schema.fitko.de/fit-connect/events/accept-submission"; String transactionId = "case:f73d30c6-8894-4444-8687-00ae756fea90"; // caseId @@ -61,7 +62,7 @@ Sofern Sie den Fehler "'iat' must not be after ..." (`https://schema.fitko.de/fi try { JWSSigner signer = new RSASSASigner(signaturePrivateKey.toRSAKey()); JWTClaimsSet claimsSet = new JWTClaimsSet.Builder() - .issuer("https://my-custom-identifiable-service.domain") + .issuer(issuer) .issueTime(new Date()) .jwtID(UUID.randomUUID().toString()) .subject(subject) diff --git a/docs/responsibilities/get-destination.mdx b/docs/responsibilities/get-destination.mdx index 690771cbc56f6e1025e648e4fcdc2eab2f2df767..d941e8e0646cb49b4c489e2b5f972d1e24900abb 100644 --- a/docs/responsibilities/get-destination.mdx +++ b/docs/responsibilities/get-destination.mdx @@ -15,7 +15,7 @@ Die über das Self-Service-Portal erstellten Zustellpunkte sind in der Testumgeb Dieses Feature ist als zukünftige Erweiterung geplant. Sofern eine Destination-ID bereits bekannt ist, können die in einem Zustellpunkt hinterlegten technischen Parameter übergangsweise auch über den Endpunkt <ApiLink api="submission-api" to="/v1/destinations/{destinationId}" /> der Submission API des zuständigen Zustelldienstes [abgerufen werden (siehe unten)](#submissionapi). -Die [Konfiguration des Antragsroutings](routing.mdx) in der produktiven Umgebung ist bereits jetzt möglich. Entsprechend konfigurierte Zustellpunkte sind in der Produktivumgebung bereits über Routing API abrufbar. +Die [Konfiguration des Antragsroutings](routing.mdx) in der produktiven Umgebung ist bereits jetzt möglich. Entsprechend konfigurierte Zustellpunkte sind in der Produktivumgebung bereits über Routing API abrufbar. ::: Die Ermittlung der `destinationId` und die Ermittlung der technischen Parameter über die Routing-API erfolgt über einen GET-Request auf den Endpunkt <ApiLink api="routing-api" to="/routes" /> des FIT-Connect Routingdienstes. @@ -370,7 +370,7 @@ Dabei ist für das JSON des Payload zu beachten, dass #### Prüfung der vollständigen Signatur -Um die Signatur zu überprüfen, ist es notwendig auf die verwendeten Schlüssel (im Format JSON Web Key, kurz JWK) zugreifen zu können. +Um die Signatur zu überprüfen, ist es notwendig auf die verwendeten Schlüssel (im Format JSON Web Key, kurz JWK) zugreifen zu können. Der Zustelldienst stellt ein JSON Web Key Set (JWKS) öffentlich zugänglich über den Endpunkt <ApiLink api="submission-api" to="/.well-known/jwks.json" /> bereit. Da der Zustelldienst mit mehreren Instanzen betrieben werden kann, kann es auch mehrere Endpunkte zum JWKS geben. Diese Endpunkte können dynamisch aus dem Payload (`Zustellpunkt`) erzeugt werden. @@ -399,7 +399,7 @@ private final static String DVDV_SUBMISSIONURL_KEY = "submissionUrl"; private final static String KEYSTORE_URL_ENDING = ".well-known/jwks.json"; private final static String[] VALID_KEYSTORE_URLS = new String[]{ "https://submission-api-testing.fit-connect.fitko.dev/v1/.well-known/jwks.json"}; -protected void validateBySignedJWT(SignedJWT signedJWT) throws BadJOSEException, JOSEException, IOException, ParseException +protected void validateBySignedJWT(SignedJWT signedJWT) throws BadJOSEException, JOSEException, IOException, ParseException { //1. Prüfung auf erlaubten Algorithmus PS512 if ( !JWSAlgorithm.PS512.equals(signedJWT.getHeader().getAlgorithm()) ) @@ -414,7 +414,7 @@ protected void validateBySignedJWT(SignedJWT signedJWT) throws BadJOSEException, Optional<URL> keyStoreUrl = getKeyStoreUrl(getBaseKeyStoreUrl(signedJWT)); if ( keyStoreUrl.isEmpty() ) throw new RuntimeException("No JWKSetUrl found in Payload!"); - + validateKeyStoreUrl(keyStoreUrl.get()); //KeyStore laden @@ -440,14 +440,14 @@ protected void validateBySignedJWT(SignedJWT signedJWT) throws BadJOSEException, } ``` ```java - protected String getBaseKeyStoreUrl(SignedJWT signedJWT) + protected String getBaseKeyStoreUrl(SignedJWT signedJWT) { Map<String, Object> payload = signedJWT.getPayload().toJSONObject(); return String.valueOf(payload.get(DVDV_SUBMISSIONURL_KEY)); } ``` ```java - protected Optional<URL> getKeyStoreUrl(String baseKeyStoreUrl) + protected Optional<URL> getKeyStoreUrl(String baseKeyStoreUrl) { if (baseKeyStoreUrl==null) throw new RuntimeException("KeyStoreUrl not set!"); @@ -455,18 +455,18 @@ protected void validateBySignedJWT(SignedJWT signedJWT) throws BadJOSEException, baseKeyStoreUrl+="/"; baseKeyStoreUrl+= KEYSTORE_URL_ENDING; - try + try { return Optional.of(new URL(baseKeyStoreUrl)); - } - catch (MalformedURLException e) + } + catch (MalformedURLException e) { - throw new RuntimeException("KeyStoreUrl not valid! MalformedURLException for url " + baseKeyStoreUrl); + throw new RuntimeException("KeyStoreUrl not valid! MalformedURLException for url " + baseKeyStoreUrl); } } ``` ```java - public void validateKeyStoreUrl(URL url) + public void validateKeyStoreUrl(URL url) { if ( !VALID_KEYSTORE_URLS.contains(String.valueOf(url)) ) throw new RuntimeException("KeyStoreUrl not valid!"); @@ -561,7 +561,7 @@ Beispiel für die Response Zum Abruf der Zustellpunkt-Informationen stellt die Submission API einen Endpunkt bereit, der über Angabe des Parameters `destinationId` die technischen Parameter der Einreichung für den jeweiligen Zustellpunkt ausgibt. Diese kann genutzt werden, wenn die `destinationId` bereits bekannt ist. Die angebotenen Informationen über eine Destination unterscheiden sich fachlich nicht von den Information aus der Routing API. Bei der Submission API muss lediglich der Verschlüsselungsschlüssel über einen zusätzlichen Endpunkt abgerufen werden, anstatt diesen zusammen mit den anderen Informationen in einer Response zu erhalten (siehe Artikel [Verschlüsseln](../sending/encrypt.mdx)). :::note Hinweis -Die URL der Submission API findet sich im Artikel [Erste Schritte](../getting-started/first-steps.mdx#test-infrastruktur). +Die URL der Submission API findet sich im Artikel [Erste Schritte](../getting-started/first-steps.mdx#testing). ::: <Tabs diff --git a/docs/sending/attachments.mdx b/docs/sending/attachments.mdx index 1bb439378cd6900ff1bb1125a023eef34ddb486e..04605e986d4ab880ae87aba409ae4d73160a1cf8 100644 --- a/docs/sending/attachments.mdx +++ b/docs/sending/attachments.mdx @@ -32,37 +32,38 @@ Unvollständige Einreichungen, die durch das sendende System (Onlinedienst) nich $ export SUBMISSION_ID=63f0c991-0635-4e18-8a4b-fb0c01de9f5c $ export ATTACHMENT_ID=90ae8309-2102-4e81-a325-ceda480d0e9d $ export ENC_FILE_CONTENT=6r4H2H_WIzCv8Pd-uetmcbK...iVBKF3ylHRUahmZ - $ curl \ - -H "Authorization: Bearer $JWT_TOKEN" \ - -H "Content-Type: application/jose" \ - --data "$ENC_FILE_CONTENT" \ - -X PUT "$SUBMISSION_API/v1/submissions/$SUBMISSION_ID/attachments/$ATTACHMENT_ID" + $ curl -L -X PUT "$SUBMISSION_API/v1/submissions/$SUBMISSION_ID/attachments/$ATTACHMENT_ID" \ +-H "Authorization: Bearer $JWT_TOKEN" \ +-H "Content-Type: application/jose" \ +--data-raw "$ENC_FILE_CONTENT" ``` </TabItem> <TabItem value="js"> ```js - import axios from 'axios' - - const SUBMISSION_API = "https://submission-api-testing.fit-connect.fitko.dev" - const token = "eyJhbGciOiJIUzI1NiJ9.eyJJc3N1Z...NL-MKFrDGvn9TvkA" - const submissionId = "63f0c991-0635-4e18-8a4b-fb0c01de9f5c" - const attachmentId = "90ae8309-2102-4e81-a325-ceda480d0e9d" - const data = "6r4H2H_WIzCv8Pd-uetmcbK...iVBKF3ylHRUahmZ" - - axios.put( - `/v1/submissions/${submissionId}/attachments/${attachmentId}`, - data - { - SUBMISSION_API, - timeout: 2000, - headers: { - 'Content-Type': 'application/jose', - 'Authorization': `Bearer ${token}`, - } - } - ) +const axios = require('axios'); + +const data = 'eyJhbGciOiJSU0Et...MRPcWqnLJDtp6ZA0Q'; + +const SUBMISSION_ID = "a562cf6a-3860-4a7e-96e3-1d01f8a5252d" +const ATTACHMENT_ID = "12399641-2067-4e8b-b049-91b2a6c90544" +const TOKEN = "eyJraWQiOiJHb2JOIiwi...Xh1TWcb2uhLVVnDBQ" +const SUBMISSION_API = "https://submission-api-testing.fit-connect.fitko.dev" + +const config = { + method: 'put', + url: SUBMISSION_API + '/v1/submissions/' + SUBMISSION_ID + '/attachments/' + ATTACHMENT_ID, + headers: { + 'Authorization': 'Bearer ' + TOKEN, + 'Content-Type': 'application/jose' + }, + data : data +}; + +axios(config) +.then(response => console.log(JSON.stringify(response.data))) +.catch(error => console.log(error)); ``` diff --git a/docs/sending/start-submission.mdx b/docs/sending/start-submission.mdx index ecfffd447164b74f264350a9f030468763944b63..1269ce3ee85440c212242804b44f2332f65e9ed8 100644 --- a/docs/sending/start-submission.mdx +++ b/docs/sending/start-submission.mdx @@ -17,7 +17,7 @@ Die für das Anlegen von Einreichungen notwendige Struktur von Einreichungen und ::: :::note Hinweis -Die URL der Submission API findet sich im Artikel [Erste Schritte](../getting-started/first-steps.mdx#test-infrastruktur). +Die URL der Submission API findet sich im Artikel [Erste Schritte](../getting-started/first-steps.mdx#testing). ::: @@ -35,17 +35,20 @@ Die URL der Submission API findet sich im Artikel [Erste Schritte](../getting-st ```bash $ export SUBMISSION_API=https://submission-api-testing.fit-connect.fitko.dev $ export JWT_TOKEN=eyJhbGciOiJIUzI1NiJ9.eyJJc3N1Z...NL-MKFrDGvn9TvkA -$ export DESTINATION_ID=7a2668ad-3081-407c-9358-7ce4b6144b02 -$ curl \ - -H "Authorization: Bearer $JWT_TOKEN" \ - -H "Content-Type: application/json" \ - --data "{ \"destinationId\": \"$DESTINATION_ID\", \"announcedAttachments\": [\"1da99641-2067-4e8b-b049-91b2a6c90544\", \"538a1365-092e-4d80-93b9-90eb8c1f5982\"], \"serviceType\": { \"name\": \"Bauantrag\", \"identifier\": \"urn:de:fim:leika:leistung:99010003001006\" } }" \ - -X POST "$SUBMISSION_API/v1/submissions" - -> { - "destinationId": "7a2668ad-3081-407c-9358-7ce4b6144b02", - "submissionId": "9d618546-0ff7-4e93-9f15-714e5dd1bf12" -} +$ export DESTINATION_ID=f7e70568-1fbc-476e-b1fa-a691ef205c7d +$ curl -L -X POST "$SUBMISSION_API/v1/submissions" \ +-H "Authorization: Bearer $JWT_TOKEN" \ +-H "Content-Type: application/json" \ +--data-raw "{ + \"destinationId\": \"$DESTINATION_ID\", + \"announcedAttachments\": [ + \"12399641-2067-4e8b-b049-91b2a6c90544\" + ], + \"serviceType\": { + \"name\": \"Antrag Name\", + \"identifier\": \"urn:de:fim:leika:leistung:99102013104000\" + } +}" ``` </TabItem> @@ -59,33 +62,37 @@ $ curl \ <TabItem value="js"> ```js -import axios from 'axios' +const axios = require('axios'); +const DESTINATION_ID = "f7e70568-1fbc-476e-b1fa-a691ef205c7d" +const TOKEN = "eyJraWQfaWQiOiJiMj...ZPWT1NtPaYZ8YWHXh1TWcb2uhLVVnDBQ" const SUBMISSION_API = "https://submission-api-testing.fit-connect.fitko.dev" -const data = { - "destinationId": "879ee109-a690-4db8-ab32-424284184d7d", + +const data = JSON.stringify({ + "destinationId": DESTINATION_ID, "announcedAttachments": [ - "123ee109-a690-4db8-ab32-424284184d7d", - "456ee109-a690-4db8-ab32-424284184d7d" + "12399641-2067-4e8b-b049-91b2a6c90544" ], "serviceType": { - "name": "Bauantrag", - "identifier": "urn:de:fim:leika:leistung:99010003001006" + "name": "Antrag Name", + "identifier": "urn:de:fim:leika:leistung:99102013104000" } -} -const token = 'eyJhbGciOiJIUzI1NiJ9.eyJyYW5kb20iOiJyYW5kb20ifQ.lXckRWoWCUBGM4ACZ6wIhYqplJeSw0HMEfE91jD1JPU' - -axios.post( - '/v1/submissions', - data - { - SUBMISSION_API, - timeout: 2000, - headers: { - 'Authorization': `Bearer ${token}` - } - } -) +}); + +const config = { + method: 'post', + url: SUBMISSION_API + '/v1/submissions', + headers: { + 'Authorization': 'Bearer ' + TOKEN, + 'Content-Type': 'application/json' + }, + data : data +}; + +axios(config) +.then(response => console.log(JSON.stringify(response.data))) +.catch(error => console.log(error)); + ``` </TabItem> diff --git a/docs/sending/submit.mdx b/docs/sending/submit.mdx index ce15b347e5c0c4d9bdcab5a1d5050bbfa6b154bf..7eb6d22c3f45df7e81ad65db4bf13bbb28f82de9 100644 --- a/docs/sending/submit.mdx +++ b/docs/sending/submit.mdx @@ -34,11 +34,11 @@ Ein Beispiel für die Nutzung des Endpunkt ist im Folgenden Ausschnitt dargestel $ export SUBMISSION_API=https://submission-api-testing.fit-connect.fitko.dev $ export JWT_TOKEN=eyJhbGciOiJIUzI1NiJ9.eyJJc3N1Z...NL-MKFrDGvn9TvkA $ export SUBMISSION_ID=63f0c991-0635-4e18-8a4b-fb0c01de9f5c -$ curl \ - -H "Authorization: Bearer $JWT_TOKEN" \ - -H "Content-Type: application/json" \ - --data '{ "encryptedMetadata": "6r4H2H_WIzCv8Pd-uetmcbK...iVBKF3ylHRUahmZ" }' \ - -X PUT "$SUBMISSION_API/v1/submissions/$SUBMISSION_ID" +$ export ENC_META_DATA=6r4H2H_WIzCv8Pd-uetmcbK...iVBKF3ylHRUahmZ +$ curl -L -X PUT "$SUBMISSION_API/v1/submissions/$SUBMISSION_ID" \ + -H "Authorization: Bearer $JWT_TOKEN" \ + -H "Content-Type: application/json" \ + --data-raw "{ \"encryptedMetadata\": \"$ENC_META_DATA\" }" ``` </TabItem> @@ -46,27 +46,31 @@ $ curl \ <TabItem value="js"> ```js -import axios from 'axios' +const axios = require('axios'); +const data = JSON.stringify({ + "encryptedMetadata": "eyJhbGciOi...H82t9kVSf3Q" +}); + +const SUBMISSION_ID = "a562cf6a-3860-4a7e-96e3-1d01f8a5252d" +const ATTACHMENT_ID = "12399641-2067-4e8b-b049-91b2a6c90544" +const TOKEN = "eyJraWQiOiJHb2JOIiwi...NtPaYZ8YWHXh1TWcb2uhLVVnDBQ" const SUBMISSION_API = "https://submission-api-testing.fit-connect.fitko.dev" -const data = { - encryptedMetadata: 'mt2w8Pd-uetmcbKq0MqCw7zyBYj5HHDV1I7F0...', - encryptedData: 'eyJlbmMiOiJB...' -} -const token = 'eyJhbGciOiJIUzI1NiJ9.eyJyYW5kb20iOiJyYW5kb20ifQ.lXckRWoWCUBG...w0HMEfE91jD1JPU' - -axios.put( - '/v1/submissions/63f0c991-0635-4e18-8a4b-fb0c01de9f5c', - data - { - SUBMISSION_API, - timeout: 2000, - headers: { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${token}`, - } - } -) + +const config = { + method: 'put', + url: SUBMISSION_API + '/v1/submissions/' + SUBMISSION_ID, + headers: { + 'Authorization': 'Bearer ' + TOKEN, + 'Content-Type': 'application/json' + }, + data : data +}; + +axios(config) +.then(response => console.log(JSON.stringify(response.data))) +.catch(error => console.log(error)); + ``` </TabItem> diff --git a/src/views/ApiSpec.js b/src/views/ApiSpec.js index 56b28cb29138d893e3f93f55536f16e437039235..35759dc71736a930058bd0d66860de4026376b47 100644 --- a/src/views/ApiSpec.js +++ b/src/views/ApiSpec.js @@ -50,6 +50,7 @@ export default function ApiSpec(props) { show-header="false" show-components="false" allow-spec-file-load="false" + allow-authentication={props.allowAuthentication || "true"} info-description-headings-in-navbar="false" allow-try="false" primary-color="#11171a" diff --git a/static/images/roadmap/fitconnect_roadmap.png b/static/images/roadmap/fitconnect_roadmap.png index 4cbccb388da807dc63e37266756181dcc7a5c7d9..42e74b6f48f352d30abcb92a49316a1ee5e42efd 100644 Binary files a/static/images/roadmap/fitconnect_roadmap.png and b/static/images/roadmap/fitconnect_roadmap.png differ