GS1

GS1 Capture API

Endpoints to capture EPCIS events in bulk or individually.

Operations 4

POST /capture Asynchronous capture endpoint for one or more EPCIS events.
GET /capture Returns a list of capture jobs.
GET /capture/{captureID} Returns information about the capture job.
POST /events Synchronous capture interface for a single EPCIS event.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gs1-capture-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gs1-capture-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.0.1
  title: EPCIS 2.0 REST Bindings Capture API
  license:
    name: Apache2
  description: 'Endpoints to capture EPCIS events in bulk or individually.

    '
tags:
- name: Capture
  description: 'Endpoints to capture EPCIS events in bulk or individually.

    '
paths:
  /capture:
    parameters:
    - $ref: '#/components/parameters/GS1-Extensions'
    post:
      tags:
      - Capture
      summary: Asynchronous capture endpoint for one or more EPCIS events.
      parameters:
      - $ref: '#/components/parameters/GS1-EPCIS-Version'
      - $ref: '#/components/parameters/GS1-CBV-Version'
      - $ref: '#/components/parameters/GS1-Capture-Error-Behaviour'
      description: 'EPCIS events are added in bulk using the capture interface. Four design considerations were made to remain compatible with EPCIS 1.2:

        - EPCIS 2.0 keeps event IDs optional. If event IDs are missing, the server should populate the event ID with a unique value.

        Otherwise, it won''t be possible to retrieve these events by eventID.

        - By default, EPCIS events are only stored if the entire capture job was successful. This behaviour can be changed with the `GS1-Capture-Error-Behaviour` header.

        - EPCIS master data can be captured in the header (`epcisHeader`) of an `EPCISDocument`.

        - This endpoint should support both `EPCISDocument` and `EPCISQueryDocument` as input.

        To prevent timeouts for large payloads, the client potentially may need to split the payload into several capture calls. To that end, the server can specify a capture

        limit (number of EPCIS events) and file size limit (payload size).

        A successful capturing of events does not guarantee that events will be stored. Instead, the server returns a

        capture id, which the client can use to obtain information about the capture job.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/epcisQueryDocument'
              - $ref: '#/components/schemas/epcisDocument'
            example:
              '@context':
              - https://ref.gs1.org/standards/epcis/epcis-context.jsonld
              - example: http://ns.example.com/epcis/
              id: https://id.example.org/document1
              type: EPCISDocument
              schemaVersion: '2.0'
              creationDate: '2005-07-11T11:30:47.0Z'
              epcisBody:
                eventList:
                - eventID: ni:///sha-256;df7bb3c352fef055578554f09f5e2aa41782150ced7bd0b8af24dd3ccb30ba69?ver=CBV2.0
                  type: ObjectEvent
                  action: OBSERVE
                  bizStep: shipping
                  disposition: in_transit
                  epcList:
                  - urn:epc:id:sgtin:0614141.107346.2017
                  - urn:epc:id:sgtin:0614141.107346.2018
                  eventTime: '2005-04-03T20:33:31.116000-06:00'
                  eventTimeZoneOffset: -06:00
                  readPoint:
                    id: urn:epc:id:sgln:0614141.07346.1234
                  bizTransactionList:
                  - type: po
                    bizTransaction: http://transaction.acme.com/po/12345678
                - eventID: ni:///sha-256;00e1e6eba3a7cc6125be4793a631f0af50f8322e0ab5f2c0bab994a11cec1d79?ver=CBV2.0
                  type: ObjectEvent
                  action: OBSERVE
                  bizStep: receiving
                  disposition: in_progress
                  epcList:
                  - urn:epc:id:sgtin:0614141.107346.2018
                  eventTime: '2005-04-04T20:33:31.116-06:00'
                  eventTimeZoneOffset: -06:00
                  readPoint:
                    id: urn:epc:id:sgln:0012345.11111.400
                  bizLocation:
                    id: urn:epc:id:sgln:0012345.11111.0
                  bizTransactionList:
                  - type: po
                    bizTransaction: http://transaction.acme.com/po/12345678
                  - type: desadv
                    bizTransaction: urn:epcglobal:cbv:bt:0614141073467:1152
                  example:myField: Example of a vendor/user extension
      responses:
        '202':
          description: 'Successfully received one or more EPCIS events. The request returns a unique

            capture job URL in the Location header.

            '
          headers:
            GS1-EPCIS-Version:
              $ref: '#/components/headers/GS1-EPCIS-Version'
            GS1-CBV-Version:
              $ref: '#/components/headers/GS1-CBV-Version'
            GS1-Extensions:
              $ref: '#/components/headers/GS1-Extensions'
            Location:
              description: 'Absolute or relative URL of the capture job.

                '
              schema:
                example: /capture/id9261379075
                type: string
                minLength: 1
        '400':
          description: 'An error occurred while receiving EPCIS events. All events are rejected. This is not to be confused with

            an error while capturing EPCIS events. To monitor the capture job, use the `/capture/{captureID}` endpoint.

            '
          content:
            application/problem+json:
              schema:
                allOf:
                - properties:
                    status:
                      type: integer
                      enum:
                      - 400
                      default: 400
                    type:
                      type: string
                      format: uri
                      enum:
                      - epcisException:ValidationException
                - $ref: '#/components/schemas/RFC7807ProblemResponseBody'
            application/problem+xml:
              schema:
                allOf:
                - properties:
                    status:
                      type: integer
                      enum:
                      - 400
                      default: 400
                    type:
                      type: string
                      format: uri
                      enum:
                      - epcisException:ValidationException
                - $ref: '#/components/schemas/RFC7807ProblemResponseBody'
        '401':
          $ref: '#/components/responses/401UnauthorizedRequest'
        '403':
          $ref: '#/components/responses/403ClientUnauthorized'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '413':
          $ref: '#/components/responses/413CapturePayloadTooLarge'
        '415':
          $ref: '#/components/responses/415UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/500ImplementationException'
    get:
      tags:
      - Capture
      parameters:
      - $ref: '#/components/parameters/NextPageToken'
      - $ref: '#/components/parameters/PerPage'
      - $ref: '#/components/parameters/GS1-EPCIS-Min'
      - $ref: '#/components/parameters/GS1-EPCIS-Max'
      - $ref: '#/components/parameters/GS1-Extensions'
      summary: Returns a list of capture jobs.
      description: "When EPCIS events are added through the capture interface, the capture process can run asynchronously. If the payload\nis syntactically correct and the client is allowed to call `/capture`, the server returns a `202` HTTP response code. \nThis endpoint returns all capture jobs that were created\nand supports pagination.\n"
      responses:
        '200':
          headers:
            GS1-EPCIS-Version:
              $ref: '#/components/headers/GS1-EPCIS-Version'
            GS1-Extensions:
              $ref: '#/components/headers/GS1-Extensions'
            Link:
              $ref: '#/components/headers/Link'
            GS1-Next-Page-Token-Expires:
              $ref: '#/components/headers/GS1-Next-Page-Token-Expires'
          description: 'A capture job document has at least the following properties:

            - `running`: whether or not the capture job is still active.

            - `success`: whether or not at least one error occurred.

            - `captureErrorBehaviour`: GS1-Capture-Error-Behaviour header value provided with POST data to capture.

            - `errors` or `errorFile`: with the errors if `success` is `false`.

            ### captureErrorBehaviour value is `rollback`

            | Capture job `running` | Capture job `success` | Capture job outcome |

            |:--------|:---------|:---------|

            | `true` | `true` | Still capturing EPCIS events. No errors occurred so far. |

            | `true` | `false` | At least one error occurred. Rollback is in progress. |

            | `false` | `true` | All EPCIS events are captured. |

            | `false` | `false` | All EPCIS events are rejected. |

            ### captureErrorBehaviour value is `proceed`

            | Capture job `running` | Capture job `success` | Capture job outcome |

            |:--------|:---------|:---------|

            | `true` | `true` | Still capturing EPCIS events. No errors occurred so far. |

            | `true` | `false` | At least one error occurred but more EPCIS events are currently being captured. |

            | `false` | `true` | All EPCIS events were captured without an error. |

            | `false` | `false` | Some EPCIS events were captured but errors occurred. |

            If `success` is `false`, check the `errors` or `errorFile` property for details.

            '
          content:
            application/json:
              example:
              - captureID: id261378658356
                createdAt: '2021-07-21T17:32:28Z'
                finishedAt: '2022-01-21T17:45:28Z'
                running: false
                success: true
                captureErrorBehaviour: rollback
                errors: []
              - captureID: id9261379075
                createdAt: '2021-08-21T17:32:28Z'
                running: true
                success: true
                captureErrorBehaviour: proceed
                errors: []
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CaptureJob'
                uniqueItems: true
        '401':
          $ref: '#/components/responses/401UnauthorizedRequest'
        '403':
          $ref: '#/components/responses/403ClientUnauthorized'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '500':
          $ref: '#/components/responses/500ImplementationException'
  /capture/{captureID}:
    parameters:
    - in: path
      name: captureID
      example: id9261379075
      description: A unique value identifying a capture job generated by the server.
      required: true
      schema:
        type: string
    - $ref: '#/components/parameters/GS1-Extensions'
    get:
      parameters:
      - $ref: '#/components/parameters/GS1-EPCIS-Min'
      - $ref: '#/components/parameters/GS1-EPCIS-Max'
      tags:
      - Capture
      summary: Returns information about the capture job.
      description: "When EPCIS events are added through the capture interface, the capture process can run asynchronously. If the payload\nis syntactically correct and the client is allowed to call `/capture`, the server returns a `202` HTTP response code. \nThis endpoint exposes the state of the capture job to the client.\n"
      responses:
        '200':
          headers:
            GS1-EPCIS-Version:
              $ref: '#/components/headers/GS1-EPCIS-Version'
            GS1-Extensions:
              $ref: '#/components/headers/GS1-Extensions'
          description: "A capture job document has at least the following properties:\n- `running`: whether or not the capture job is still active.\n- `success`: whether or not at least one error occurred.\n- `captureErrorBehaviour`: GS1-Capture-Error-Behaviour header value provided with POST data to capture.\n- `errors` or `errorFile`: with the errors if `success` is `false`.\n### captureErrorBehaviour value is `rollback`\n| Capture job `running` | Capture job `success` | Capture job outcome |\n|:--------|:---------|:---------| \n| `true` | `true` | Still capturing EPCIS events. No errors occurred so far. |\n| `true` | `false` | At least one error occurred. Rollback is in progress. |\n| `false` | `true` | All EPCIS events are captured. |\n| `false` | `false` | All EPCIS events are rejected. |\n### captureErrorBehaviour value is `proceed`\n| Capture job `running` | Capture job `success` | Capture job outcome |\n|:--------|:---------|:---------|\n| `true` | `true` | Still capturing EPCIS events. No errors occurred so far. |\n| `true` | `false` | At least one error occurred but more EPCIS events are currently being captured. |\n| `false` | `true` | All EPCIS events were captured without an error. |\n| `false` | `false` | Some EPCIS events were captured but errors occurred. |\nIf `success` is `false`, check the `errors` or `errorFile` property for details.\n"
          content:
            application/json:
              example:
                captureID: id261378658356
                createdAt: '2021-07-21T17:32:28Z'
                finishedAt: '2022-01-21T17:45:28Z'
                running: false
                success: true
                captureErrorBehaviour: rollback
                errors: []
              schema:
                $ref: '#/components/schemas/CaptureJob'
            application/xml:
              example:
                captureID: id261378658356
                running: false
                success: true
                captureErrorBehaviour: rollback
                createdAt: '2021-07-21T17:32:28Z'
                finishedAt: '2022-01-21T17:45:28Z'
              schema:
                $ref: '#/components/schemas/CaptureJob'
        '401':
          $ref: '#/components/responses/401UnauthorizedRequest'
        '403':
          $ref: '#/components/responses/403ClientUnauthorized'
        '404':
          $ref: '#/components/responses/404ResourceNotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '500':
          $ref: '#/components/responses/500ImplementationException'
  /events:
    parameters:
    - $ref: '#/components/parameters/GS1-Extensions'
    post:
      parameters:
      - $ref: '#/components/parameters/GS1-EPCIS-Version'
      - $ref: '#/components/parameters/GS1-CBV-Version'
      tags:
      - Capture
      summary: Synchronous capture interface for a single EPCIS event.
      description: 'An individual EPCIS event can be created by making a `POST` request on the `/events` resource. Alternatively, the client can also use the `/capture`

        interface and capture a single event.

        '
      requestBody:
        required: true
        description: A single EPCIS event.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EPCISEvent'
            example:
              '@context': https://ref.gs1.org/standards/epcis/epcis-context.jsonld
              eventID: ni:///sha-256;df7bb3c352fef055578554f09f5e2aa41782150ced7bd0b8af24dd3ccb30ba69?ver=CBV2.0
              type: ObjectEvent
              action: OBSERVE
              bizStep: shipping
              disposition: in_transit
              epcList:
              - urn:epc:id:sgtin:0614141.107346.2017
              - urn:epc:id:sgtin:0614141.107346.2018
              eventTime: '2005-04-03T20:33:31.116000-06:00'
              eventTimeZoneOffset: -06:00
              readPoint:
                id: urn:epc:id:sgln:0614141.07346.1234
              bizTransactionList:
              - type: po
                bizTransaction: http://transaction.acme.com/po/12345678
      responses:
        '201':
          description: 'Successfully created (captured) the EPCIS event. The request returns the URL of newly created

            EPCIS event in the Location header.

            '
          headers:
            GS1-EPCIS-Version:
              $ref: '#/components/headers/GS1-EPCIS-Version'
            GS1-CBV-Version:
              $ref: '#/components/headers/GS1-CBV-Version'
            GS1-Extensions:
              $ref: '#/components/headers/GS1-Extensions'
            Location:
              description: "Absolute or relative URL of the newly captured EPCIS event. \n"
              schema:
                example: https://example.com/events/urn:uuid:831c0292-4de1-430a-8255-2aca821abaab
                type: string
                minLength: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EPCISEvent'
        '400':
          description: An error occurred while creating the EPCIS event. The event was rejected.
          content:
            application/problem+json:
              schema:
                allOf:
                - properties:
                    status:
                      type: integer
                      enum:
                      - 400
                      default: 400
                    type:
                      type: string
                      format: uri
                      enum:
                      - epcisException:ValidationException
                - $ref: '#/components/schemas/RFC7807ProblemResponseBody'
        '401':
          $ref: '#/components/responses/401UnauthorizedRequest'
        '403':
          $ref: '#/components/responses/403ClientUnauthorized'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '409':
          $ref: '#/components/responses/409ResourceAlreadyExistsException'
        '413':
          $ref: '#/components/responses/413CapturePayloadTooLarge'
        '415':
          $ref: '#/components/responses/415UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/500ImplementationException'
