---
openapi: 3.1.0
paths:
  /.well-known/jwks.json:
    get:
      summary: Retrieve the registry JWKS
      description: |
        Returns the JSON Web Key Set (JWKS) containing the registry's RSA public key (RS256). Clients use this endpoint to obtain the public key needed to verify Proof of Registration JWTs issued by this registry. No authentication is required.
      responses:
        "200":
          description: JWKS document containing the registry's RSA public key.
          content:
            application/json:
              schema:
                type: string
        "500":
          description: The public key could not be loaded.
  /admin/v1/backup-reconcile/run:
    post:
      summary: Run the backup reconciliation sweep now
      description: |
        Sweeps the register against the third-party backup store: every
        registration's stored copy is compared to the registry dppHash, and
        missing or drifted copies are re-mirrored from the liveURL document
        (EN 18221 persistence). Returns per-outcome counts.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: integer
                  format: int32
      tags:
      - Admin Resource
  /admin/v1/retention/run:
    post:
      summary: Run the retention sweep now
      description: |
        Triggers the data-retention job on demand: deletes registrations past the
        configured retention period and prunes old audit records (IR (EU) 2026/1778
        Art. 14). Returns a summary of deleted counts.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
      tags:
      - Admin Resource
  /audit/v1:
    get:
      summary: List audit records
      description: |
        Returns audit records ordered by most recent first, optionally filtered by registryId and/or event type (REGISTER, UPDATE, DEACTIVATE, REACTIVATE, PROOF_ISSUED). Supports offset/limit paging (limit capped at 200, default 50).
      parameters:
      - description: Filter by registration identifier.
        in: query
        name: registryId
        required: false
        schema:
          type: string
      - description: Filter by event type.
        in: query
        name: eventType
        required: false
        schema:
          type: string
      - description: Rows to skip (default 0).
        in: query
        name: offset
        required: false
        schema:
          type: integer
          format: int32
      - description: "Maximum rows to return (default 50, max 200)."
        in: query
        name: limit
        required: false
        schema:
          type: integer
          format: int32
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/AuditEntry"
      tags:
      - Audit Resource
  /bridge/v1/{registryId}/mirror:
    post:
      summary: Mirror a registration to the EU DPP registry
      description: |
        Sends the metadata of the given local registry entry (without Korean domestic fields) to the configured EU DPP registry endpoint and stores the returned EU registration identifier in the local entry under the euRegistrationId field. Requires registry.eu-mirror-enabled=true.
      parameters:
      - name: registryId
        in: path
        required: true
        schema:
          type: string
      - name: reoId
        in: query
        schema:
          type: string
        required: false
      responses:
        "200":
          description: Mirrored; entry updated with euRegistrationId.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DPPMetadataEntry"
        "400":
          description: Mirroring disabled or invalid state.
        "404":
          description: No entry for the given registryId.
        "502":
          description: The EU registry rejected the registration.
      tags:
      - Bridge Resource
  /metadata/v1:
    get:
      summary: List or search DPP metadata entries
      description: |
        Returns registered DPP metadata entries ordered by most recent modification. When any of upi, reoId or commodityCode is supplied, performs a server-side exact-match search. Supports offset/limit paging (limit capped at 100, default 20).
      parameters:
      - description: Exact unique product identifier to search for.
        in: query
        name: upi
        required: false
        schema:
          type: string
      - description: Exact responsible economic operator id to search for.
        in: query
        name: reoId
        required: false
        schema:
          type: string
      - description: Exact commodity code to search for.
        in: query
        name: commodityCode
        required: false
        schema:
          type: string
      - description: Rows to skip (default 0).
        in: query
        name: offset
        required: false
        schema:
          type: integer
          format: int32
      - description: "Maximum rows to return (default 20, max 100)."
        in: query
        name: limit
        required: false
        schema:
          type: integer
          format: int32
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/DPPMetadataEntry"
    post:
      summary: Add DPP metadata
      description: |
        Add or updates a DPP metadata entry to the registry.
        The payload is validated against the configured json schema before being persisted.
        The response always includes the added/updated metadata plus the registry id associated to them.
      parameters:
      - description: |
          A list of metadata fields to be used to search in previously added metadata. Such retrieved metadata are then used to autofill fields that are null or absent from the incoming payload as configured by the configuration property registry.autocompletion-enabled-for. This is useful for EO that already provided data to the registry to avoid continuing providing full metadata payload in subsequent requests, if some properties are constant between different products. As an example, assuming that it has been configured registry.autocompletion-enabled-for=commodityCode,dataCarrierTypes,facilitiesId providing the parameter as /registry?autocompleteBy=reoId will cause the commodityCode, dataCarrierTypes and facilitiesId properties to be automatically filled in the provided payload equal to the corresponding ones in the first found metadata with the same reoId.
        in: query
        name: autocompleteBy
        required: false
        schema:
          type: array
          items:
            type: string
      - description: |
          Detached JWS signature (RS256) over the raw request body in compact serialisation with an empty payload segment: <header>..<signature>. Required only when registry.jws.verification-enabled=true. The signing key must be published at the JWKS URI carried in the JWT claim whose name is configured by registry.jws.jwks-uri-claim-name (default: jwksUri).
        in: header
        name: x-jws-signature
        required: false
      requestBody:
        $ref: "#/components/schemas/Metadata"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DPPMetadataEntry"
  /metadata/v1/registerDPP:
    post:
      summary: Register DPP metadata
      description: |
        Add or updates a DPP metadata entry to the registry (alternate path). Behaviour is identical to POST /metadata/v1. The payload is validated against the configured json schema before being persisted. The response always includes the added/updated metadata plus the registry id associated to them.
      parameters:
      - description: |
          A list of metadata fields to be used to search in previously added metadata. Such retrieved metadata are then used to autofill fields that are null or absent from the incoming payload as configured by the configuration property registry.autocompletion-enabled-for. This is useful for EO that already provided data to the registry to avoid continuing providing full metadata payload in subsequent requests, if some properties are constant between different products. As an example, assuming that it has been configured registry.autocompletion-enabled-for=commodityCode,dataCarrierTypes,facilitiesId providing the parameter as /registry?autocompleteBy=reoId will cause the commodityCode, dataCarrierTypes and facilitiesId properties to be automatically filled in the provided payload equal to the corresponding ones in the first found metadata with the same reoId.
        in: query
        name: autocompleteBy
        required: false
        schema:
          type: array
          items:
            type: string
      - description: |
          Detached JWS signature (RS256) over the raw request body in compact serialisation with an empty payload segment: <header>..<signature>. Required only when registry.jws.verification-enabled=true. The signing key must be published at the JWKS URI carried in the JWT claim whose name is configured by registry.jws.jwks-uri-claim-name (default: jwksUri).
        in: header
        name: x-jws-signature
        required: false
      requestBody:
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DPPMetadataEntry"
  /metadata/v1/{registryId}:
    get:
      summary: Look up a single DPP metadata entry
      description: |
        Returns the DPP metadata entry for the given registration identifier (resolver-style read of the registry index).
      parameters:
      - description: The unique registration identifier.
        in: path
        name: registryId
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The DPP metadata entry.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DPPMetadataEntry"
        "404":
          description: No entry for the given registryId.
  /metadata/v1/{registryId}/deactivate:
    post:
      summary: Deactivate a registration
      description: |
        Marks the registration as deactivated at the registry level (separate from any product-level status in the DPP data). Only the owning economic operator may deactivate. The change and its reason are recorded in the audit log.
      parameters:
      - description: The registration identifier.
        in: path
        name: registryId
        required: true
        schema:
          type: string
      - description: Reason for deactivation.
        in: query
        name: reason
        required: false
        schema:
          type: string
      responses:
        "200":
          description: Deactivated; the updated entry is returned.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DPPMetadataEntry"
        "400":
          description: Already deactivated or not the owner.
        "404":
          description: No entry for the given registryId.
  /metadata/v1/{registryId}/proof:
    get:
      summary: Get Proof of Registration
      description: |
        Returns a signed Proof of Registration JWT (RS256) for the registry entry identified by registryId. The JWT certifies that a specific DPP was registered in this registry at a given point in time. The payload includes: iss, registryId, registeredAt, commodityCode, reoId, reoName, dppHash, dppContentType. Verify the JWT signature using the public key published at GET /.well-known/jwks.json.
      parameters:
      - description: The unique registry identifier of the DPP entry.
        in: path
        name: registryId
        required: true
        schema:
          type: string
      - description: Optional. Filters by Responsible Economic Operator ID to disambiguate
          entries that share the same registryId.
        in: query
        name: reoId
        required: false
        schema:
          type: string
      responses:
        "200":
          description: Compact JWT (application/jwt) signed with the registry's private
            key.
          content:
            application/jwt:
              schema:
                type: string
        "404":
          description: No registry entry found for the given registryId.
  /metadata/v1/{registryId}/reactivate:
    post:
      summary: Reactivate a registration
      description: Reverses a deactivation. Only the owning economic operator may
        reactivate.
      parameters:
      - description: The registration identifier.
        in: path
        name: registryId
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DPPMetadataEntry"
  /registration/v1/requests:
    post:
      summary: Submit an asynchronous DPP registration request
      description: Accepts a single DPP metadata object or an array of up to 100 objects
        (all-or-nothing batch). Answers 202 with a correlation id; consult the request
        status endpoints for the outcome.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/JsonNode"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RequestView"
        "400":
          description: Bad Request
      tags:
      - Registration Request Resource
    get:
      summary: List registration requests (Activity Dashboard)
      description: Newest first. Economic operators see only their own submissions.
      parameters:
      - name: limit
        in: query
        schema:
          type: integer
          format: int32
      - name: offset
        in: query
        schema:
          type: integer
          format: int32
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/RequestView"
      tags:
      - Registration Request Resource
  /registration/v1/requests/{correlationId}:
    get:
      summary: Get one registration request with its per-item outcomes
      parameters:
      - name: correlationId
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RequestView"
      tags:
      - Registration Request Resource
  /resolve/v1:
    get:
      summary: Resolve a product identifier to its DPP
      description: "Redirects (302) to the DPP document for the given identifier.\
        \ Accepts the domestic UPI, the EU-format UPI or a GS1 Digital Link URI. Use\
        \ target=backup to reach the backup copy (EN 18221 persistence). Deactivated\
        \ registrations answer 410 Gone so a scanner can tell 'withdrawn' apart from\
        \ 'never registered'."
      parameters:
      - description: "Product identifier: domestic UPI, EU UPI or GS1 Digital Link\
          \ URI."
        in: query
        name: id
        required: true
        schema:
          type: string
      - description: live (default) or backup.
        in: query
        name: target
        required: false
        schema:
          type: string
      responses:
        "302":
          description: Redirect to the DPP document.
        "410":
          description: The registration was deactivated.
        "404":
          description: No registration answers to the id.
      tags:
      - Resolver Resource
  /resolve/v1/01/{gtin}:
    get:
      summary: Resolve a GS1 Digital Link element string (GTIN only)
      description: GS1 Digital Link resolver path. Answers the model-level registration
        for the GTIN.
      parameters:
      - name: gtin
        in: path
        required: true
        schema:
          type: string
      - name: target
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema: {}
      tags:
      - Resolver Resource
  /resolve/v1/01/{gtin}/10/{lot}:
    get:
      summary: Resolve a GS1 Digital Link element string (GTIN + batch/lot)
      description: Falls back to the model-level registration when the batch itself
        is not registered separately.
      parameters:
      - name: gtin
        in: path
        required: true
        schema:
          type: string
      - name: lot
        in: path
        required: true
        schema:
          type: string
      - name: target
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema: {}
      tags:
      - Resolver Resource
  /resolve/v1/01/{gtin}/10/{lot}/21/{serial}:
    get:
      summary: Resolve a GS1 Digital Link element string (GTIN + batch/lot + serial)
      description: Most specific item-level resolution; falls back to the model-level
        registration.
      parameters:
      - name: gtin
        in: path
        required: true
        schema:
          type: string
      - name: lot
        in: path
        required: true
        schema:
          type: string
      - name: serial
        in: path
        required: true
        schema:
          type: string
      - name: target
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema: {}
      tags:
      - Resolver Resource
  /resolve/v1/01/{gtin}/21/{serial}:
    get:
      summary: Resolve a GS1 Digital Link element string (GTIN + serial)
      description: Item-level resolution; falls back to the model-level registration.
      parameters:
      - name: gtin
        in: path
        required: true
        schema:
          type: string
      - name: serial
        in: path
        required: true
        schema:
          type: string
      - name: target
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema: {}
      tags:
      - Resolver Resource
  /resolve/v1/pointer:
    get:
      summary: Public pointer for a product identifier
      description: "Returns the public-tier registry pointer (prEN 18239 public access\
        \ level) without redirecting: what the product is, who is responsible and\
        \ where its passport is served from."
      parameters:
      - description: "Product identifier: domestic UPI, EU UPI or GS1 Digital Link\
          \ URI."
        in: query
        name: id
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PublicPointer"
      tags:
      - Resolver Resource
  /schema/v1:
    post:
      summary: Add a DPP metadata JSON schema
      description: Add a DPP metadata JSON schema. If a schema already exists the
        newly added one becomes the current schema in use to validate and manage the
        DPP metadata.
      requestBody:
        $ref: "#/components/schemas/JsonSchema"
      responses:
        "201":
          description: Created
  /schema/v1/current:
    delete:
      summary: Remove the current DPP metadata JSON schema
      description: "Remove the DPP metadata JSON schema currently in use by the API,i.e.\
        \ the last added, causing the previous JSON schema, if any, to become the\
        \ new current schema."
      responses:
        "204":
          description: No Content
    get:
      summary: Retrieve the current DPP metadata JSON schema
      description: "Retrieve the DPP metadata JSON schema currently in use by the\
        \ API,i.e. the last added."
      responses:
        "200":
          description: OK
          $ref: "#/components/schemas/JsonSchema"
  /schema/v1/versions:
    get:
      summary: List the stored DPP metadata JSON schema versions
      description: "List all stored DPP metadata JSON schema versions, newest first.\
        \ The newest entry is the current schema in use; an empty list means the built-in\
        \ default schema applies."
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/SchemaVersion"
  /schema/v1/versions/{id}:
    get:
      summary: Retrieve a stored DPP metadata JSON schema version
      description: "Retrieve the content of one stored DPP metadata JSON schema version\
        \ by its id, as returned by the versions listing."
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/JsonNode"
components:
  schemas:
    LocalDateTime:
      type: string
      format: date-time
      examples:
      - 2022-03-10T12:15:50
    RequestView:
      type: object
      properties:
        correlationId:
          type: string
        status:
          type: string
        actorReoId:
          type: string
        itemCount:
          type: integer
          format: int32
        submittedAt:
          type: string
        completedAt:
          type: string
        estimatedSeconds:
          type: integer
          format: int64
        outcomes:
          type: array
          items:
            $ref: "#/components/schemas/ItemOutcome"
    SchemaVersion:
      type: object
      properties:
        id:
          type: integer
          format: int64
        createdAt:
          $ref: "#/components/schemas/LocalDateTime"
        title:
          type: string
        current:
          type: boolean
    AuditEntry:
      type: object
      properties:
        id:
          type: integer
          format: int64
        eventTime:
          $ref: "#/components/schemas/LocalDateTime"
        eventType:
          type: string
        registryId:
          type: string
        upi:
          type: string
        actorReoId:
          type: string
        actorName:
          type: string
        detail:
          type: string
    DPPMetadataEntry:
      type: object
      properties:
        createdAt:
          $ref: "#/components/schemas/LocalDateTime"
        deactivationReason:
          type: string
        metadata:
          $ref: "#/components/schemas/Metadata"
        modifiedAt:
          $ref: "#/components/schemas/LocalDateTime"
        dppHash:
          type: string
        registryId:
          type: string
        deactivatedAt:
          $ref: "#/components/schemas/LocalDateTime"
        contentType:
          type: string
        deactivated:
          type: boolean
    JsonSchema:
      description: A valid JSON schema definition (draft-07)
      type: object
      additionalProperties: true
      externalDocs:
        description: JSON Schema Draft 07 Meta-Schema
        url: http://json-schema.org/draft-07/schema#
    Metadata:
      properties:
        upi:
          type: string
          description: Unique Product Identifier - the unique identifier of the product
          minLength: 1
          maxLength: 200
          examples:
          - urn:epc:id:sgtin:8801234.107346.2017
          enum: []
        eori:
          type: string
          description: Economic Operators Registration and Identification number (EU
            customs identifier). Optional; required in practice when mirroring the
            registration to the EU DPP Registry
          examples:
          - DE123456789012345
          - NL000000012345678
          enum: []
          pattern: "^[A-Z]{2}[0-9A-Za-z]{1,15}$"
        gtin:
          type: string
          description: GS1 Global Trade Item Number of the product model (EN 18219).
            Used with batchLot / serialNumber to build the GS1 Digital Link element
            string the resolver accepts
          examples:
          - "08801234107346"
          enum: []
          pattern: "^[0-9]{8}$|^[0-9]{12,14}$"
        euUpi:
          type: string
          description: "EU-format Unique Product Identifier: resolvable https URL,\
            \ max 50 chars (EU DPP Registry User Guide / JTC 24). Used as the UPI\
            \ when mirroring to the EU registry; required there when the domestic\
            \ upi is not an https URL"
          maxLength: 50
          examples:
          - https://dpp.example.kr/p/8801234-107346-2017
          enum: []
          pattern: ^https://.+$
        reoId:
          type: string
          description: "Responsible Economic Operator ID. For EU market products,\
            \ use of an EORI or LEI based identifier is recommended for EU DPP Registry\
            \ interoperability"
          minLength: 1
          maxLength: 50
          examples:
          - LEI-529900T8BM49AURSDO55
          - KR-BRN-1234567890
          enum: []
        liveURL:
          type: string
          description: Primary URL to retrieve the related DPP data
          examples:
          - https://dpp.example.kr/product/12345
          enum: []
          format: uri
          pattern: ^http
        batchLot:
          type: string
          description: Batch / lot identifier (GS1 AI 10). Recommended when granularityLevel
            = BATCH or ITEM
          maxLength: 20
          examples:
          - LOT-2027A
          enum: []
        batchUpi:
          type: string
          description: The UPI of the batch-level registry entry. Required when granularityLevel
            = ITEM
          minLength: 1
          maxLength: 200
          examples:
          - urn:epc:id:sgtin:8801234.107346.2017
          enum: []
        modelUpi:
          type: string
          description: The UPI of the model-level registry entry. Required when granularityLevel
            = BATCH or ITEM
          minLength: 1
          maxLength: 200
          examples:
          - urn:epc:id:sgtin:8801234.107346.2017
          enum: []
        backupURL:
          type: string
          description: Backup URL to retrieve the related DPP data
          examples:
          - https://backup-dpp.example.kr/product/12345
          enum: []
          format: uri
          pattern: ^http
        krBizRegNo:
          type: string
          description: "Korean business registration number (사업자등록번호) of the responsible\
            \ economic operator, 10 digits without separators"
          examples:
          - "1234567890"
          enum: []
          pattern: "^[0-9]{10}$"
        deactivated:
          type:
          - boolean
          - "null"
          description: "True if the DPP has been deactivated, false/null otherwise.\
            \ Required when granularityLevel = ITEM"
          examples:
          - "true"
          - "false"
          - "null"
          enum: []
        krCorpRegNo:
          type: string
          description: "Korean corporate registration number (법인등록번호), 13 digits without\
            \ separators"
          examples:
          - "1101112345678"
          enum: []
          pattern: "^[0-9]{13}$"
        facilitiesId:
          type: array
          description: "Facility / supply-chain location identifiers where the product\
            \ is manufactured/assembled. GLN recommended; a role prefix may be used\
            \ to convey supply-chain position (e.g. MANUFACTURE:GLN-8801234000013),\
            \ keeping the registry metadata model flat (IR (EU) 2026/1778 place-of-manufacture\
            \ and key supply-chain locations)"
          examples:
          - GLN-8801234000013
          - MANUFACTURE:GLN-8801234000013
          - FAC-ULSAN-001
          enum: []
          items:
            type: string
            maxLength: 250
          minItems: 1
          uniqueItems: true
        serialNumber:
          type: string
          description: Item serial number (GS1 AI 21). Recommended when granularityLevel
            = ITEM
          maxLength: 20
          examples:
          - "00042"
          enum: []
        commodityCode:
          type: string
          description: "The commodity code of the product (e.g., HS Code, HSK 10-digit)"
          examples:
          - "85176200"
          - "8517620090"
          enum: []
          pattern: "^[0-9]{4,10}$"
        gs1DigitalLink:
          type: string
          description: "Canonical GS1 Digital Link URI for this product (EN 18219\
            \ / K-UMI mapping). Accepted as an alternate lookup key by the national\
            \ root resolver, so an existing GS1 identifier resolves without changing\
            \ the domestic upi"
          maxLength: 250
          examples:
          - https://id.gs1.org/01/08801234107346/10/LOT-2027A/21/00042
          enum: []
          pattern: "^https://.+/01/[0-9]{8,14}"
        retentionUntil:
          type: string
          description: "Date until which the DPP data must stay retrievable, including\
            \ after the economic operator ceases trading (EN 18221 data persistence;\
            \ ESPR requires the passport to outlive the operator). The registry keeps\
            \ serving backupURL until this date"
          examples:
          - 2037-12-31
          enum: []
          format: date
          pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
        productCategory:
          type: string
          description: Product category as defined by the applicable ESPR delegated
            act (IR (EU) 2026/1778 registration data). Optional domestically; required
            for EU DPP Registry mirroring
          maxLength: 100
          examples:
          - battery.industrial
          - textile.apparel
          - electronics.display
          enum: []
        dataCarrierTypes:
          type: array
          description: "Physical data carriers that link the product to this DPP (EN\
            \ 18220). Multiple carriers are common across sectors: QR on batteries,\
            \ marking/RFID on steel, washable NFC tags on textiles"
          examples:
          - ""
          - ""
          enum: []
          items:
            type: string
          uniqueItems: true
        esprDelegatedAct:
          type: string
          description: Reference to the ESPR (Regulation (EU) 2024/1781) delegated
            act applicable to the product. Optional domestically; required for EU
            DPP Registry mirroring
          maxLength: 100
          examples:
          - CELEX:32027R0000
          - ESPR-DA-BATTERY-2027
          enum: []
        granularityLevel:
          type: string
          description: The granularity level of the DPP
          examples:
          - MODEL
          enum:
          - MODEL
          - BATCH
          - ITEM
    PublicPointer:
      type: object
      properties:
        registryId:
          type: string
        upi:
          type: string
        euUpi:
          type: string
        gs1DigitalLink:
          type: string
        reoId:
          type: string
        commodityCode:
          type: string
        productCategory:
          type: string
        granularityLevel:
          type: string
        liveURL:
          type: string
        backupURL:
          type: string
        retentionUntil:
          type: string
        deactivated:
          type: boolean
        registeredAt:
          type: string
        modifiedAt:
          type: string
    ItemOutcome:
      type: object
      properties:
        upi:
          type: string
        registryId:
          type: string
        error:
          type: string
  securitySchemes:
    SecurityScheme:
      type: openIdConnect
      description: Authentication
      openIdConnectUrl: http://dpp-registry-kr-gateway:8480/.well-known/openid-configuration
info:
  title: mock-eu-registry API
  version: 1.2-SNAPSHOT
