GS1

GS1 EPCIS 2.0 REST API

The normative REST binding of the GS1 EPCIS 2.0 standard — the sector's supply chain visibility event interface, describing what happened to an object, when, where and why, using Core Business Vocabulary terms. GS1 publishes the contract (OpenAPI 3.0.3, 29 paths) rather than hosting a repository: capture (POST /capture), query (GET /events plus resource-scoped views by epc, bizStep, bizLocation, readPoint, disposition and eventType), named queries (POST /queries), and mandatory webhook subscriptions (POST /queries/{queryName}/subscriptions) where the client supplies a `dest` callback URL and a signatureToken the server echoes back in a GS1-Signature header. Implementers host their own base URL; the specification declares no `servers` block.

OpenAPI Specification

gs1-epcis-2-0-1-openapi.json Raw ↑
{
  "openapi": "3.0.3",
  "info": {
    "version": "2.0.1",
    "title": "EPCIS 2.0 REST Bindings",
    "license": {
      "name": "Apache2"
    }
  },
  "tags": [
    {
      "name": "Top-level",
      "description": "Endpoints to browse or retrieve information about EPCIS resources:\n- events\n- types of events\n- electronic product codes\n- business steps\n- business locations\n- read points\n- dispositions\n"
    },
    {
      "name": "Events",
      "description": "Endpoints that allow you to retrieve EPCIS events as Web resources.\n"
    },
    {
      "name": "Capture",
      "description": "Endpoints to capture EPCIS events in bulk or individually.\n"
    },
    {
      "name": "Queries",
      "description": "Endpoints to create large named or anonymous queries using the EPCIS Query Language. Named queries have a custom\nname and are stored until deleted by the user. Anonymous queries are not persisted and only available to the caller.\nEPCIS events queries also support query subscription.\n"
    },
    {
      "name": "Subscriptions",
      "description": "EPCIS 2.0 supports query subscriptions using Webhooks or Websockets.\n"
    },
    {
      "name": "Discovery",
      "description": "Endpoints to obtain information about the endpoint, such as EPCIS and CBV versions or custom vocabularies.\n"
    }
  ],
  "paths": {
    "/": {
      "options": {
        "tags": [
          "Discovery"
        ],
        "summary": "Query server settings, EPCIS version(s) and related vocabularies/standards.",
        "description": "`OPTIONS` on the root path gives the client an overview of the server's EPCIS-related configurations.\n",
        "responses": {
          "204": {
            "$ref": "#/components/responses/204DefaultDiscoveryResponse"
          },
          "401": {
            "$ref": "#/components/responses/401UnauthorizedRequest"
          },
          "403": {
            "$ref": "#/components/responses/403ClientUnauthorized"
          },
          "406": {
            "$ref": "#/components/responses/406NotAcceptable"
          },
          "500": {
            "$ref": "#/components/responses/500ImplementationException"
          }
        }
      },
      "get": {
        "tags": [
          "Discovery"
        ],
        "summary": "Returns the list of top level resources available for this EPCIS repository.",
        "parameters": [
          {
            "$ref": "#/components/parameters/GS1-Extensions"
          },
          {
            "$ref": "#/components/parameters/GS1-EPCIS-Min"
          },
          {
            "$ref": "#/components/parameters/GS1-EPCIS-Max"
          },
          {
            "$ref": "#/components/parameters/GS1-CBV-Min"
          },
          {
            "$ref": "#/components/parameters/GS1-CBV-Max"
          }
        ],
        "description": "This endpoint returns all the top-level resources currently available in the repository.\n",
        "responses": {
          "200": {
            "$ref": "#/components/responses/200SupportedTopLevel"
          },
          "401": {
            "$ref": "#/components/responses/401UnauthorizedRequest"
          },
          "403": {
            "$ref": "#/components/responses/403ClientUnauthorized"
          },
          "406": {
            "$ref": "#/components/responses/406NotAcceptable"
          },
          "500": {
            "$ref": "#/components/responses/500ImplementationException"
          }
        }
      }
    },
    "/capture": {
      "parameters": [
        {
          "$ref": "#/components/parameters/GS1-Extensions"
        }
      ],
      "options": {
        "tags": [
          "Discovery"
        ],
        "summary": "Discover the settings of the capture interface.",
        "description": "The `OPTIONS` method is used as a discovery service for `/capture`. It describes\n- which EPCIS and CBV versions are supported,\n- the EPCIS and CBV extensions,\n- the maximum payload size as count of EPCIS events (`GS1-EPCIS-Capture-Limit` header) or as a maximum payload size in bytes (`GS1-EPCIS-Capture-File-Size-Limit` header)\n- what the server will do if an error occurred during capture (`GS1-Capture-Error-Behaviour` header).\nThe list of headers is not exhaustive. It only describes the functionality specific to EPCIS 2.0.\n",
        "responses": {
          "204": {
            "$ref": "#/components/responses/204CaptureEndpointDiscovery"
          },
          "401": {
            "$ref": "#/components/responses/401UnauthorizedRequest"
          },
          "403": {
            "$ref": "#/components/responses/403ClientUnauthorized"
          },
          "406": {
            "$ref": "#/components/responses/406NotAcceptable"
          },
          "500": {
            "$ref": "#/components/responses/500ImplementationException"
          }
        }
      },
      "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:\n- EPCIS 2.0 keeps event IDs optional. If event IDs are missing, the server should populate the event ID with a unique value.\nOtherwise, it won't be possible to retrieve these events by eventID.\n- 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.\n- EPCIS master data can be captured in the header (`epcisHeader`) of an `EPCISDocument`.\n- This endpoint should support both `EPCISDocument` and `EPCISQueryDocument` as input.\nTo 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\nlimit (number of EPCIS events) and file size limit (payload size).\nA successful capturing of events does not guarantee that events will be stored. Instead, the server returns a\ncapture id, which the client can use to obtain information about the capture job.\n",
        "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\ncapture job URL in the Location header.\n",
            "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.\n",
                "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\nan error while capturing EPCIS events. To monitor the capture job, use the `/capture/{captureID}` endpoint.\n",
            "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:\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": []
                  },
                  {
                    "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"
        }
      ],
      "options": {
        "tags": [
          "Discovery"
        ],
        "summary": "Query the metadata of the capture job endpoint.",
        "description": "EPCIS 2.0 supports a number of custom headers to describe custom vocabularies and support multiple versions\nof EPCIS and CBV. The `OPTIONS` method allows the client to discover which vocabularies and EPCIS and CBV\nversions are used for a given capture job.\n",
        "responses": {
          "204": {
            "$ref": "#/components/responses/204DefaultDiscoveryResponse"
          },
          "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"
          }
        }
      },
      "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"
        }
      ],
      "options": {
        "tags": [
          "Discovery"
        ],
        "summary": "Query metadata for the EPCIS events endpoint.",
        "description": "EPCIS 2.0 supports a number of custom headers to describe custom vocabularies and support multiple versions\nof EPCIS and CBV. The `OPTIONS` method allows the client to discover which vocabularies and EPCIS and CBV\nversions are used.\n",
        "responses": {
          "204": {
            "$ref": "#/components/responses/204WritableResourcesDiscovery"
          },
          "401": {
            "$ref": "#/components/responses/401UnauthorizedRequest"
          },
          "403": {
            "$ref": "#/components/responses/403ClientUnauthorized"
          },
          "406": {
            "$ref": "#/components/responses/406NotAcceptable"
          },
          "414": {
            "$ref": "#/components/responses/414URLTooLong"
          },
          "500": {
            "$ref": "#/components/responses/500ImplementationException"
          }
        }
      },
      "get": {
        "tags": [
          "Top-level",
          "Events"
        ],
        "summary": "Returns all EPCIS events available in the EPCIS repository.",
        "parameters": [
          {
            "$ref": "#/components/parameters/NextPageToken"
          },
          {
            "$ref": "#/components/parameters/PerPage"
          },
          {
            "$ref": "#/components/parameters/GS1-CBV-Min"
          },
          {
            "$ref": "#/components/parameters/GS1-CBV-Max"
          },
          {
            "$ref": "#/components/parameters/GS1-EPCIS-Min"
          },
          {
            "$ref": "#/components/parameters/GS1-EPCIS-Max"
          },
          {
            "$ref": "#/components/parameters/GS1-EPC-Format"
          },
          {
            "$ref": "#/components/parameters/GS1-CBV-XML-Format"
          },
          {
            "$ref": "#/components/parameters/eventType"
          },
          {
            "$ref": "#/components/parameters/GE_eventTime"
          },
          {
            "$ref": "#/components/parameters/LT_eventTime"
          },
          {
            "$ref": "#/components/parameters/GE_recordTime"
          },
          {
            "$ref": "#/components/parameters/LT_recordTime"
          },
          {
            "$ref": "#/components/parameters/EQ_action"
          },
          {
            "$ref": "#/components/parameters/EQ_bizStep"
          },
          {
            "$ref": "#/components/parameters/EQ_disposition"
          },
          {
            "$ref": "#/components/parameters/EQ_persistentDisposition_set"
          },
          {
            "$ref": "#/components/parameters/EQ_persistentDisposition_unset"
          },
          {
            "$ref": "#/components/parameters/EQ_readPoint"
          },
          {
            "$ref": "#/components/parameters/WD_readPoint"
          },
          {
            "$ref": "#/components/parameters/EQ_bizLocation"
          },
          {
            "$ref": "#/components/parameters/WD_bizLocation"
          },
          {
            "$ref": "#/components/parameters/EQ_transformationID"
          },
          {
            "$ref": "#/components/parameters/MATCH_epc"
          },
          {
            "$ref": "#/components/parameters/MATCH_parentID"
          },
          {
            "$ref": "#/components/parameters/MATCH_inputEPC"
          },
          {
            "$ref": "#/components/parameters/MATCH_outputEPC"
          },
          {
            "$ref": "#/components/parameters/MATCH_anyEPC"
          },
          {
            "$ref": "#/components/parameters/MATCH_epcClass"
          },
          {
            "$ref": "#/components/parameters/MATCH_inputEPCClass"
          },
          {
            "$ref": "#/components/parameters/MATCH_outputEPCClass"
          },
          {
            "$ref": "#/components/parameters/MATCH_anyEPCClass"
          },
          {
            "$ref": "#/components/parameters/EQ_quantity"
          },
          {
            "$ref": "#/components/parameters/GT_quantity"
          },
          {
            "$ref": "#/components/parameters/GE_quantity"
          },
          {
            "$ref": "#/components/parameters/LT_quantity"
          },
          {
            "$ref": "#/components/parameters/LE_quantity"
          },
          {
            "$ref": "#/components/parameters/EQ_eventID"
          },
          {
            "$ref": "#/components/parameters/EXISTS_errorDeclaration"
          },
          {
            "$ref": "#/components/parameters/GE_errorDeclarationTime"
          },
          {
            "$ref": "#/components/parameters/LT_errorDeclarationTime"
          },
          {
            "$ref": "#/components/parameters/EQ_errorReason"
          },
          {
            "$ref": "#/components/parameters/EQ_correctiveEventID"
          },
          {
            "$ref": "#/components/parameters/orderBy"
          },
          {
            "$ref": "#/components/parameters/orderDirection"
          },
          {
            "$ref": "#/components/parameters/eventCountLimit"
          },
          {
            "$ref": "#/components/parameters/maxEventCount"
          },
          {
            "$ref": "#/components/parameters/GE_startTime"
          },
          {
            "$ref": "#/components/parameters/LT_startTime"
          },
          {
            "$ref": "#/components/parameters/GE_endTime"
          },
          {
            "$ref": "#/components/parameters/LT_endTime"
          },
          {
            "$ref": "#/components/parameters/EQ_type"
          },
          {
            "$ref": "#/components/parameters/EQ_deviceID"
          },
          {
            "$ref": "#/components/parameters/EQ_dataProcessingMethod"
          },
          {
            "$ref": "#/components/parameters/EQ_microorganism"
          },
          {
            "$ref": "#/components/parameters/EQ_chemicalSubstance"
          },
          {
            "$ref": "#/components/parameters/EQ_bizRules"
          },
          {
            "$ref": "#/components/parameters/EQ_stringValue"
          },
          {
            "$ref": "#/components/parameters/EQ_hexBinaryValue"
          },
          {
            "$ref": "#/components/parameters/EQ_uriValue"
          },
          {
            "$ref": "#/components/parameters/EQ_booleanValue"
          }
        ],
        "description": "This endpoint allows querying EPCIS events that are currently in the repository. \nEvents can be filtered through URL query string parameters as specified by the EPCIS Query Language. \nAn EPCIS 2.0 query body using the REST interface SHALL be serialised as a JSON object. The value of the query key within that JSON object SHALL validate against the schema defined at:  https://ref.gs1.org/standards/epcis/2.0.1/query-schema.json.\nAn EPCIS 2.0 query may also be expressed via parameters in the URI query string.  The query parameters with fixed fieldnames are included in this OpenAPI interface.  However, this list is not exhaustive and the EPCIS 2.0 standard defines additional query parameters with flexible names, depending on the specific value of `uom`, `type` or `fieldname` that appears within the name of the parameter.\n",
        "responses": {
          "200": {
            "$ref": "#/components/responses/200EPCISQueryDocument"
          },
          "401": {
            "$ref": "#/components/responses/401UnauthorizedRequest"
          },
          "403": {
            "$ref": "#/components/responses/403ClientUnauthorized"
          },
          "406": {
            "$ref": "#/components/responses/406NotAcceptable"
          },
          "414": {
            "$ref": "#/components/responses/414URLTooLong"
          },
          "500": {
            "$ref": "#/components/responses/500ImplementationException"
          }
        }
      },
      "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`\ninterface and capture a single event.\n",
        "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.10734

# --- truncated at 32 KB (342 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gs1/refs/heads/main/openapi/gs1-epcis-2-0-1-openapi.json