components:
  schemas:
    error-reason:
      anyOf:
      - $ref: '#/components/schemas/vocab-other-uri'
      - type: string
        enum:
        - did_not_occur
        - incorrect_data
    queryResults:
      type: object
      properties:
        queryName:
          type: string
        subscriptionID:
          type: string
        resultsBody:
          $ref: '#/components/schemas/resultsBody'
      required:
      - queryName
      - resultsBody
    ObjectEvent:
      allOf:
      - $ref: '#/components/schemas/Event'
      - type: object
        properties:
          type:
            type: string
            enum:
            - ObjectEvent
          epcList:
            $ref: '#/components/schemas/epcList'
          quantityList:
            $ref: '#/components/schemas/quantityList'
          action:
            $ref: '#/components/schemas/action'
          bizStep:
            $ref: '#/components/schemas/bizStep'
          disposition:
            $ref: '#/components/schemas/disposition'
          persistentDisposition:
            $ref: '#/components/schemas/persistentDisposition'
          readPoint:
            $ref: '#/components/schemas/readPoint'
          bizLocation:
            $ref: '#/components/schemas/bizLocation'
          bizTransactionList:
            type: array
            items:
              $ref: '#/components/schemas/bizTransaction'
          sourceList:
            type: array
            items:
              $ref: '#/components/schemas/source'
          destinationList:
            type: array
            items:
              $ref: '#/components/schemas/destination'
          sensorElementList:
            type: array
            items:
              $ref: '#/components/schemas/sensorElement'
          ilmd:
            $ref: '#/components/schemas/ilmd'
        required:
        - type
        - action
      - anyOf:
        - type: object
          properties:
            epcList:
              type: array
              minItems: 0
              items:
                $ref: '#/components/schemas/id'
          required:
          - epcList
        - type: object
          properties:
            quantityList:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/quantityElement'
          required:
          - quantityList
        - allOf:
          - type: object
            properties:
              sensorElementList:
                type: array
                items:
                  $ref: '#/components/schemas/sensorElement'
                minItems: 1
            required:
            - sensorElementList
          - type: object
            properties:
              readPoint:
                $ref: '#/components/schemas/readPoint'
            required:
            - readPoint
      - anyOf:
        - type: object
          properties:
            ilmd:
              not: {}
            action:
              type: string
              pattern: ^OBSERVE$
        - type: object
          properties:
            ilmd:
              not: {}
            action:
              type: string
              pattern: ^DELETE$
        - type: object
          properties:
            action:
              type: string
              pattern: ^ADD$
    attribute:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/uri'
        attribute:
          anyOf:
          - type: number
          - type: string
          - type: object
      required:
      - id
    ilmd:
      type: object
    component:
      anyOf:
      - $ref: '#/components/schemas/vocab-other-uri'
      - type: string
        enum:
        - x
        - y
        - z
        - axial_distance
        - azimuth
        - height
        - spherical_radius
        - polar_angle
        - elevation_angle
        - easting
        - northing
        - latitude
        - longitude
        - altitude
    GS1-Extensions:
      example: 'example-epc-ext=http://org1.example.com/epcis/,

        example-epc-ext2=http://vendor.example.com/epcis/

        '
      type: object
    epcisHeader:
      type: object
      properties:
        epcisMasterData:
          type: object
          properties:
            vocabularyList:
              type: array
              items:
                $ref: '#/components/schemas/vocabulary'
    bizStep:
      anyOf:
      - $ref: '#/components/schemas/vocab-other-uri'
      - type: string
        enum:
        - accepting
        - arriving
        - assembling
        - collecting
        - commissioning
        - consigning
        - creating_class_instance
        - cycle_counting
        - decommissioning
        - departing
        - destroying
        - disassembling
        - dispensing
        - encoding
        - entering_exiting
        - holding
        - inspecting
        - installing
        - killing
        - loading
        - other
        - packing
        - picking
        - receiving
        - removing
        - repackaging
        - repairing
        - replacing
        - reserving
        - retail_selling
        - shipping
        - staging_outbound
        - stock_taking
        - stocking
        - storing
        - transporting
        - unloading
        - unpacking
        - void_shipping
        - sensor_reporting
        - sampling
    sensorElement:
      type: object
      properties:
        sensorMetadata:
          $ref: '#/components/schemas/sensorMetadata'
        sensorReport:
          $ref: '#/components/schemas/sensorReportList'
      required:
      - sensorReport
    eventID:
      $ref: '#/components/schemas/uri'
    GS1-Next-Page-Token-Expires:
      example: '2017-07-21T17:32:28Z'
      type: string
      format: date-time
    GS1-EPCIS-Max:
      allOf:
      - example: 2.0.1
      - $ref: '#/components/schemas/version'
    errorDeclaration:
      type: object
      properties:
        declarationTime:
          $ref: '#/components/schemas/time'
        reason:
          $ref: '#/components/schemas/error-reason'
        correctiveEventIDs:
          type: array
          items:
            $ref: '#/components/schemas/eventID'
      required:
      - declarationTime
    certificationInfo:
      anyOf:
      - type: array
        items:
          $ref: '#/components/schemas/uri'
      - $ref: '#/components/schemas/uri'
    bizTransaction-type:
      anyOf:
      - $ref: '#/components/schemas/vocab-other-uri'
      - type: string
        enum:
        - bol
        - cert
        - desadv
        - inv
        - pedigree
        - po
        - poc
        - prodorder
        - recadv
        - rma
        - testprd
        - testres
        - upevt
    resultsBody:
      type: object
      properties:
        eventList:
          $ref: '#/components/schemas/eventList'
        vocabularyList:
          $ref: '#/components/schemas/vocabularyList'
      required:
      - eventList
    disposition:
      anyOf:
      - $ref: '#/components/schemas/vocab-other-uri'
      - type: string
        enum:
        - active
        - container_closed
        - damaged
        - destroyed
        - dispensed
        - disposed
        - encoded
        - expired
        - in_progress
        - in_transit
        - inactive
        - no_pedigree_match
        - non_sellable_other
        - partially_dispensed
        - recalled
        - reserved
        - retail_sold
        - returned
        - sellable_accessible
        - sellable_not_accessible
        - stolen
        - unknown
        - available
        - completeness_verified
        - completeness_inferred
        - conformant
        - container_open
        - mismatch_instance
        - mismatch_class
        - mismatch_quantity
        - needs_replacement
        - non_conformant
        - unavailable
    GS1-EPCIS-Capture-File-Size-Limit:
      example: 1024
      type: integer
      minimum: 1
    sensorReport:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/measurementType'
        exception:
          $ref: '#/components/schemas/sensorAlertType'
        deviceID:
          $ref: '#/components/schemas/uri'
        deviceMetadata:
          $ref: '#/components/schemas/uri'
        rawData:
          $ref: '#/components/schemas/uri'
        dataProcessingMethod:
          $ref: '#/components/schemas/uri'
        bizRules:
          $ref: '#/components/schemas/uri'
        time:
          $ref: '#/components/schemas/time'
        microorganism:
          $ref: '#/components/schemas/uri'
        chemicalSubstance:
          $ref: '#/components/schemas/uri'
        coordinateReferenceSystem:
          $ref: '#/components/schemas/uri'
        value:
          $ref: '#/components/schemas/decimal'
        component:
          $ref: '#/components/schemas/component'
        stringValue:
          $ref: '#/components/schemas/string'
        booleanValue:
          $ref: '#/components/schemas/boolean'
        hexBinaryValue:
          $ref: '#/components/schemas/hexBinary'
        uriValue:
          $ref: '#/components/schemas/uri'
        minValue:
          $ref: '#/components/schemas/decimal'
        maxValue:
          $ref: '#/components/schemas/decimal'
        meanValue:
          $ref: '#/components/schemas/decimal'
        sDev:
          $ref: '#/components/schemas/decimal'
        percRank:
          $ref: '#/components/schemas/decimal'
        percValue:
          $ref: '#/components/schemas/decimal'
        uom:
          $ref: '#/components/schemas/string'
      required:
      - type
    AggregationEvent:
      allOf:
      - $ref: '#/components/schemas/Event'
      - type: object
        properties:
          type:
            type: string
            enum:
            - AggregationEvent
          parentID:
            $ref: '#/components/schemas/uri'
          childEPCs:
            type: array
            items:
              $ref: '#/components/schemas/uri'
          childQuantityList:
            type: array
            items:
              $ref: '#/components/schemas/quantityElement'
          action:
            $ref: '#/components/schemas/action'
          bizStep:
            $ref: '#/components/schemas/bizStep'
          disposition:
            $ref: '#/components/schemas/disposition'
          readPoint:
            $ref: '#/components/schemas/readPoint'
          bizLocation:
            $ref: '#/components/schemas/bizLocation'
          bizTransactionList:
            type: array
            items:
              $ref: '#/components/schemas/bizTransaction'
          sourceList:
            type: array
            items:
              $ref: '#/components/schemas/source'
          destinationList:
            type: array
            items:
              $ref: '#/components/schemas/destination'
          sensorElementList:
            type: array
            items:
              $ref: '#/components/schemas/sensorElement'
        required:
        - type
        - action
      - anyOf:
        - type: object
          properties:
            childEPCs:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/id'
          required:
          - childEPCs
        - type: object
          properties:
            childQuantityList:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/quantityElement'
          required:
          - childQuantityList
        - type: object
          properties:
            action:
              type: string
              pattern: ^DELETE$
    vocab-other-uri:
      type: string
      format: uri
      pattern: ^(?!(urn:epcglobal:cbv|https?:\/\/ns\.gs1\.org/cbv\/))
    AssociationEvent:
      allOf:
      - $ref: '#/components/schemas/Event'
      - type: object
        properties:
          type:
            type: string
            enum:
            - AssociationEvent
          parentID:
            $ref: '#/components/schemas/uri'
          childEPCs:
            type: array
            items:
              $ref: '#/components/schemas/uri'
          childQuantityList:
            type: array
            items:
              $ref: '#/components/schemas/quantityElement'
          action:
            $ref: '#/components/schemas/action'
          bizStep:
            $ref: '#/components/schemas/bizStep'
          disposition:
            $ref: '#/components/schemas/disposition'
          readPoint:
            $ref: '#/components/schemas/readPoint'
          bizLocation:
            $ref: '#/components/schemas/bizLocation'
          bizTransactionList:
            type: array
            items:
              $ref: '#/components/schemas/bizTransaction'
          sourceList:
            type: array
            items:
              $ref: '#/components/schemas/source'
          destinationList:
            type: array
            items:
              $ref: '#/components/schemas/destination'
          sensorElementList:
            type: array
            items:
              $ref: '#/components/schemas/sensorElement'
        required:
        - type
        - action
        - parentID
      - anyOf:
        - type: object
          properties:
            childEPCs:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/id'
          required:
          - childEPCs
        - type: object
          properties:
            childQuantityList:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/quantityElement'
          required:
          - childQuantityList
        - type: object
          properties:
            action:
              type: string
              pattern: ^DELETE$
    NextPageToken:
      description: 'Parameter that points to the next list of results when requesting a list of events that is larger than the value

        specified with the `perPage` parameter. Some technologies refer to this as scrolling.

        A `nextPageToken` may be invalidated through timeout. It is up to the specific implementation to provide

        the mechanisms for invalidating tokens.

        '
      type: string
      example: 3A15506738749783AU6D7DENAKwM2gQRRwGrataeq
    vocab-uri:
      type: string
      format: uri
    time:
      type: string
      format: date-time
    readPoint:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/uri'
      required:
      - id
    epcisDocument:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/id'
        type:
          type: string
          enum:
          - EPCISDocument
        '@context':
          $ref: '#/compo

# --- truncated at 32 KB (68 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gs1/refs/heads/main/openapi/gs1-capture-api-openapi.yml