Skip to content

Commit 3af9693

Browse files
authored
Merge pull request #121 from gematik/feature/service-discovery-alt
Alternative Fachdienstlokalisierung über zentralen gematik Dienst, Anpassung vsdm.yaml und neue servicediscovery.yaml, samt Schema-Datei zum catalog.json Dokument.
2 parents 104de1b + b7a282e commit 3af9693

3 files changed

Lines changed: 514 additions & 277 deletions

File tree

src/openapi/servicediscovery.yaml

Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
openapi: 3.1.0
2+
info:
3+
title: TI Service Discovery
4+
description: |
5+
Statische JSON-Ressource (`catalog.json`) zur Lokalisierung der krankenkassenspezifischen
6+
FQDN (und damit des Diensteanbieters) für den ZETA (TI 2.0) Request-Flow.
7+
8+
Dieses API-Dokument spezifiziert den Vertrag zwischen einem Primärsystem und dem
9+
Endpunkt des TI-Service-Discovery-Dienstes.
10+
11+
Der Abruf der `catalog.json` ist Voraussetzung für die in der VSDM-2-OpenAPI-Definition
12+
beschriebenen Ressourcen-Anfragen sowie Auth-/Token-Flows.
13+
contact:
14+
name: gematik GmbH
15+
url: https://www.gematik.de
16+
license:
17+
name: Apache 2.0
18+
url: https://www.apache.org/licenses/LICENSE-2.0
19+
version: 1.0.0
20+
externalDocs:
21+
description: JSON Schema für catalog.json
22+
url: https://github.com/gematik/spec-VSDM2/tree/main/src/schemas/catalog.schema.json
23+
servers:
24+
- url: https://service-discovery.prod.ti-platform.de
25+
description: Produktivinstanz (PU)
26+
- url: https://service-discovery.ref.ti-platform.de
27+
description: Referenzinstanz (RU)
28+
- url: https://service-discovery.test.ti-platform.de
29+
description: Testinstanz (TU)
30+
- url: https://service-discovery.dev.ti-platform.de
31+
description: Entwicklungsinstanz (DEV)
32+
tags:
33+
- name: Service Discovery
34+
description: Endpunkt zur Lokalisierung von TI-Fachdiensten.
35+
paths:
36+
/catalog.json:
37+
get:
38+
tags:
39+
- Service Discovery
40+
summary: TI Service Catalog abrufen
41+
description: |
42+
Liefert ein Mapping von IK-Nummern auf krankenkassenspezifische FQDNs
43+
sowie die zugehörigen Service-Instanzen der TI.
44+
45+
Das Dokument ist eine statische JSON-Ressource und kann über `ETag`
46+
und `Cache-Control` Header effizient gecacht werden.
47+
operationId: getServiceCatalog
48+
responses:
49+
"200":
50+
description: OK
51+
headers:
52+
ETag:
53+
description: Revisionsnummer als Entity-Tag für Caching.
54+
schema:
55+
type: string
56+
example: '"rev-47"'
57+
Cache-Control:
58+
description: Caching-Direktive.
59+
schema:
60+
type: string
61+
example: max-age=3600
62+
content:
63+
application/json:
64+
schema:
65+
$ref: "#/components/schemas/Catalog"
66+
example:
67+
format_version: "1.0.0"
68+
revision: 47
69+
env: prod
70+
service_instances:
71+
vsdm-1:
72+
type: vsdm
73+
url: https://prod.vsdm.ti-dienste.tk.de
74+
erp:
75+
type: erp
76+
url: https://erp.ti-dienste.de
77+
idp:
78+
type: idp
79+
url: https://idp.ti-dienste.de/.well-known/openid-configuration
80+
vzd:
81+
type: vzd
82+
url: https://fhir-directory.ti-dienste.de/fhir
83+
routing:
84+
vsdm:
85+
"101575519": vsdm-1
86+
"500":
87+
description: Internal Server Error
88+
content:
89+
application/problem+json:
90+
schema:
91+
$ref: "#/components/schemas/Problem"
92+
example:
93+
type: https://service-discovery.ti-platform.de/errors/internal
94+
title: Internal Server Error
95+
status: 500
96+
detail: Failed to retrieve TI service discovery document.
97+
instance: /catalog.json
98+
components:
99+
schemas:
100+
Catalog:
101+
type: object
102+
description: TI Service Catalog — Verzeichnis aller Service-Instanzen und IK-basiertes Routing.
103+
required:
104+
- format_version
105+
- revision
106+
- env
107+
- service_instances
108+
additionalProperties: false
109+
properties:
110+
format_version:
111+
type: string
112+
pattern: '^[0-9]+\.[0-9]+\.[0-9]+$'
113+
description: Semantische Versionsnummer des Formats.
114+
examples:
115+
- "1.0.0"
116+
revision:
117+
type: integer
118+
minimum: 1
119+
description: Fortlaufend steigende Nummer. Wird bei jeder Änderung erhöht.
120+
examples:
121+
- 47
122+
env:
123+
type: string
124+
enum:
125+
- dev
126+
- test
127+
- ref
128+
- prod
129+
description: Zielumgebung. Pro Stage/Umgebung existiert eine eigene Datei.
130+
service_instances:
131+
type: object
132+
description: Map von Service-Instanz-ID auf Service-Definition.
133+
minProperties: 1
134+
additionalProperties:
135+
$ref: "#/components/schemas/ServiceInstance"
136+
routing:
137+
type: object
138+
description: |
139+
Map von Diensttyp auf Routing-Tabelle.
140+
Jede Routing-Tabelle bildet IK-Nummern auf Service-Instanz-IDs ab.
141+
Nur nötig wenn mehrere Instanzen eines Diensttyps existieren.
142+
additionalProperties:
143+
$ref: "#/components/schemas/RoutingTable"
144+
ServiceInstance:
145+
type: object
146+
description: Einzelne Service-Instanz.
147+
required:
148+
- type
149+
- url
150+
additionalProperties: false
151+
properties:
152+
type:
153+
type: string
154+
pattern: '^[a-z][a-z0-9-]*$'
155+
description: Diensttyp-Bezeichner.
156+
examples:
157+
- vsdm
158+
- epa
159+
- erp
160+
- idp
161+
- vzd
162+
url:
163+
type: string
164+
format: uri
165+
description: URL der Service-Instanz.
166+
examples:
167+
- https://dev.vsdm.ti-dienste.tk.de
168+
RoutingTable:
169+
type: object
170+
description: |
171+
Routing-Tabelle für einen Diensttyp.
172+
Schlüssel ist eine IK-Nummer, Wert ist eine Service-Instanz-ID
173+
die als Schlüssel in `service_instances` existieren muss.
174+
minProperties: 1
175+
additionalProperties:
176+
type: string
177+
examples:
178+
- "109519005": vsdm-1
179+
"108310400": vsdm-1
180+
"101575519": vsdm-2
181+
Problem:
182+
type: object
183+
description: Fehlerobjekt gemäß RFC 9457 (Problem Details for HTTP APIs).
184+
properties:
185+
type:
186+
type: string
187+
format: uri
188+
description: URI-Referenz die den Problemtyp identifiziert.
189+
title:
190+
type: string
191+
description: Kurze, menschenlesbare Zusammenfassung des Problemtyps.
192+
status:
193+
type: integer
194+
description: HTTP-Statuscode für dieses Auftreten des Problems.
195+
detail:
196+
type: string
197+
description: Menschenlesbare Erklärung spezifisch für dieses Auftreten.
198+
instance:
199+
type: string
200+
description: Referenz die das spezifische Auftreten identifiziert.

0 commit comments

Comments
 (0)