openapi: 3.0.0
info:
  title: FIT-Connect Routingdienst Api
  description: Diese Api dient dem Ermitteln der zuständigen Organisationseinheiten und deren Destination-ID
  version: 1.0.0
  contact:
    name: FITKO
  termsOfService: 'https://www.fitko.de/'
servers:
  - url: 'https://api.fit-connect-routing.example.org/v1/'
    description: Example server
tags:
  - name: Routing
    description: Methoden zum ermitteln der Routinginformationen.
  - name: Area
    description: Methoden zum ermitteln von Gebieten.
paths:
  /routes:
    get:
      operationId: route
      tags:
        - Routing
      description: 'Ermittelt die notwendigen Routinginformationen anhand von Leikaschlüssel und einem Schlüssel eines Gebietobjektes (Bundesland, Landkreis, Kreisfreie Stadt, etc.). Es muss genau ein Parameter für das Gebiet gesetzt sein. Die Ermittlung der Routinginfomationen erfolgt nur für eindeutige Leika-Schlüssel sowie einen eindeutigen Gebietschlüssel.'
      parameters:
        - $ref: '#/components/parameters/leikaKey'
        - $ref: '#/components/parameters/ags'
        - $ref: '#/components/parameters/ars'
        - $ref: '#/components/parameters/areaId'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouteResult'
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '400':
          description: Bad Request. Das Format des Request ist nicht korrekt. Die Vorgaben der Eingangsparameter sind nicht erfüllt.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '401':
          description: Unauthorized. Der Request ist nicht authorisiert.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '403':
          description: Forbidden. Der Request auf die Resource ist nicht erlaubt.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '500':
          description: Internal Server Error. Es ist ein interner Fehler bei der Abarbeitung des Request aufgetreten.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
  /areas:
    get:
      operationId: area
      tags:
        - Area
      description: Ermittelt passende Gebiete anhand des übergebenenen Namen oder Postleitzahl. Es muss mindestens ein Suchparameter angegeben werden.
      parameters:
        - $ref: '#/components/parameters/areaSearchexpression'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: successful operation
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/AreaResult'
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '400':
          description: Bad Request. Das Format des Request ist nicht korrekt. Die Vorgaben der Eingangsparameter sind nicht erfüllt.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '401':
          description: Unauthorized. Der Request ist nicht authorisiert.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '403':
          description: Forbidden. Der Request auf die Resource ist nicht erlaubt.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '500':
          description: Internal Server Error. Es ist ein interner Fehler bei der Abarbeitung des Request aufgetreten.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
