GS1

GS1 Subscriptions API

EPCIS 2.0 supports query subscriptions using Webhooks or Websockets.

Operations 4

GET /queries/{queryName}/subscriptions Returns active subscriptions with the option to use pagination if needed.
POST /queries/{queryName}/subscriptions Creates a query subscription.
GET /queries/{queryName}/subscriptions/{subscriptionID} Returns the details of a subscription. This method is useful to verify if a subscription is still active.
DELETE /queries/{queryName}/subscriptions/{subscriptionID} Unsubscribes a client by deleting the query subscription. #

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-subscriptions-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-subscriptions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.0.1
  title: EPCIS 2.0 REST Bindings Subscriptions API
  license:
    name: Apache2
  description: 'EPCIS 2.0 supports query subscriptions using Webhooks or Websockets.

    '
tags:
- name: Subscriptions
  description: 'EPCIS 2.0 supports query subscriptions using Webhooks or Websockets.

    '
paths:
  /queries/{queryName}/subscriptions:
    parameters:
    - $ref: '#/components/parameters/QueryName'
    - $ref: '#/components/parameters/GS1-Extensions'
    get:
      tags:
      - Subscriptions
      summary: Returns active subscriptions with the option to use pagination if needed.
      parameters:
      - $ref: '#/components/parameters/NextPageToken'
      - $ref: '#/components/parameters/PerPage'
      - $ref: '#/components/parameters/GS1-EPCIS-Min'
      - $ref: '#/components/parameters/GS1-EPCIS-Max'
      description: 'The `GET` endpoint is to list all active subscriptions on that query.

        '
      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: Returns active subscriptions.
          content:
            application/json:
              example:
              - subscriptionID: df5a33e3-5aa3-4403-ae01-99b83234e27b
                createdAt: '2017-08-21T17:32:28Z'
                schedule:
                  hour: '1'
                  minute: '5'
              - subscriptionID: df5a33e3-5aa3-5504-bf12-88c94345f38c
                createdAt: '2017-07-21T17:32:28Z'
                stream: true
              schema:
                type: array
                items:
                  allOf:
                  - $ref: '#/components/schemas/AbstractQuerySubscriptionResponse'
                  - oneOf:
                    - $ref: '#/components/schemas/QueryScheduleSubscription'
                    - $ref: '#/components/schemas/QueryStreamSubscription'
        '400':
          $ref: '#/components/responses/400SubscriptionIssues'
        '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'
    post:
      tags:
      - Subscriptions
      summary: Creates a query subscription.
      parameters:
      - $ref: '#/components/parameters/GS1-EPCIS-Version'
      - $ref: '#/components/parameters/GS1-EPC-Format'
      - $ref: '#/components/parameters/GS1-CBV-XML-Format'
      description: "EPCIS 2.0 implementations must support Webhook subscriptions. \nCreating a query subscription requires the client to provide a single endpoint to which the\nserver will send events (as `EPCISQueryDocument`) and an optional string `signatureToken`. \nThis `signatureToken` must be generated by the client and is used by the server to authenticate itself and sign messages when sending events. The signature must be contained on the `GS1-Signature` HTTP header of the server request. \n\nThe choice of signature type is implementation specific but examples would be using HMAC with SHA-256 directly or a wrapper supporting various symmetric or asymetric \ncryptographic algorithms such as Json Web Signature (JWS).\nWhen the client subscribes to a query, it must either set `stream` to `true`, to be notified whenever a new EPCIS\nevent matches the query, or the client must define a query schedule. If these are missing the query subscription is invalid because the server won't\nknow when to notify a client.\n## Scheduled query: Receive query results at 1.05am\nA scheduled query subscription is a time-based query execution. EPCIS 2.0 scheduled queries are scheduled\nin the same manner as cron jobs.\nFor example, this query subscription is scheduled to trigger every morning at 1.05am. By setting\n`reportIfEmpty` to `true`, the client's callback URL (`dest`) will be called even if there are no new events that match\nthe query.\n```\nPOST /queries/MyQuery/subscriptions\n{\n  \"dest\": \"https://client.example.com/queryCallback\",\n  \"signatureToken\": \"13df38d8275b13f05704629e5f1cf3d45d6132d5\",\n  \"reportIfEmpty\": true,\n  \"schedule\": {\n    \"hour\":\"1\",\n    \"minute\": \"5\"\n  }\n}\n```\n## Streaming query subscription: Whenever a captured EPCIS event matches the query criteria\nIf no query schedule is specified, the client must explicitly set `stream` to `true`. This restriction is to\nprevent clients from accidentally subscribing to EPCIS event streams.\n```\nPOST /queries/MyQuery/subscriptions\n{\n  \"dest\": \"https://client.example.com/queryCallback\",\n  \"signatureToken\": \"13df38d8275b13f05704629e5f1cf3d45d6132d5\",\n  \"stream\": true\n}\n```\n"
      requestBody:
        content:
          application/json:
            example:
              dest: https://client.example.com/queryCallback
              signatureToken: 13df38d8275b13f05704629e5f1cf3d45d6132d5
              schedule:
                hour: '1'
                minute: '5'
            schema:
              allOf:
              - $ref: '#/components/schemas/AbstractQuerySubscription'
              - oneOf:
                - $ref: '#/components/schemas/QueryScheduleSubscription'
                - $ref: '#/components/schemas/QueryStreamSubscription'
      responses:
        '201':
          headers:
            Location:
              description: 'The server creates a new subscription for each client and query subscription. The client needs that URL

                to unsubscribe by deleting this resource. The `Location` URL must point to the `subscriptionID` returned

                in the response body. Note that for security reasons the response should not

                return the secret.

                '
              schema:
                type: string
                format: uri
                example: https://www.example.com/queries/MyQuery/subscriptions/df5a33e3-5aa3
          description: Query subscription successful. The subscription is valid until the client unsubscribes.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/AbstractQuerySubscriptionResponse'
                - oneOf:
                  - $ref: '#/components/schemas/QueryScheduleSubscription'
                  - $ref: '#/components/schemas/QueryStreamSubscription'
        '401':
          $ref: '#/components/responses/401UnauthorizedRequest'
        '403':
          $ref: '#/components/responses/403ClientUnauthorized'
        '404':
          $ref: '#/components/responses/404ResourceNotFound'
        '406':
          $ref: '#/components/responses/406NotAcceptable'
        '415':
          $ref: '#/components/responses/415UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/500ImplementationException'
      callbacks:
        querySubscriptionResults:
          '{$request.body#/dest}':
            post:
              summary: Callback invoked by the server to provide the query result to the client.
              parameters:
              - $ref: '#/components/parameters/GS1-Signature'
              requestBody:
                description: 'The server sends the query result to the client as a series of `EPCISQueryDocument`. There is no pagination for a `POST` request, the

                  server must either send each EPCIS event individually or group EPCIS events in manageable batches.

                  If an error occurs server-side, the server must send the error in the format that is already used for

                  returning `4xx` or `5xx` responses.

                  '
                required: true
                content:
                  application/json:
                    schema:
                      oneOf:
                      - $ref: '#/components/schemas/epcisQueryDocument'
                      - $ref: '#/components/schemas/RFC7807ProblemResponseBody'
              responses:
                '200':
                  description: Webhook successfully processed the server request.
                '401':
                  $ref: '#/components/responses/401UnauthorizedRequest'
                '403':
                  $ref: '#/components/responses/403ClientUnauthorized'
                '413':
                  description: 'The `POST` request is too large. The client can''t handle a payload of this size at once and

                    asks the server to send EPCIS events in smaller batches.

                    '
                  content:
                    application/problem+json:
                      schema:
                        allOf:
                        - properties:
                            status:
                              type: integer
                              enum:
                              - 413
                              default: 413
                            type:
                              type: string
                              format: uri
                              enum:
                              - epcisException:QueryTooComplexException
                        - $ref: '#/components/schemas/RFC7807ProblemResponseBody'
                '415':
                  $ref: '#/components/responses/415UnsupportedMediaType'
  /queries/{queryName}/subscriptions/{subscriptionID}:
    parameters:
    - $ref: '#/components/parameters/QueryName'
    - in: path
      name: subscriptionID
      required: true
      example: df5a33e3-5aa3-4403-ae01-99b83234e27b
      schema:
        $ref: '#/components/schemas/subscriptionID'
    get:
      tags:
      - Subscriptions
      summary: Returns the details of a subscription. This method is useful to verify if a subscription is still active.
      parameters:
      - $ref: '#/components/parameters/GS1-EPCIS-Min'
      - $ref: '#/components/parameters/GS1-EPCIS-Max'
      - $ref: '#/components/parameters/GS1-Extensions'
      responses:
        '200':
          headers:
            GS1-Extensions:
              $ref: '#/components/headers/GS1-Extensions'
            GS1-EPCIS-Version:
              $ref: '#/components/headers/GS1-EPCIS-Version'
          description: 'The `GET` method on a query subscription allows the client to get the details of an individual subscription.

            '
          content:
            application/json:
              example:
                subscriptionID: 7cec849f-72f7-4a9d-bc86-080d3c5b7c98
                queryName: GetIlmdExtension
                dest: http://example.com/testWebhookSubscription
                initialRecordTime: '2022-01-06T06:52:24.880Z'
                reportIfEmpty: true
                schedule:
                  second: 0/30
                createdAt: '2022-01-06T06:52:24.889Z'
                lastNotifiedAt: '2022-01-08T06:51:21.889Z'
              schema:
                allOf:
                - $ref: '#/components/schemas/AbstractQuerySubscriptionResponse'
                - oneOf:
                  - $ref: '#/components/schemas/QueryScheduleSubscription'
                  - $ref: '#/components/schemas/QueryStreamSubscription'
        '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'
    delete:
      operationId: unsubscribe
      tags:
      - Subscriptions
      summary: Unsubscribes a client by deleting the query subscription.
      responses:
        '204':
          description: Client unsubscribed from query.
        '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'