components:
  schemas:
    Error:
      title: Fehler
      type: object
      description: Der Inhalt von HTTP Responses bei Fehlern nach RFC7807.
      required:
        - type
        - title
        - status
      properties:
        type:
          type: string
          description: 'Eine URI-Referenz, die den Problemtyp identifiziert.'
        title:
          type: string
          description: 'Eine kurze, von Menschen lesbare Zusammenfassung des Problems.'
        status:
          type: integer
          description: Der HTTP-Statuscode der vom Ursprungsserver für dieses Auftreten des Problems generiert wurde.
          minimum: 100
          maximum: 599
        detail:
          type: string
          description: Eine von Menschen lesbare Erklärung speziell für dieses Auftreten des Problems.
        instance:
          type: string
          format: uri
          description: |
            Eine URI-Referenz, die das spezifische Auftreten des Problems identifiziert. Sie kann, muss aber nicht, weitere Informationen liefern, wenn sie dereferenziert wird.
    RouteResult:
      title: Routinginformationen
      type: object
      properties:
        count:
          type: integer
          format: int32
          description: Anzahl zurückgegebener Treffer
          maximum: 500
          minimum: 0
        offset:
          type: integer
          format: int32
          description: Startpunkt in der Gesamtanzahl der Suchtreffer
          minimum: 0
        totalCount:
          type: integer
          format: int32
          description: Gesamtanzahl der Suchtreffer
          minimum: 0
        routes:
          type: array
          items:
            $ref: '#/components/schemas/Route'
          description: Gefundene Routingergebnisse
          maxItems: 500
          minItems: 0
      required:
        - count
        - offset
        - totalCount
        - routes
    Route:
      title: Routinginformation
      type: object
      description: Routingergebnis
      properties:
        destinationId:
          type: string
          format: uuid
          minLength: 32
          maxLength: 36
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        destinationSignature:
          description: 'Die in XZuFI hinterlegte Signatur der FIT-Connect-Adressierungsinformationen (JWS gemäß [RFC 7515](https://datatracker.ietf.org/doc/html/rfc7515))'
          type: string
          pattern: '^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+$'
          example: eyJraWQiOiJmT0hzdExPNGJlQnEwcHgtMDFwTEoyUnhQbUJEakNtbEtIQk84ZzVXLVNBIiwidHlwIjoiand0IiwiYWxnIjoiUFM1MTIifQ.eyJzdWJtaXNzaW9uSG9zdCI6InN1Ym1pc3Npb24tYXBpLWRldi5maXQtY29ubmVjdC5maXRrby5kZXYiLCJpc3MiOiJodHRwczpcL1wvcG9ydGFsLmF1dGgtZGV2LmZpdC1jb25uZWN0LmZpdGtvLmRldiIsInNlcnZpY2VzIjpbeyJnZWJpZXRJRHMiOlsidXJuOmRlOmJ1bmQ6ZGVzdGF0aXM6YmV2b2Vsa2VydW5nc3N0YXRpc3RpazpzY2hsdWVzc2VsOnJzOjEyMDY0NTQxMCJdLCJsZWlzdHVuZ0lEcyI6WyJ1cm46ZGU6ZmltOmxlaWthOmxlaXN0dW5nOjk5MTM0MDA1MDE3MDAwIl19XSwiZGVzdGluYXRpb25JZCI6ImFjNzE1ZjM0LTMzM2UtNDFmNC05YmI1LTE4NmIzMDllYTIzMyIsImlhdCI6MTYzNzg2MzQ4MSwianRpIjoiMmQxNDI2ZjItZDY3My00NmRlLTg2OGUtZDk2ODQ0ZDI0ZmUxIn0.gSfjbRck_BmhkVx-P-E9UexlQudEZV8auYTHXrCSM4ja3gDg2VGlpCjH3-WBvgdLp7zv0J0z9en6PecF73QV4ltik0c7j4tbpAPz9tmTu0pedjVrbkbWj4b4H-EyYt1IJeDyrZJglZ1EB4b_4mk5HNZHgZnbMx0QLhRci8-wJf76hJgoWHkebpXNjdHHqndFbpGa7HCiul1XeJVv8Ny6Fgb7Nu-c5-YmVl5kZSCmxURAZlZubk3jBaIfMOEXIth3B4FtOvEiEXkWTtH0r99eZkYdK-ykLuefenS_Ib56ZpZ67Sw3T-LuV5pIzhq--REL6PaCOvRkU88SS1iW8LmiwEIxCIwFNEpnohNYjy4ZG8CnCfD4SztRA9nQYohdh2Cc_3MafUX7wjz1vqlonmZ7m4QYfZCqtl3IkcJLeayBU5OHTlcvHAQRIfgvP9SJApJr_Y2p3p4fHePOVStxLMlCOCYcmf0EBibvUsuwbEbmeppP72OFOkCwA9I82Z0SnxLdaHLXup2f_z0OnJtxrJAZnhREyYSvL2HOJusNKfpNy360C7Kf2g-BzAEvD4K5LzqWhKrWgztn4SDmgWL_Z3Ez1e2ZqTzfmJXxE_WGit2Lr0rBd9vTPGYKidBLZ8B-2JJZCPbrqlTxPdWImPrgcZP0qpNsJdls4OJo7xz5ozwrR4Y
        destinationParameters:
          $ref: '#/components/schemas/Destination'
          description: Technische Parameter wie z.B. Verschlüsselungszertifikate für die Antragsübermittlung
        destinationParametersSignature:
          description: Signatur der Technischen Parameter
          type: string
          pattern: '^[a-zA-Z0-9\-_]+?\.\.([a-zA-Z0-9\-_]+)?$'
          example: eyJ0eXAiOiJKT1NFIiwiYWxnIjoiUFM1MTIiLCJraWQiOiJlOWJjMDk3YS1jZTUxLTQwMzYtOTU2Mi1kMmFkZTg4MmRiMGQiLCJjdHkiOiJhcHBsaWNhdGlvbi9qb3NlIn0..g9xgjWf-_3JjMAFwPgBB4iXFrkrsRS-Ois3pxWWcFzdZuu_I8jH9Bd4FAQpf6nJwPtytJgoWYkm7gTCMwKiQH7JknXXrdYcnHRrlU2aT9thjaK5uYKYvuDfvklvQvKTYtfqowkMtk3pl91TfB1Pyxbprx6u5qut_pI-z2E7SC8gJ6V8u1rT1wDHOp-xrvMHUQiH7Ugmyb7Tg_Dc55AL0FrZ2wmurdPK46iAZBfIpzNJgUbqrlKvKQkwbs11Bc2qRzrFIG8yMyuN-qhGxibokMoq1U3FjlxtNgwWQJJOYlMiCbMibkINsmZ5mGZDS_Dra89TVMz0_rZagj-mxJ5-DlIE7E1LsvUKXYBHhPFoCJTGH1Lla7AEWtZ59HNSalMjvgcGWTgp-xTbqo8Ej6PwUM9j7_lNH1kT0iSvuCTYktVJEmovmpT0gB9c0AaGbQfiZFk8UUiBSAVFoD2B-0EP8CkEDAxsL0xlDdSAeK4Zrvg2nnck8NjdDQa68KfW4Fp32cfdkWYhGJ13xNG889P0aofCv7Joj4zxVEsPGfvqe6b78i8oZOe_Tn2lIVBwxZ6phtvEmZ8w_aS4zGSuYXoXx1DOjwatvCuH3rKicbQpJwEX3Bbcmv-NSgVZDae4dntgc89zbPbAg1zsqZDyHublVSK8m7i5CVLKiDvXdoWidNbY
        destinationName:
          type: string
          example: Einwohnermeldeamt
          description: Bezeichnung des Routingziels
        destinationLogo:
          type: string
          example: 'https://einwohnermeldeamt.beispielstadt.example.org/logo.png'
          description: Url zum Logo der Organisationseinheit
      required:
        - destinationId
        - destinationSignature
        - destinationParameters
        - destinationParametersSignature
    SubmissionSchema:
      title: Fachdatenschema
      description: 'Referenz auf ein Schema, das die Struktur der Fachdaten einer Einreichung beschreibt.'
      type: object
      required:
        - schemaUri
      properties:
        schemaUri:
          type: string
          format: uri
          description: 'URI des Fachschemas. Wird hier eine URL verwendet, sollte das Schema unter der angegebenen URL abrufbar sein. Eine Verfügbarkeit des Schemas unter der angegebenen URL darf jedoch nicht vorausgesetzt werden.'
          maxLength: 200
          example: 'urn:xoev-de:bmk:standard:xbau_2.2#baugenehmigung.antrag.0200'
        mimeType:
          type: string
          description: Mimetype (z.B. application/json oder application/xml) des referenzierten Schemas (z.B. XSD- oder JSON-Schema).
          maxLength: 50
          pattern: '^[-\w.]+/[-\w.]+$'
          example: application/xml
    Destination:
      title: Zustellpunkt
      description: Bildet die Struktur eines Zustellpunktes ab.
      type: object
      additionalProperties: false
      properties:
        encryptionKid:
          type: string
          maxLength: 512
          description: 'Referenz auf den Public Key, der zur Verschlüsselung zu verwenden ist. Der referenzierte Public Key ist im Attribut `publicKeys` hinterlegt.'
          example: NFNb7k84r61G9ayAAJItJCNGl7wKWif9HyBAgicJq_8
        publicKeys:
          $ref: '#/components/schemas/JWKS'
        metadataVersions:
          title: Liste unterstützter Metadatenschemataversionen
          description: Eine Liste von semver kompatiblen Versionen des Metadatenschemas.
          type: array
          uniqueItems: true
          minItems: 1
          items:
            type: string
            pattern: '^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$'
        replyChannels:
          type: object
          description: 'Hier kann eine empfangende Stelle angeben, welche elektronischen Rückkanäle es für Einreichungen an diesen Zustellpunkt unterstützt. Sofern keine Channels angegeben werden, kann ein sendendes System  davon ausgehen, dass die Behörde nur über den Papierweg im Rückkanal kommuniziert.'
          minProperties: 1
          properties:
            elster:
              type: object
              description: 'Hiermit kann den sendenden Systemen signalisiert werden, dass die empfangende Stelle für Einreichungen an diesen Zustellpunkt eine Rückkanalkommunikation per Elster-Transfer unterstützt.'
            eMail:
              description: 'Hiermit kann den sendenden Systemen signalisiert werden, dass die empfangende Stelle für Einreichungen an diesen Zustellpunkt eine Rückkanalkommunikation per E-Mail unterstützt.'
              type: object
              properties:
                usePgp:
                  type: boolean
                  description: 'Hiermit kann den sendenden Systemen signalisiert werden, dass die empfangende Stelle für die Rückkanalkommunikation per E-Mail eine Verschlüsselung mit PGP unterstützt, sofern eine PGP Schlüssel über die Metadaten der Einreichung oder einen anderen Mechanismus übermittelt wurden.'
            deMail:
              type: object
              description: 'Hiermit kann den sendenden Systemen signalisiert werden, dass die empfangende Stelle für Einreichungen an diesen Zustellpunkt eine Rückkanalkommunikation per DE-Mail unterstützt.'
            fink:
              type: object
              description: 'Hiermit kann den sendenden Systemen signalisiert werden, dass die empfangende Stelle für Einreichungen an diesen Zustellpunkt eine Rückkanalkommunikation an die interoperablen Postfächer der FINK Föderation unterstützt.'
        status:
          type: string
          enum:
            - created
            - active
            - inactive
            - decommissioned
          description: 'Status des Zustellpunktes. Eine Beschreibung der Status finden Sie in den Detailinformationen unter [Zustellpunktverwaltung](https://docs.fitko.de/fit-connect/docs/details/destination-management).'
        submissionSchemas:
          uniqueItems: true
          minItems: 1
          type: array
          description: Auflistung aller unterstützten Antragsschemata des Zustellpunktes.
          items:
            $ref: '#/components/schemas/SubmissionSchema'
        submissionUrl:
          type: string
          format: uri
          description: Endpunkt für die Datenübergabe
          example: 'https://submission-api.fit-connect.example.org/v1'
      required:
        - encryptionKid
        - publicKeys
        - metadataVersions
        - status
        - submissionSchemas
        - submissionUrl
    JWK:
      title: JSON Web Key (JWK)
      type: object
      description: JSON Web Key - RFC 7517
      required:
        - kty
        - key_ops
        - alg
        - x5c
        - kid
        - 'n'
        - e
      properties:
        kty:
          type: string
          description: |
            Der Parameter "kty" (Schlüsseltyp) identifiziert die kryptografische Algorithmus Familie, die mit dem Schlüssel verwendet wird, z. B. "RSA" oder "EC". In FIT-Connect sind aktuell nur RSA-Schlüssel erlaubt.
          enum:
            - RSA
          example: RSA
        key_ops:
          type: array
          description: |
            Der Parameter "key_ops" (Schlüsseloperationen) identifiziert die Operation(en) für die der Schlüssel verwendet werden soll. Die Bedeutung der Erlaubten Operationen sind:
              - `verify`: Digitale Signatur oder MAC überprüfen
              - `wrapKey`: Verschlüsselungsschlüssel
          items:
            type: string
            enum:
              - verify
              - wrapKey
          example:
            - wrapKey
        alg:
          type: string
          description: |
            Der Parameter "alg" (Algorithmus) identifiziert den Algorithmus, der für Verwendung mit dem Schlüssel vorgesehen ist. In FIT-Connect wird `PS512` für Signaturschlüssel und `RSA-OAEP-256` für Verschlüsselungsschlüssel genutzt.
          enum:
            - PS512
            - RSA-OAEP-256
          example: RSA-OAEP-256
        x5c:
          type: array
          description: |
            Der Parameter "x5c" (X.509 certificate chain) enthält eine Kette von einem oder mehreren PKIX-Zertifikaten [RFC5280]. Die Zertifikatskette wird als JSON-Array von Zertifikatswert-Strings dargestellt.
          minItems: 1
          items:
            type: string
          example:
            - ...(base64 encoded cert)...
            - ...(base64 encoded intermediate cert)...
            - ...(base64 encoded root cert)...
        kid:
          type: string
          description: |
            Der Parameter "kid" (Schlüssel-Id) wird verwendet, um einen bestimmten Schlüssel zu finden. Dieser wird z. B. verwendet, um zwischen einer Reihe von Schlüsseln innerhalb eines JWK-Sets zu wählen während des Schlüssel-Rollover.
          minLength: 8
          maxLength: 64
          example: NFNb7k84r61G9ayAAJItJCNGl7wKWif9HyBAgicJq_8
        'n':
          type: string
          description: Modulus des Schlüssels. Die minimale Länge von 683 Zeichen repräsentiert eine Schlüssellange von mindestens 4096 Bit.
          minLength: 683
          example: 1f1070XZ4NpHN2WqdH5c8dBUBPH99TJEvVXSP_jjZdOEzRJztUwSpIabtAvgDnNGmPTLs-jLlVR3NQCyKwOwpHVi3FmudKmIPplBFpsEpZ9JYBGpg8_ZbDN9fwJhob0KjAlsSY9mBOTfqLCqqVIJrk4fxBjwNaroCLkSbS2RrfMtUEW5T5Vo1uw2lnYTKq1uyhr1PG02mvDCBb0LMAqcMXRR6bdme8GN55S3UNWhsaonpq04aa8_baVdjoJYTk03VLORMojnnrJjxyPPiHRs2Re9JQoaVPy6TUrbFV63zvt30XM8ZJnla09yhMmuBJXpdtyWXKnKyqj8m9D5Vg68xksQVeJozpCAoBlsJeAheE31XPQwCBvamy46K669ZCkfkdhQgoIJMt1AVSef0qcLDg__nQ-rfIuYxHrtn7jgI0NeCGFbscxmzl08_LSj3nlj2-ag2uVq4bbdH3tziNxy_rr84N-6AA5iQe5v1L_zYXYWxGzaAOUWzJt0QRiEC9pF6Zqfrn4mPHn5lm2jtdM9AlmgkZtmK92rByfcMzo5-yEK37K96NtqpDCsoABUkvC1TLiqaCkGkQd1DmGnfNyGJV_eNMwmZyotom8WLS-icbQD913F9YlSTRsQYhFzw78pDJHHo4AtldMiQcpUY4qoVVpfpPZlMWTq7idnq6iO4MM
        e:
          type: string
          description: Öffentliche Exponent des Schlüssels
          enum:
            - AQAB
          example: AQAB
    JWKS:
      title: JSON Web Key Set (JWKS)
      description: 'JWKS nach https://datatracker.ietf.org/doc/html/rfc7517#section-5'
      type: object
      required:
        - keys
      properties:
        keys:
          type: array
          uniqueItems: true
          minItems: 1
          items:
            $ref: '#/components/schemas/JWK'
    AreaResult:
      title: Ergebnis einer Gebietessuche.
      type: object
      properties:
        count:
          type: integer
          format: int32
          description: Anzahl zurückgegebener Treffer
          maximum: 500
          minimum: 0
        offset:
          type: integer
          format: int32
          description: Startpunkt in der Gesamtanzahl der Suchtreffer
          minimum: 0
        totalCount:
          type: integer
          format: int32
          description: Gesamtanzahl der Suchtreffer
          minimum: 0
        areas:
          type: array
          items:
            $ref: '#/components/schemas/Area'
          minItems: 0
          maxItems: 500
          description: Aktuelle Suchtreffer
      required:
        - count
        - offset
        - totalCount
        - areas
    Area:
      title: Gebiet
      type: object
      properties:
        id:
          type: string
          pattern: '^\d{1,}'
          description: Id des Gebietes
          example: '1024'
        name:
          type: string
          description: Name des Gebietes
          example: Halle (Saale)
        type:
          type: string
          description: Typ des Gebietes
          example: Kreisfreie Stadt
      required:
        - id
        - name
        - type
  parameters:
    ars:
      name: ars
      in: query
      description: 'Amtlicher Regionalschlüssel des Gebietes (https://www.destatis.de/DE/Themen/Laender-Regionen/Regionales/_FAQ/regionalschluessel.html)'
      required: false
      schema:
        type: string
        pattern: '^(\d{2}|\d{3}|\d{5}|\d{9}|\d{12})$'
    ags:
      name: ags
      in: query
      description: 'Amtlicher Gemeindeschlüssel des Ortes (https://www.destatis.de/DE/Themen/Laender-Regionen/Regionales/Gemeindeverzeichnis/Glossar/amtlicher-gemeindeschluessel.html)'
      required: false
      schema:
        type: string
        pattern: '^(\d{2}|\d{3}|\d{5}|\d{8})$'
    leikaKey:
      name: leikaKey
      in: query
      description: Leikaschlüssel der Leistung
      required: true
      schema:
        type: string
        pattern: '^99\d{12}$'
    areaId:
      name: areaId
      in: query
      description: Id des Gebietes. Diese Id kann über die Resource /area ermittelt werden.
      required: false
      schema:
        type: string
        pattern: '^\d{1,}'
    areaSearchexpression:
      name: areaSearchexpression
      in: query
      description: 'Suchbegriffe für das zu suchenden Gebiet. Es können auch Postleitzahlen als Suchbegriffe verwendet werden. Es kann das Wildcard "\*" für die Suche verwendet werden. Zum Beispiel: "Mag\*" findet alle Gebiete die ein Wort beginend mit "Mag" im Namen (z.B. Magdeburg) enthalten.'
      required: true
      schema:
        type: array
        minItems: 1
        maxItems: 10
        items:
          type: string
          pattern: '^(\*?([^\*]{2,})\*?)*$'
      style: form
      explode: true
    offset:
      name: offset
      in: query
      description: Startposition der Teilmenge der Ergebnismenge. Standard ist 0.
      required: false
      schema:
        type: integer
        format: int32
        minimum: 0
    limit:
      name: limit
      in: query
      description: Anzahl der Teilmenge der Ergebnismenge. Maximum ist 500. Standard ist 100.
      required: false
      schema:
        type: integer
        format: int32
        minimum: 1
        maximum: 500
  headers:
    RateLimit-Limit:
      schema:
        type: integer
      description: 'Maximale Anzahl an Anfragen im aktuellen Zeitfenster. Siehe https://docs.fitko.de/fit-connect/docs/getting-started/rate-limiting'
    RateLimit-Remaining:
      schema:
        type: integer
      description: 'Verbleibende Anfragen im aktuellen Zeitfenster. Siehe https://docs.fitko.de/fit-connect/docs/getting-started/rate-limiting'
    RateLimit-Reset:
      schema:
        type: string
        format: date-time
      description: 'Der Zeitpunkt, in Sekunden, zu dem das aktuelle Zeitfenster abläuft und ein neues Zeitfenster beginnt. Siehe https://docs.fitko.de/fit-connect/docs/getting-started/rate-limiting'