components:
  schemas:
    queryResults:
      type: object
      properties:
        queryName:
          type: string
        subscriptionID:
          type: string
        resultsBody:
          $ref: '#/components/schemas/resultsBody'
      required:
      - queryName
      - resultsBody
    error-reason:
      anyOf:
      - $ref: '#/components/schemas/vocab-other-uri'
      - type: string
        enum:
        - did_not_occur
        - incorrect_data
    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$
    ilmd:
      type: object
    attribute:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/uri'
        attribute:
          anyOf:
          - type: number
          - type: string
          - type: object
      required:
      - id
    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
    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'
    QueryStreamSubscription:
      description: "If no query schedule is specified, the client must explicitly set `stream` to `true`. This restriction is to\nprevent clients from accidentally subscribing to EPCIS event streams.\nExample:\n```\nPOST /queries/MyQuery/subscriptions\n{\n  \"dest\": \"https://client.example.com/queryCallback\",\n  \"signatureToken\": \"13df38d8275b13f05704629e5f1cf3d45d6132d5\",\n  \"stream\": true\n}\n```\n"
      type: object
      example:
        stream: true
      required:
      - stream
      properties:
        stream:
          $ref: '#/components/schemas/GS1-Query-Stream'
    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'
    GS1-Signature:
      description: "Used to sign events sent by the repository to subscribers. The choice of signature type is implementation specific but examples would be using HMAC with SHA-256 directly or a wrapper supporting various symmetric or asymetric \ncryptographic algorithms such as Json Web Signature (JWS). \n"
      type: string
      example: eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ
    AbstractQuerySubscriptionResponse:
      example:
        dest: https://client.example.com/queryCallback
        subscriptionID: df5a33e3-5aa3-4403-ae01-99b83234e27b
        stream: true
        createdAt: '2017-08-21T17:32:28Z'
        lastNotifiedAt: '2022-01-08T06:51:21.889Z'
      type: object
      description: 'This schema contains shared features of EPCIS query subscriptions response.

        '
      required:
      - dest
      - subscriptionID
      - createdAt
      properties:
        dest:
          $ref: '#/components/schemas/dest'
        subscriptionID:
          $ref: '#/components/schemas/subscriptionID'
        createdAt:
          example: '2022-02-27T17:32:28Z'
          type: string
          format: date-time
        lastNotifiedAt:
          example: '2022-07-09T17:32:28Z'
          type: string
          format: date-time
          description: The last time the target client was notified and responded with a 200 OK.
        initialRecordTime:
          $ref: '#/components/schemas/GS1-Query-InitialRecordTime'
        minRecordTime:
          $ref: '#/components/schemas/GS1-Query-Min-Record-Time'
        epcFormat:
          $ref: '#/components/schemas/GS1-EPC-Format'
    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
    QueryName:
      description: Unique query name.
      type: string
      example: myQuery
    GS1-EPC-Format:
      example: Always_GS1_Digital_Link
      type: string
      enum:
      - No_Preference
      - Always_GS1_Digital_Link
      - Always_EPC_URN
      - Never_Translates
    GS1-Query-DayOfMonth:
      description: 'Specifies that the query time must have a matching day of month value. The range for this parameter is 1 through

        31, inclusive.

        '
      example: 1
      type: string
      pattern: (\g<element>,)*\g<element>|(?<element>(\g<number>|\g<range>))|(?<range>(\[\g<number>\-\g<number>\]))|(?<number>([1-31]))
    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$
    GS1-Query-InitialRecordTime:
      description: 'Used to specify a time to constrain what resources are considered when processing a query

        subscription. This value only applies the first time a subscriber receives events. If omitted, the default

        value is the current time.

        '
      type: string
      format: date-time
      example: '2020-04-04T20:33:31.116-06:00'
    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
    GS1-Query-DayOfWeek:
      description: 'Specifies that the query time must have a matching day of week value. The range for this parameter is 1 through

        7, inclusive, with 1 denoting Monday, 2 denoting Tuesday, and so forth, up to 7 denoting Sunday.

        '
      example: 1
      type: string
      pattern: (\g<element>,)*\g<element>|(?<element>(\g<number>|\g<range>))|(?<range>(\[\g<number>\-\g<number>\]))|(?<number>([1-7]))
    GS1-Query-Hour:
      description: 'Specifies that the query time must have a matching hour value. The range for this parameter is 0 through 23,

        inclusive, with 0 denoting the hour that begins at midnight, and 23 denoting the hour that ends at midnight.

        '
      example: 1
      type: string
      pattern: (\g<element>,)*\g<element>|(?<element>(\g<number>|\g<range>))|(?<range>(\[\g<number>\-\g<number>\]))|(?<number>([0-23]))
    GS1-Query-Min-Record-Time:
      example: '2020-04-04T20:33:31.116-06:00'
      description: "In the context of an active query subscription, its value is set initially to \n`initialRecordTime` and then updated to the most recent execution timestamp \nfor the standing query.\n"
      type: string
      format: date-time
    id:
      type: string
      format: uri
    uom:
      type: string
      pattern: ^[A-Z0-9]{2,3}$
    GS1-Query-Second:
      description: 'Specifies that the query time must have a matching seconds value. The range for this parameter is 0

        through 59, inclusive.

        '
      example: 0
      type: string
      pattern: (\g<element>,)*\g<element>|(?<element>(\g<number>|\g<range>))|(?<range>(\[\g<number>\-\g<number>\]))|(?<number>([0-59]))
    source-dest-type:
      anyOf:
      - $ref: '#/components/schemas/vocab-other-uri'
      - type: string
        enum:
        - owning_party
        - possessing_party
        - location
    hexBinary:
      type: string
      pattern: ^[A-Fa-f0-9]+$
    AbstractQuerySubscription:
      example:
        dest: https://client.example.com/queryCallback
        signatureToken: 13df38d8275b13f05704629e5f1cf3d45d6132d5
      type: object
      description: 'This schema contains shared features of EPCIS query subscriptions. If the schema is used in a response, the

        `secret` should not be fully revealed.

        '
      required:
      - dest
      - secret
      properties:
        dest:
          $ref: '#/components/schemas/dest'
        signatureToken:
          example: 13df38d8275b13f05704629e5f1cf3d45d6132d5
          type: string
          description: Secret generated by th

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