Takes a batch of code definitions and returns, for each one, the payload to encode in a symbol plus its human readable interpretation. Nothing is rendered as an image: you get the text and feed it to your own 2D barcode renderer.
A definition that fails validation does not fail the request. The status is 200 OK even when every item was rejected and codes comes back empty, so check errors rather than the status code.
Requires the write:codes scope.
Set compression on each definition to EPC_BASE64 or EPC_HEX for a compressed Digital Link. Omit or send null for an uncompressed URI. Compression requires a GTIN and serial number.
ais, linkType, context and extensionParameters may be omitted. Omitting linkType or
context (or sending null) adds no corresponding query parameter. Omitting
ais or extensionParameters (or sending null) is equivalent to an empty list ([]).
Each item may independently set compression to EPC_BASE64 or EPC_HEX.
Omit it or send null for an uncompressed URI. Compressed and uncompressed codes can share a batch.
The same prerequisites as single generation apply:
digitalLinkStem, primary key 01, serial number AI 21, and none of the AIs 03, 717, 8014 or 8040–8043.
The resulting barcodeText uses an ex or eh path; hri keeps the original GS1 data.
Invalid compression is reported for the affected item in errors, with code
Validation.Invalid.compression and path compression. The batch status remains 200 OK.
Browse the official GS1 Application Identifiers directory to choose
identifiers for primaryKey and ais. It describes their meaning, value format, mandatory
associations, invalid pairings and permitted use in GS1 Digital Link URIs.The API validates against its bundled GS1 Barcode Syntax Dictionary. Not every identifier in
the directory can be used as a primary key or combined with every other AI.
Every item of a batch is validated on its own, so a rejected item does not fail the request. The
status stays 200 OK even when every item was rejected and codes comes back empty, which means you
should check errors rather than the status code.Each request item may include a string reference of your choice. The API echoes it unchanged
in either codes or errors. If omitted or null, the reference is the item’s zero-based position
in the original request, returned as a string: "0", "1", and so on. Empty strings are preserved.
Use distinct references and avoid collisions with generated references within a batch.
References do not provide deduplication or idempotency.
The identifying application identifier. With a digitalLinkStem it must be a GS1 Digital Link primary key in the GS1 Barcode Syntax Dictionary; without one, 03 is additionally accepted, the identifier for made-to-order trade items.
GTIN (01) accepts 8, 12, 13 or 14 digits, verifies the mod-10 check digit and normalises the value to 14 digits, so the value you get back may be longer than the one you sent.
GS1 application identifier. Browse the official GS1 Application Identifiers directory for meanings, value formats, required associations and Digital Link usage. The API validates identifiers against its bundled GS1 Barcode Syntax Dictionary; not every AI is valid as a primary key or in every combination.
Optional correlation identifier, echoed unchanged on success or failure. When omitted or null, the API returns the zero-based input position as a string, e.g. 0 becomes "0". Empty strings are preserved. Avoid collisions with generated references. This is not an idempotency key.
Further application identifiers. Pass [] for none.
Each key must exist in the GS1 Barcode Syntax Dictionary and its value must match the format that dictionary declares. An AI may not repeat the primary key, keys may not repeat each other, and GS1 "requires" and "excludes" relations between AIs are enforced.
With a digitalLinkStem every AI must be either a path qualifier of the chosen primary key, taken from a single consistent qualifier sequence, or a data attribute that GS1 Digital Link URI Syntax allows in the query string. Qualifiers keep the order GS1 defines, not the order you send.
Temperature AIs (4330 to 4333) are normalised for you: the magnitude is padded to six digits and a negative value keeps its trailing minus.
When compression is selected, the EPC path carries these AIs instead of separate path and query fields.
GS1 application identifier. Browse the official GS1 Application Identifiers directory for meanings, value formats, required associations and Digital Link usage. The API validates identifiers against its bundled GS1 Barcode Syntax Dictionary; not every AI is valid as a primary key or in every combination.
Optional custom query parameters appended to a GS1 Digital Link URI. Omit, send null or pass [] for none.
Only with a digitalLinkStem; a non-empty list without one is rejected. Keys must not be linkType or context, must contain at least one non-digit, must be unique, and both keys and values are limited to unreserved ASCII and URI punctuation.
The origin a GS1 Digital Link path is appended to. Supplying it is what makes this a GS1 Digital Link: send a stem and you get a URI, leave it out and you get a GS1 element string. Must be http or https with a host, and carry no userinfo, query or fragment. A single trailing slash is stripped; empty path segments are rejected.
The GS1 link type the URI resolves to. Only with a digitalLinkStem. A gs1: value must be one the generator offers from the GS1 Web Vocabulary page types; gs1:defaultPage, gs1:defaultPageMulti and gs1:handledBy are not selectable. Any other value must be an absolute http or https URI.
Optional EPC compression of a GS1 Digital Link URI. EPC_BASE64 encodes the EPC binary in URL-safe Base64 (an ex path); EPC_HEX uses hexadecimal (an eh path). Omit or send null for an uncompressed URI.
Requires primary key 01 (GTIN), AI 21 (serial number), and digitalLinkStem. AIs 03, 717, 8014 and 8040–8043 cannot be stored in EPC binary, so a code that contains any of them cannot be compressed. The EPC path carries the AIs; extensionParameters, linkType, and context remain query parameters. Human-readable interpretation (hri) is unchanged.
An unknown or inapplicable value produces Validation.Invalid.compression: HTTP 422 for a single code, or a per-item error in the batch HTTP 200 response.
Available options:
EPC_BASE64,
EPC_HEX,
null
Examples:
"EPC_BASE64"
"EPC_HEX"
Response
Generated codes in codes, rejected definitions in errors. Both carry reference, which ties an entry back to the item you sent.
The payload to encode. With a digitalLinkStem the GS1 Digital Link URI; without one, the GS1 element string, where parentheses inside a value are escaped as ^040 and ^041 so that a renderer places the FNC1 separators correctly. With compression, this is the URI with an EPC ex or eh path.
The field at fault, so ais.2 is the third entry of ais.
Example:
"primaryKey"
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Thing Identity","colors":{"primary":"#18181B","light":"#FAFAFA","dark":"#18181B"},"logo":{"light":"https://mintcdn.com/thing-identity/kRu3PmIiw7bjxaKS/logo/light.svg?fit=max\u0026auto=format\u0026n=kRu3PmIiw7bjxaKS\u0026q=85\u0026s=5b0ca7ae1844542e1d6472bfd08fcb66","dark":"https://mintcdn.com/thing-identity/kRu3PmIiw7bjxaKS/logo/dark.svg?fit=max\u0026auto=format\u0026n=kRu3PmIiw7bjxaKS\u0026q=85\u0026s=12ef220c8158b022a6a3ee4cfb188ecf","href":"https://thingidentity.com"},"favicon":"https://mintcdn.com/thing-identity/kRu3PmIiw7bjxaKS/favicon.svg?fit=max\u0026auto=format\u0026n=kRu3PmIiw7bjxaKS\u0026q=85\u0026s=90d75e0448360010512d1be2344f0683","api":{"params":{"expanded":"all"},"examples":{"languages":["curl","javascript","python"]}},"appearance":{"default":"system"},"navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://thingidentity.com/dashboard"}},"footer":{"socials":{"github":"https://github.com/thingidentity","linkedin":"https://linkedin.com/company/thingidentity"}},"styling":{"eyebrows":"breadcrumbs","latex":false},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://thingidentity.com/blog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"thing-identity","hasAudioNarration":false,"actualSubdomain":"thing-identity","customDomains":["docs.thingidentity.com"],"gitSource":{"type":"github","owner":"thingidentity","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aba87ec9d1721df0ac6e555","collectionId":"81b7d3d8-ea66-42f1-9692-54ff1ad3ad4b","liveDeploymentHistoryId":"6aba87ec9d1721df0ac6e555","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"}},"buildId":"6aba87ec9d1721df0ac6e555","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"API Reference","count":12},{"language":"default","tag":"2D Barcodes","count":4},{"language":"default","tag":"GS1 Resolver","count":3},{"language":"default","tag":"API Documentation","count":2},{"language":"default","tag":"Authentication","count":1},{"language":"default","tag":"Guides","count":1},{"language":"default","tag":"Get Started","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--ti-radius:0.375rem}@media (min-width:1024px){#navbar div:has(>#search-bar-entry){position:absolute;left:50%;width:min(34rem,40vw);transform:translateX(-50%)}}#search-bar-entry,#topbar-cta-button>a{border-radius:var(--ti-radius)}#navbar .nav-logo{height:1.25rem}"}],"page":{"pagePath":"api-reference/endpoints/generate-codes","slug":"/api-reference/endpoints/generate-codes","pageMetadata":{"title":"Batch Generate 2D barcodes","openapi":"openapi.json POST /codes","description":"Takes a batch of code definitions and returns, for each one, the payload to encode in a symbol plus its human readable interpretation. Nothing is rendered as an image: you get the text and feed it to your own 2D barcode renderer.\n\nA definition that fails validation does not fail the request. The status is `200 OK` even when every item was rejected and `codes` comes back empty, so check `errors` rather than the status code.\n\nRequires the `write:codes` scope.\n\nSet `compression` on each definition to `EPC_BASE64` or `EPC_HEX` for a compressed Digital Link. Omit or send null for an uncompressed URI. Compression requires a GTIN and serial number.","href":"/api-reference/endpoints/generate-codes"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Takes a batch of code definitions and returns, for each one, the payload to encode in a symbol plus its human readable interpretation. Nothing is rendered as an image: you get the text and feed it to your own 2D barcode renderer.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A definition that fails validation does not fail the request. The status is \", _jsx(_components.code, {\n children: \"200 OK\"\n }), \" even when every item was rejected and \", _jsx(_components.code, {\n children: \"codes\"\n }), \" comes back empty, so check \", _jsx(_components.code, {\n children: \"errors\"\n }), \" rather than the status code.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Requires the \", _jsx(_components.code, {\n children: \"write:codes\"\n }), \" scope.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Set \", _jsx(_components.code, {\n children: \"compression\"\n }), \" on each definition to \", _jsx(_components.code, {\n children: \"EPC_BASE64\"\n }), \" or \", _jsx(_components.code, {\n children: \"EPC_HEX\"\n }), \" for a compressed Digital Link. Omit or send null for an uncompressed URI. Compression requires a GTIN and serial number.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Generate multiple codes in one request. For a single definition without a list wrapper, use\n`,_jsx(_components.a,{href:`/api-reference/endpoints/generate-code`,children:`Generate 2D barcode`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`optional-parameters`,children:`Optional parameters`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`ais`}),`, `,_jsx(_components.code,{children:`linkType`}),`, `,_jsx(_components.code,{children:`context`}),` and `,_jsx(_components.code,{children:`extensionParameters`}),` may be omitted. Omitting `,_jsx(_components.code,{children:`linkType`}),` or\n`,_jsx(_components.code,{children:`context`}),` (or sending `,_jsx(_components.code,{children:`null`}),`) adds no corresponding query parameter. Omitting\n`,_jsx(_components.code,{children:`ais`}),` or `,_jsx(_components.code,{children:`extensionParameters`}),` (or sending `,_jsx(_components.code,{children:`null`}),`) is equivalent to an empty list (`,_jsx(_components.code,{children:`[]`}),`).`]}),`\n`,_jsx(Heading,{level:`2`,id:`compression`,children:`Compression`}),`\n`,_jsxs(_components.p,{children:[`Each item may independently set `,_jsx(_components.code,{children:`compression`}),` to `,_jsx(_components.code,{children:`EPC_BASE64`}),` or `,_jsx(_components.code,{children:`EPC_HEX`}),`.\nOmit it or send `,_jsx(_components.code,{children:`null`}),` for an uncompressed URI. Compressed and uncompressed codes can share a batch.\nThe `,_jsx(_components.a,{href:`/api-reference/endpoints/generate-code#compression`,children:`same prerequisites as single generation`}),` apply:\n`,_jsx(_components.code,{children:`digitalLinkStem`}),`, primary key `,_jsx(_components.code,{children:`01`}),`, serial number AI `,_jsx(_components.code,{children:`21`}),`, and none of the AIs `,_jsx(_components.code,{children:`03`}),`, `,_jsx(_components.code,{children:`717`}),`, `,_jsx(_components.code,{children:`8014`}),` or `,_jsx(_components.code,{children:`8040`}),`–`,_jsx(_components.code,{children:`8043`}),`.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`18`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`18`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"codes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"reference\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"base64-label\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"digitalLinkStem\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://thingidentity.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"primaryKey\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"01\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"09528765123457\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ais\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [{ `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"21\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"123456789123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"compression\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"EPC_BASE64\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"reference\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"hex-label\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"digitalLinkStem\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://thingidentity.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"primaryKey\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"01\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"09528765123457\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ais\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [{ `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"21\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"123456789123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"compression\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"EPC_HEX\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The resulting `,_jsx(_components.code,{children:`barcodeText`}),` uses an `,_jsx(_components.code,{children:`ex`}),` or `,_jsx(_components.code,{children:`eh`}),` path; `,_jsx(_components.code,{children:`hri`}),` keeps the original GS1 data.\nInvalid compression is reported for the affected item in `,_jsx(_components.code,{children:`errors`}),`, with code\n`,_jsx(_components.code,{children:`Validation.Invalid.compression`}),` and path `,_jsx(_components.code,{children:`compression`}),`. The batch status remains `,_jsx(_components.code,{children:`200 OK`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`gs1-application-identifiers`,children:`GS1 Application Identifiers`}),`\n`,_jsxs(_components.p,{children:[`Browse the official `,_jsx(_components.a,{href:`https://ref.gs1.org/ai/`,children:`GS1 Application Identifiers directory`}),` to choose\nidentifiers for `,_jsx(_components.code,{children:`primaryKey`}),` and `,_jsx(_components.code,{children:`ais`}),`. It describes their meaning, value format, mandatory\nassociations, invalid pairings and permitted use in GS1 Digital Link URIs.`]}),`\n`,_jsx(_components.p,{children:`The API validates against its bundled GS1 Barcode Syntax Dictionary. Not every identifier in\nthe directory can be used as a primary key or combined with every other AI.`}),`\n`,_jsx(Heading,{level:`2`,id:`partial-success`,children:`Partial success`}),`\n`,_jsxs(_components.p,{children:[`Every item of a batch is validated on its own, so a rejected item does not fail the request. The\nstatus stays `,_jsx(_components.code,{children:`200 OK`}),` even when every item was rejected and `,_jsx(_components.code,{children:`codes`}),` comes back empty, which means you\nshould `,_jsxs(_components.strong,{children:[`check `,_jsx(_components.code,{children:`errors`}),` rather than the status code`]}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Each request item may include a string `,_jsx(_components.code,{children:`reference`}),` of your choice. The API echoes it unchanged\nin either `,_jsx(_components.code,{children:`codes`}),` or `,_jsx(_components.code,{children:`errors`}),`. If omitted or `,_jsx(_components.code,{children:`null`}),`, the reference is the item’s zero-based position\nin the original request, returned as a string: `,_jsx(_components.code,{children:`\"0\"`}),`, `,_jsx(_components.code,{children:`\"1\"`}),`, and so on. Empty strings are preserved.\nUse distinct references and avoid collisions with generated references within a batch.\nReferences do not provide deduplication or idempotency.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`15`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"codes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"errors\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"reference\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"product-label\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"errors\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Validation.Invalid.primaryKey\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"primaryKey\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"args\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: []`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`validation-codes`,children:`Validation codes`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`path`}),` matches the part of the definition at fault, so `,_jsx(_components.code,{children:`ais.2`}),` is the third entry of `,_jsx(_components.code,{children:`ais`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.primaryKey`})}),_jsx(_components.td,{children:`Unknown AI, an AI not accepted as a primary key here, or a value that fails its format or check digit.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.ais`})}),_jsxs(_components.td,{children:[`Duplicate AI keys in `,_jsx(_components.code,{children:`ais`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.ais.\u003cindex>`})}),_jsx(_components.td,{children:`Unknown AI, a value that fails its format, or an AI repeating the primary key.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.ais.qualifiers`})}),_jsx(_components.td,{children:`The path qualifiers do not all come from one qualifier sequence of the chosen primary key.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.ais.\u003cindex>.digitalLink`})}),_jsx(_components.td,{children:`The AI is neither a qualifier of the primary key nor a permitted GS1 Digital Link data attribute.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.relations.\u003cai>.requires`})}),_jsx(_components.td,{children:`The AI requires another AI that is absent.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.relations.\u003cai>.excludes.\u003cother>`})}),_jsx(_components.td,{children:`Two mutually exclusive AIs were sent together.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.digitalLinkStem`})}),_jsx(_components.td,{children:`Not an acceptable origin.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.linkType`})}),_jsxs(_components.td,{children:[`Not an offered `,_jsx(_components.code,{children:`gs1:`}),` link type and not an absolute HTTP(S) URI.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.extensionParameters`})}),_jsxs(_components.td,{children:[`Sent without a `,_jsx(_components.code,{children:`digitalLinkStem`}),`, or duplicate keys.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.extensionParameters.\u003cindex>`})}),_jsx(_components.td,{children:`Reserved or malformed key, or a value outside the allowed characters.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.context`})}),_jsx(_components.td,{children:`Value outside the allowed characters.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Validation.Invalid.compression`})}),_jsx(_components.td,{children:`Unknown compression, missing GTIN or serial, or an AI that cannot be stored in EPC binary.`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Batch Generate 2D barcodes","openapi":"openapi.json POST /codes","description":"Takes a batch of code definitions and returns, for each one, the payload to encode in a symbol plus its human readable interpretation. Nothing is rendered as an image: you get the text and feed it to your own 2D barcode renderer.\n\nA definition that fails validation does not fail the request. The status is `200 OK` even when every item was rejected and `codes` comes back empty, so check `errors` rather than the status code.\n\nRequires the `write:codes` scope.\n\nSet `compression` on each definition to `EPC_BASE64` or `EPC_HEX` for a compressed Digital Link. Omit or send null for an uncompressed URI. Compression requires a GTIN and serial number.","href":"/api-reference/endpoints/generate-codes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Optional parameters","slug":"optional-parameters","depth":2,"children":[]},{"title":"Compression","slug":"compression","depth":2,"children":[]},{"title":"GS1 Application Identifiers","slug":"gs1-application-identifiers","depth":2,"children":[]},{"title":"Partial success","slug":"partial-success","depth":2,"children":[{"title":"Validation codes","slug":"validation-codes","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Codes"],"summary":"Batch Generate 2D barcodes","description":"Takes a batch of code definitions and returns, for each one, the payload to encode in a symbol plus its human readable interpretation. Nothing is rendered as an image: you get the text and feed it to your own 2D barcode renderer.\n\nA definition that fails validation does not fail the request. The status is `200 OK` even when every item was rejected and `codes` comes back empty, so check `errors` rather than the status code.\n\nRequires the `write:codes` scope.\n\nSet `compression` on each definition to `EPC_BASE64` or `EPC_HEX` for a compressed Digital Link. Omit or send null for an uncompressed URI. Compression requires a GTIN and serial number.","operationId":"generateCodes","requestBody":"445f8dae-3423-42e7-9842-87cf406f2cfd","responses":{"200":"ffd86a29-ffa3-438b-b9bd-859fdf138441"},"method":"post","type":"path","servers":["751c3ee5-c165-428a-a409-06e1fbd3b211"],"security":["5e1efa94-7214-484a-9905-e1c0370b3c91"],"path":"/codes","baseUrlOptions":["https://api.thingidentity.com"],"title":"Batch Generate 2D barcodes","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/vnd.thingidentity.public.v1+json":{"schema":{"type":"object","required":["codes"],"properties":{"codes":{"type":"array","description":"The definitions to generate. Items are processed in order and each one is validated on its own.","items":{"type":"object","required":["primaryKey"],"properties":{"primaryKey":{"type":"object","description":"The identifying application identifier. With a `digitalLinkStem` it must be a GS1 Digital Link primary key in the GS1 Barcode Syntax Dictionary; without one, `03` is additionally accepted, the identifier for made-to-order trade items.\n\nGTIN (`01`) accepts 8, 12, 13 or 14 digits, verifies the mod-10 check digit and normalises the value to 14 digits, so the value you get back may be longer than the one you sent.","required":["key","value"],"properties":{"key":{"type":"string","description":"GS1 application identifier. Browse the official [GS1 Application Identifiers directory](https://ref.gs1.org/ai/) for meanings, value formats, required associations and Digital Link usage. The API validates identifiers against its bundled GS1 Barcode Syntax Dictionary; not every AI is valid as a primary key or in every combination.","examples":["01"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].primaryKey.key","typeLabel":"string"},"value":{"type":"string","examples":["09521234543213"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].primaryKey.value","typeLabel":"string"}},"isRequired":true,"uniqueKey":"codes.items.[INDEX].primaryKey","typeLabel":"object"},"reference":{"oneOf":[{"type":"string","description":"Optional correlation identifier, echoed unchanged on success or failure. When omitted or null, the API returns the zero-based input position as a string, e.g. 0 becomes \"0\". Empty strings are preserved. Avoid collisions with generated references. This is not an idempotency key.","examples":["product-label"],"uniqueKey":"codes.items.[INDEX].reference.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional correlation identifier, echoed unchanged on success or failure. When omitted or null, the API returns the zero-based input position as a string, e.g. 0 becomes \"0\". Empty strings are preserved. Avoid collisions with generated references. This is not an idempotency key.","examples":["product-label"],"uniqueKey":"codes.items.[INDEX].reference.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].reference","typeLabel":"string | null"},"ais":{"oneOf":[{"type":"array","description":"Further application identifiers. Pass `[]` for none.\n\nEach key must exist in the GS1 Barcode Syntax Dictionary and its value must match the format that dictionary declares. An AI may not repeat the primary key, keys may not repeat each other, and GS1 \"requires\" and \"excludes\" relations between AIs are enforced.\n\nWith a `digitalLinkStem` every AI must be either a path qualifier of the chosen primary key, taken from a single consistent qualifier sequence, or a data attribute that GS1 Digital Link URI Syntax allows in the query string. Qualifiers keep the order GS1 defines, not the order you send.\n\nTemperature AIs (`4330` to `4333`) are normalised for you: the magnitude is padded to six digits and a negative value keeps its trailing minus.\n\nWhen compression is selected, the EPC path carries these AIs instead of separate path and query fields.","items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","description":"GS1 application identifier. Browse the official [GS1 Application Identifiers directory](https://ref.gs1.org/ai/) for meanings, value formats, required associations and Digital Link usage. The API validates identifiers against its bundled GS1 Barcode Syntax Dictionary; not every AI is valid as a primary key or in every combination.","examples":["01"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].ais.oneOf.0.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","examples":["09521234543213"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].ais.oneOf.0.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"codes.items.[INDEX].ais.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"codes.items.[INDEX].ais.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Further application identifiers. Pass `[]` for none.\n\nEach key must exist in the GS1 Barcode Syntax Dictionary and its value must match the format that dictionary declares. An AI may not repeat the primary key, keys may not repeat each other, and GS1 \"requires\" and \"excludes\" relations between AIs are enforced.\n\nWith a `digitalLinkStem` every AI must be either a path qualifier of the chosen primary key, taken from a single consistent qualifier sequence, or a data attribute that GS1 Digital Link URI Syntax allows in the query string. Qualifiers keep the order GS1 defines, not the order you send.\n\nTemperature AIs (`4330` to `4333`) are normalised for you: the magnitude is padded to six digits and a negative value keeps its trailing minus.\n\nWhen compression is selected, the EPC path carries these AIs instead of separate path and query fields.","items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","description":"GS1 application identifier. Browse the official [GS1 Application Identifiers directory](https://ref.gs1.org/ai/) for meanings, value formats, required associations and Digital Link usage. The API validates identifiers against its bundled GS1 Barcode Syntax Dictionary; not every AI is valid as a primary key or in every combination.","examples":["01"]},"value":{"type":"string","examples":["09521234543213"]}}},"uniqueKey":"codes.items.[INDEX].ais.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].ais","typeLabel":"object[] | null"},"extensionParameters":{"oneOf":[{"type":"array","description":"Optional custom query parameters appended to a GS1 Digital Link URI. Omit, send null or pass `[]` for none.\n\nOnly with a `digitalLinkStem`; a non-empty list without one is rejected. Keys must not be `linkType` or `context`, must contain at least one non-digit, must be unique, and both keys and values are limited to unreserved ASCII and URI punctuation.","items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","description":"Query parameter name. Not `linkType` or `context`, and it must contain at least one non-digit.","examples":["batch"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].extensionParameters.oneOf.0.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","examples":["A42"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].extensionParameters.oneOf.0.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"codes.items.[INDEX].extensionParameters.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"codes.items.[INDEX].extensionParameters.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Optional custom query parameters appended to a GS1 Digital Link URI. Omit, send null or pass `[]` for none.\n\nOnly with a `digitalLinkStem`; a non-empty list without one is rejected. Keys must not be `linkType` or `context`, must contain at least one non-digit, must be unique, and both keys and values are limited to unreserved ASCII and URI punctuation.","items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","description":"Query parameter name. Not `linkType` or `context`, and it must contain at least one non-digit.","examples":["batch"]},"value":{"type":"string","examples":["A42"]}}},"uniqueKey":"codes.items.[INDEX].extensionParameters.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].extensionParameters","typeLabel":"object[] | null"},"digitalLinkStem":{"oneOf":[{"type":"string","description":"The origin a GS1 Digital Link path is appended to. Supplying it is what makes this a GS1 Digital Link: send a stem and you get a URI, leave it out and you get a GS1 element string. Must be `http` or `https` with a host, and carry no userinfo, query or fragment. A single trailing slash is stripped; empty path segments are rejected.","examples":["https://gtin.at"],"uniqueKey":"codes.items.[INDEX].digitalLinkStem.oneOf.0","typeLabel":"string"},{"type":"null","description":"The origin a GS1 Digital Link path is appended to. Supplying it is what makes this a GS1 Digital Link: send a stem and you get a URI, leave it out and you get a GS1 element string. Must be `http` or `https` with a host, and carry no userinfo, query or fragment. A single trailing slash is stripped; empty path segments are rejected.","examples":["https://gtin.at"],"uniqueKey":"codes.items.[INDEX].digitalLinkStem.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].digitalLinkStem","typeLabel":"string | null"},"linkType":{"oneOf":[{"type":"string","description":"The GS1 link type the URI resolves to. Only with a `digitalLinkStem`. A `gs1:` value must be one the generator offers from the [GS1 Web Vocabulary](https://ref.gs1.org/voc/) page types; `gs1:defaultPage`, `gs1:defaultPageMulti` and `gs1:handledBy` are not selectable. Any other value must be an absolute `http` or `https` URI.","examples":["gs1:pip"],"uniqueKey":"codes.items.[INDEX].linkType.oneOf.0","typeLabel":"string"},{"type":"null","description":"The GS1 link type the URI resolves to. Only with a `digitalLinkStem`. A `gs1:` value must be one the generator offers from the [GS1 Web Vocabulary](https://ref.gs1.org/voc/) page types; `gs1:defaultPage`, `gs1:defaultPageMulti` and `gs1:handledBy` are not selectable. Any other value must be an absolute `http` or `https` URI.","examples":["gs1:pip"],"uniqueKey":"codes.items.[INDEX].linkType.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].linkType","typeLabel":"string | null"},"context":{"oneOf":[{"type":"string","description":"Value for the GS1 Digital Link `context` query parameter. Only with a `digitalLinkStem`, same character rules as extension parameter values.","examples":["dpp"],"uniqueKey":"codes.items.[INDEX].context.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value for the GS1 Digital Link `context` query parameter. Only with a `digitalLinkStem`, same character rules as extension parameter values.","examples":["dpp"],"uniqueKey":"codes.items.[INDEX].context.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].context","typeLabel":"string | null"},"compression":{"oneOf":[{"type":"string","enum":["EPC_BASE64","EPC_HEX",null],"description":"Optional EPC compression of a GS1 Digital Link URI. `EPC_BASE64` encodes the EPC binary in URL-safe Base64 (an `ex` path); `EPC_HEX` uses hexadecimal (an `eh` path). Omit or send null for an uncompressed URI.\n\nRequires primary key `01` (GTIN), AI `21` (serial number), and `digitalLinkStem`. AIs `03`, `717`, `8014` and `8040`–`8043` cannot be stored in EPC binary, so a code that contains any of them cannot be compressed. The EPC path carries the AIs; `extensionParameters`, `linkType`, and `context` remain query parameters. Human-readable interpretation (`hri`) is unchanged.\n\nAn unknown or inapplicable value produces `Validation.Invalid.compression`: HTTP 422 for a single code, or a per-item error in the batch HTTP 200 response.","examples":["EPC_BASE64","EPC_HEX"],"uniqueKey":"codes.items.[INDEX].compression.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["EPC_BASE64","EPC_HEX",null],"description":"Optional EPC compression of a GS1 Digital Link URI. `EPC_BASE64` encodes the EPC binary in URL-safe Base64 (an `ex` path); `EPC_HEX` uses hexadecimal (an `eh` path). Omit or send null for an uncompressed URI.\n\nRequires primary key `01` (GTIN), AI `21` (serial number), and `digitalLinkStem`. AIs `03`, `717`, `8014` and `8040`–`8043` cannot be stored in EPC binary, so a code that contains any of them cannot be compressed. The EPC path carries the AIs; `extensionParameters`, `linkType`, and `context` remain query parameters. Human-readable interpretation (`hri`) is unchanged.\n\nAn unknown or inapplicable value produces `Validation.Invalid.compression`: HTTP 422 for a single code, or a per-item error in the batch HTTP 200 response.","examples":["EPC_BASE64","EPC_HEX"],"uniqueKey":"codes.items.[INDEX].compression.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].compression","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"codes.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"codes","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"uncompressed":{"title":"uncompressed","value":{"codes":[{"reference":"gs1-digital-link-product","digitalLinkStem":"https://gtin.at","primaryKey":{"key":"01","value":"09521234543213"},"ais":[{"key":"10","value":"LOT42"}],"extensionParameters":[],"linkType":null,"context":null},{"reference":"datamatrix-product","primaryKey":{"key":"01","value":"09521234543213"},"ais":[{"key":"10","value":"LOT42"}],"extensionParameters":[],"linkType":null,"context":null}]}},"EPC_BASE64":{"title":"EPC_BASE64","value":{"codes":[{"digitalLinkStem":"https://thingidentity.com","primaryKey":{"key":"01","value":"09528765123457"},"ais":[{"key":"21","value":"123456789123"}],"compression":"EPC_BASE64","reference":"serialised-product"}]}},"EPC_HEX":{"title":"EPC_HEX","value":{"codes":[{"digitalLinkStem":"https://thingidentity.com","primaryKey":{"key":"01","value":"09528765123457"},"ais":[{"key":"21","value":"123456789123"}],"compression":"EPC_HEX","reference":"serialised-product"}]}}},"exampleType":"examples"},"application/json":{"schema":{"type":"object","required":["codes"],"properties":{"codes":{"type":"array","description":"The definitions to generate. Items are processed in order and each one is validated on its own.","items":{"type":"object","required":["primaryKey"],"properties":{"primaryKey":{"type":"object","description":"The identifying application identifier. With a `digitalLinkStem` it must be a GS1 Digital Link primary key in the GS1 Barcode Syntax Dictionary; without one, `03` is additionally accepted, the identifier for made-to-order trade items.\n\nGTIN (`01`) accepts 8, 12, 13 or 14 digits, verifies the mod-10 check digit and normalises the value to 14 digits, so the value you get back may be longer than the one you sent.","required":["key","value"],"properties":{"key":{"type":"string","description":"GS1 application identifier. Browse the official [GS1 Application Identifiers directory](https://ref.gs1.org/ai/) for meanings, value formats, required associations and Digital Link usage. The API validates identifiers against its bundled GS1 Barcode Syntax Dictionary; not every AI is valid as a primary key or in every combination.","examples":["01"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].primaryKey.key","typeLabel":"string"},"value":{"type":"string","examples":["09521234543213"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].primaryKey.value","typeLabel":"string"}},"isRequired":true,"uniqueKey":"codes.items.[INDEX].primaryKey","typeLabel":"object"},"reference":{"oneOf":[{"type":"string","description":"Optional correlation identifier, echoed unchanged on success or failure. When omitted or null, the API returns the zero-based input position as a string, e.g. 0 becomes \"0\". Empty strings are preserved. Avoid collisions with generated references. This is not an idempotency key.","examples":["product-label"],"uniqueKey":"codes.items.[INDEX].reference.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional correlation identifier, echoed unchanged on success or failure. When omitted or null, the API returns the zero-based input position as a string, e.g. 0 becomes \"0\". Empty strings are preserved. Avoid collisions with generated references. This is not an idempotency key.","examples":["product-label"],"uniqueKey":"codes.items.[INDEX].reference.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].reference","typeLabel":"string | null"},"ais":{"oneOf":[{"type":"array","description":"Further application identifiers. Pass `[]` for none.\n\nEach key must exist in the GS1 Barcode Syntax Dictionary and its value must match the format that dictionary declares. An AI may not repeat the primary key, keys may not repeat each other, and GS1 \"requires\" and \"excludes\" relations between AIs are enforced.\n\nWith a `digitalLinkStem` every AI must be either a path qualifier of the chosen primary key, taken from a single consistent qualifier sequence, or a data attribute that GS1 Digital Link URI Syntax allows in the query string. Qualifiers keep the order GS1 defines, not the order you send.\n\nTemperature AIs (`4330` to `4333`) are normalised for you: the magnitude is padded to six digits and a negative value keeps its trailing minus.\n\nWhen compression is selected, the EPC path carries these AIs instead of separate path and query fields.","items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","description":"GS1 application identifier. Browse the official [GS1 Application Identifiers directory](https://ref.gs1.org/ai/) for meanings, value formats, required associations and Digital Link usage. The API validates identifiers against its bundled GS1 Barcode Syntax Dictionary; not every AI is valid as a primary key or in every combination.","examples":["01"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].ais.oneOf.0.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","examples":["09521234543213"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].ais.oneOf.0.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"codes.items.[INDEX].ais.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"codes.items.[INDEX].ais.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Further application identifiers. Pass `[]` for none.\n\nEach key must exist in the GS1 Barcode Syntax Dictionary and its value must match the format that dictionary declares. An AI may not repeat the primary key, keys may not repeat each other, and GS1 \"requires\" and \"excludes\" relations between AIs are enforced.\n\nWith a `digitalLinkStem` every AI must be either a path qualifier of the chosen primary key, taken from a single consistent qualifier sequence, or a data attribute that GS1 Digital Link URI Syntax allows in the query string. Qualifiers keep the order GS1 defines, not the order you send.\n\nTemperature AIs (`4330` to `4333`) are normalised for you: the magnitude is padded to six digits and a negative value keeps its trailing minus.\n\nWhen compression is selected, the EPC path carries these AIs instead of separate path and query fields.","items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","description":"GS1 application identifier. Browse the official [GS1 Application Identifiers directory](https://ref.gs1.org/ai/) for meanings, value formats, required associations and Digital Link usage. The API validates identifiers against its bundled GS1 Barcode Syntax Dictionary; not every AI is valid as a primary key or in every combination.","examples":["01"]},"value":{"type":"string","examples":["09521234543213"]}}},"uniqueKey":"codes.items.[INDEX].ais.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].ais","typeLabel":"object[] | null"},"extensionParameters":{"oneOf":[{"type":"array","description":"Optional custom query parameters appended to a GS1 Digital Link URI. Omit, send null or pass `[]` for none.\n\nOnly with a `digitalLinkStem`; a non-empty list without one is rejected. Keys must not be `linkType` or `context`, must contain at least one non-digit, must be unique, and both keys and values are limited to unreserved ASCII and URI punctuation.","items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","description":"Query parameter name. Not `linkType` or `context`, and it must contain at least one non-digit.","examples":["batch"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].extensionParameters.oneOf.0.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","examples":["A42"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].extensionParameters.oneOf.0.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"codes.items.[INDEX].extensionParameters.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"codes.items.[INDEX].extensionParameters.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Optional custom query parameters appended to a GS1 Digital Link URI. Omit, send null or pass `[]` for none.\n\nOnly with a `digitalLinkStem`; a non-empty list without one is rejected. Keys must not be `linkType` or `context`, must contain at least one non-digit, must be unique, and both keys and values are limited to unreserved ASCII and URI punctuation.","items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","description":"Query parameter name. Not `linkType` or `context`, and it must contain at least one non-digit.","examples":["batch"]},"value":{"type":"string","examples":["A42"]}}},"uniqueKey":"codes.items.[INDEX].extensionParameters.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].extensionParameters","typeLabel":"object[] | null"},"digitalLinkStem":{"oneOf":[{"type":"string","description":"The origin a GS1 Digital Link path is appended to. Supplying it is what makes this a GS1 Digital Link: send a stem and you get a URI, leave it out and you get a GS1 element string. Must be `http` or `https` with a host, and carry no userinfo, query or fragment. A single trailing slash is stripped; empty path segments are rejected.","examples":["https://gtin.at"],"uniqueKey":"codes.items.[INDEX].digitalLinkStem.oneOf.0","typeLabel":"string"},{"type":"null","description":"The origin a GS1 Digital Link path is appended to. Supplying it is what makes this a GS1 Digital Link: send a stem and you get a URI, leave it out and you get a GS1 element string. Must be `http` or `https` with a host, and carry no userinfo, query or fragment. A single trailing slash is stripped; empty path segments are rejected.","examples":["https://gtin.at"],"uniqueKey":"codes.items.[INDEX].digitalLinkStem.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].digitalLinkStem","typeLabel":"string | null"},"linkType":{"oneOf":[{"type":"string","description":"The GS1 link type the URI resolves to. Only with a `digitalLinkStem`. A `gs1:` value must be one the generator offers from the [GS1 Web Vocabulary](https://ref.gs1.org/voc/) page types; `gs1:defaultPage`, `gs1:defaultPageMulti` and `gs1:handledBy` are not selectable. Any other value must be an absolute `http` or `https` URI.","examples":["gs1:pip"],"uniqueKey":"codes.items.[INDEX].linkType.oneOf.0","typeLabel":"string"},{"type":"null","description":"The GS1 link type the URI resolves to. Only with a `digitalLinkStem`. A `gs1:` value must be one the generator offers from the [GS1 Web Vocabulary](https://ref.gs1.org/voc/) page types; `gs1:defaultPage`, `gs1:defaultPageMulti` and `gs1:handledBy` are not selectable. Any other value must be an absolute `http` or `https` URI.","examples":["gs1:pip"],"uniqueKey":"codes.items.[INDEX].linkType.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].linkType","typeLabel":"string | null"},"context":{"oneOf":[{"type":"string","description":"Value for the GS1 Digital Link `context` query parameter. Only with a `digitalLinkStem`, same character rules as extension parameter values.","examples":["dpp"],"uniqueKey":"codes.items.[INDEX].context.oneOf.0","typeLabel":"string"},{"type":"null","description":"Value for the GS1 Digital Link `context` query parameter. Only with a `digitalLinkStem`, same character rules as extension parameter values.","examples":["dpp"],"uniqueKey":"codes.items.[INDEX].context.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].context","typeLabel":"string | null"},"compression":{"oneOf":[{"type":"string","enum":["EPC_BASE64","EPC_HEX",null],"description":"Optional EPC compression of a GS1 Digital Link URI. `EPC_BASE64` encodes the EPC binary in URL-safe Base64 (an `ex` path); `EPC_HEX` uses hexadecimal (an `eh` path). Omit or send null for an uncompressed URI.\n\nRequires primary key `01` (GTIN), AI `21` (serial number), and `digitalLinkStem`. AIs `03`, `717`, `8014` and `8040`–`8043` cannot be stored in EPC binary, so a code that contains any of them cannot be compressed. The EPC path carries the AIs; `extensionParameters`, `linkType`, and `context` remain query parameters. Human-readable interpretation (`hri`) is unchanged.\n\nAn unknown or inapplicable value produces `Validation.Invalid.compression`: HTTP 422 for a single code, or a per-item error in the batch HTTP 200 response.","examples":["EPC_BASE64","EPC_HEX"],"uniqueKey":"codes.items.[INDEX].compression.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["EPC_BASE64","EPC_HEX",null],"description":"Optional EPC compression of a GS1 Digital Link URI. `EPC_BASE64` encodes the EPC binary in URL-safe Base64 (an `ex` path); `EPC_HEX` uses hexadecimal (an `eh` path). Omit or send null for an uncompressed URI.\n\nRequires primary key `01` (GTIN), AI `21` (serial number), and `digitalLinkStem`. AIs `03`, `717`, `8014` and `8040`–`8043` cannot be stored in EPC binary, so a code that contains any of them cannot be compressed. The EPC path carries the AIs; `extensionParameters`, `linkType`, and `context` remain query parameters. Human-readable interpretation (`hri`) is unchanged.\n\nAn unknown or inapplicable value produces `Validation.Invalid.compression`: HTTP 422 for a single code, or a per-item error in the batch HTTP 200 response.","examples":["EPC_BASE64","EPC_HEX"],"uniqueKey":"codes.items.[INDEX].compression.oneOf.1","typeLabel":"null"}],"uniqueKey":"codes.items.[INDEX].compression","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"codes.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"codes","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"uncompressed":{"title":"uncompressed","value":{"codes":[{"reference":"gs1-digital-link-product","digitalLinkStem":"https://gtin.at","primaryKey":{"key":"01","value":"09521234543213"},"ais":[{"key":"10","value":"LOT42"}],"extensionParameters":[],"linkType":null,"context":null},{"reference":"datamatrix-product","primaryKey":{"key":"01","value":"09521234543213"},"ais":[{"key":"10","value":"LOT42"}],"extensionParameters":[],"linkType":null,"context":null}]}},"EPC_BASE64":{"title":"EPC_BASE64","value":{"codes":[{"digitalLinkStem":"https://thingidentity.com","primaryKey":{"key":"01","value":"09528765123457"},"ais":[{"key":"21","value":"123456789123"}],"compression":"EPC_BASE64","reference":"serialised-product"}]}},"EPC_HEX":{"title":"EPC_HEX","value":{"codes":[{"digitalLinkStem":"https://thingidentity.com","primaryKey":{"key":"01","value":"09528765123457"},"ais":[{"key":"21","value":"123456789123"}],"compression":"EPC_HEX","reference":"serialised-product"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"ffd86a29-ffa3-438b-b9bd-859fdf138441":{"description":"Generated codes in `codes`, rejected definitions in `errors`. Both carry `reference`, which ties an entry back to the item you sent.","content":{"application/vnd.thingidentity.public.v1+json":{"schema":{"type":"object","required":["codes","errors"],"properties":{"codes":{"type":"array","items":{"type":"object","required":["reference","barcodeText","hri"],"properties":{"reference":{"type":"string","description":"The supplied reference unchanged, or the zero-based input position as a string when omitted or null.","isRequired":true,"uniqueKey":"codes.items.[INDEX].reference","typeLabel":"string"},"barcodeText":{"type":"string","description":"The payload to encode. With a `digitalLinkStem` the GS1 Digital Link URI; without one, the GS1 element string, where parentheses inside a value are escaped as `^040` and `^041` so that a renderer places the FNC1 separators correctly. With compression, this is the URI with an EPC `ex` or `eh` path.","examples":["https://gtin.at/01/09521234543213"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].barcodeText","typeLabel":"string"},"hri":{"type":"string","description":"Human readable interpretation, the `(AI)value` text printed under the symbol. Compression does not change this value.","examples":["(01)09521234543213"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].hri","typeLabel":"string"}},"uniqueKey":"codes.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"codes","typeLabel":"object[]"},"errors":{"type":"array","items":{"type":"object","required":["reference","errors"],"properties":{"reference":{"type":"string","description":"The supplied reference unchanged, or the zero-based input position as a string when omitted or null.","isRequired":true,"uniqueKey":"errors.items.[INDEX].reference","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","required":["code","args"],"properties":{"code":{"type":"string","description":"`Validation.Invalid.\u003cfield>`.","examples":["Validation.Invalid.primaryKey"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].errors.items.[INDEX].code","typeLabel":"string"},"args":{"type":"array","items":{"type":"string","uniqueKey":"errors.items.[INDEX].errors.items.[INDEX].args.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"errors.items.[INDEX].errors.items.[INDEX].args","typeLabel":"string[]"},"path":{"oneOf":[{"type":"string","description":"The field at fault, so `ais.2` is the third entry of `ais`.","examples":["primaryKey"],"uniqueKey":"errors.items.[INDEX].errors.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"type":"null","description":"The field at fault, so `ais.2` is the third entry of `ais`.","examples":["primaryKey"],"uniqueKey":"errors.items.[INDEX].errors.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].errors.items.[INDEX].path","typeLabel":"string | null"}},"uniqueKey":"errors.items.[INDEX].errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors.items.[INDEX].errors","typeLabel":"object[]"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"codes":[{"reference":"gs1-digital-link-product","barcodeText":"https://gtin.at/01/09521234543213/10/LOT42","hri":"(01)09521234543213(10)LOT42"},{"reference":"datamatrix-product","barcodeText":"(01)09521234543213(10)LOT42","hri":"(01)09521234543213(10)LOT42"}],"errors":[]},"examples":{"Example":{"title":"Example","value":{"codes":[{"reference":"gs1-digital-link-product","barcodeText":"https://gtin.at/01/09521234543213/10/LOT42","hri":"(01)09521234543213(10)LOT42"},{"reference":"datamatrix-product","barcodeText":"(01)09521234543213(10)LOT42","hri":"(01)09521234543213(10)LOT42"}],"errors":[]}}},"exampleType":"examples"},"application/json":{"schema":{"type":"object","required":["codes","errors"],"properties":{"codes":{"type":"array","items":{"type":"object","required":["reference","barcodeText","hri"],"properties":{"reference":{"type":"string","description":"The supplied reference unchanged, or the zero-based input position as a string when omitted or null.","isRequired":true,"uniqueKey":"codes.items.[INDEX].reference","typeLabel":"string"},"barcodeText":{"type":"string","description":"The payload to encode. With a `digitalLinkStem` the GS1 Digital Link URI; without one, the GS1 element string, where parentheses inside a value are escaped as `^040` and `^041` so that a renderer places the FNC1 separators correctly. With compression, this is the URI with an EPC `ex` or `eh` path.","examples":["https://gtin.at/01/09521234543213"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].barcodeText","typeLabel":"string"},"hri":{"type":"string","description":"Human readable interpretation, the `(AI)value` text printed under the symbol. Compression does not change this value.","examples":["(01)09521234543213"],"isRequired":true,"uniqueKey":"codes.items.[INDEX].hri","typeLabel":"string"}},"uniqueKey":"codes.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"codes","typeLabel":"object[]"},"errors":{"type":"array","items":{"type":"object","required":["reference","errors"],"properties":{"reference":{"type":"string","description":"The supplied reference unchanged, or the zero-based input position as a string when omitted or null.","isRequired":true,"uniqueKey":"errors.items.[INDEX].reference","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","required":["code","args"],"properties":{"code":{"type":"string","description":"`Validation.Invalid.\u003cfield>`.","examples":["Validation.Invalid.primaryKey"],"isRequired":true,"uniqueKey":"errors.items.[INDEX].errors.items.[INDEX].code","typeLabel":"string"},"args":{"type":"array","items":{"type":"string","uniqueKey":"errors.items.[INDEX].errors.items.[INDEX].args.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"errors.items.[INDEX].errors.items.[INDEX].args","typeLabel":"string[]"},"path":{"oneOf":[{"type":"string","description":"The field at fault, so `ais.2` is the third entry of `ais`.","examples":["primaryKey"],"uniqueKey":"errors.items.[INDEX].errors.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"type":"null","description":"The field at fault, so `ais.2` is the third entry of `ais`.","examples":["primaryKey"],"uniqueKey":"errors.items.[INDEX].errors.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors.items.[INDEX].errors.items.[INDEX].path","typeLabel":"string | null"}},"uniqueKey":"errors.items.[INDEX].errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors.items.[INDEX].errors","typeLabel":"object[]"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"codes":[{"reference":"gs1-digital-link-product","barcodeText":"https://gtin.at/01/09521234543213/10/LOT42","hri":"(01)09521234543213(10)LOT42"},{"reference":"datamatrix-product","barcodeText":"(01)09521234543213(10)LOT42","hri":"(01)09521234543213(10)LOT42"}],"errors":[]},"examples":{"Example":{"title":"Example","value":{"codes":[{"reference":"gs1-digital-link-product","barcodeText":"https://gtin.at/01/09521234543213/10/LOT42","hri":"(01)09521234543213(10)LOT42"},{"reference":"datamatrix-product","barcodeText":"(01)09521234543213(10)LOT42","hri":"(01)09521234543213(10)LOT42"}],"errors":[]}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"5e1efa94-7214-484a-9905-e1c0370b3c91":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"The `access_token` from `POST /oauth/token`.","scopes":[]}}},"servers":{"751c3ee5-c165-428a-a409-06e1fbd3b211":{"url":"https://api.thingidentity.com"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"The `access_token` from `POST /oauth/token`.","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"The `access_token` from `POST /oauth/token`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"thing-identity","siteName":"Thing Identity","title":"Batch Generate 2D barcodes - Thing Identity","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-28T14:39:05.534Z","originalFileLocation":"api-reference/endpoints/generate-codes.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Takes a batch of code definitions and returns, for each one, the payload to encode in a symbol plus its human readable interpretation. Nothing is rendered as an image: you get the text and feed it to your own 2D barcode renderer. A definition that fails validation does not fail the request. The status is 200 OK even when every item was rejected and codes comes back empty, so check errors rather than the status code. Requires the write:codes scope. Set compression on each definition to EPC_BASE64 or EPC_HEX for a compressed Digital Link. Omit or send null for an uncompressed URI. Compression requires a GTIN and serial number.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Thing Identity\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/thing-identity/3IW8MTT2ZtvIbmGr/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/thing-identity/3IW8MTT2ZtvIbmGr/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/thing-identity/3IW8MTT2ZtvIbmGr/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/thing-identity/3IW8MTT2ZtvIbmGr/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/thing-identity/3IW8MTT2ZtvIbmGr/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/thing-identity/3IW8MTT2ZtvIbmGr/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/thing-identity/3IW8MTT2ZtvIbmGr/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/thing-identity/3IW8MTT2ZtvIbmGr/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/thing-identity/3IW8MTT2ZtvIbmGr/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Batch Generate 2D barcodes - Thing Identity\">\u003cmeta data-mint-head property=\"og:description\" content=\"Takes a batch of code definitions and returns, for each one, the payload to encode in a symbol plus its human readable interpretation. Nothing is rendered as an image: you get the text and feed it to your own 2D barcode renderer. A definition that fails validation does not fail the request. The status is 200 OK even when every item was rejected and codes comes back empty, so check errors rather than the status code. Requires the write:codes scope. Set compression on each definition to EPC_BASE64 or EPC_HEX for a compressed Digital Link. Omit or send null for an uncompressed URI. Compression requires a GTIN and serial number.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Thing Identity\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.thingidentity.com/api-reference/endpoints/generate-codes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://thing-identity.mintlify.app/_mintlify/api/og/v2?division=2D+Barcodes\u0026amp;title=Batch+Generate+2D+barcodes\u0026amp;description=Takes+a+batch+of+code+definitions+and+returns%2C+for+each+one%2C+the+payload+to+encode+in+a+symbol+plus+its+human+readable+interpretation.+Nothing+is+rendered+as+an\u0026amp;theme=cbc6b4ca26d606041ab96dc7\u0026amp;signature=ff51a7df81d44e4614b80abcd8ac213b8505c37b732916608f43035675a3b0bf\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Batch Generate 2D barcodes - Thing Identity\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Takes a batch of code definitions and returns, for each one, the payload to encode in a symbol plus its human readable interpretation. Nothing is rendered as an image: you get the text and feed it to your own 2D barcode renderer. A definition that fails validation does not fail the request. The status is 200 OK even when every item was rejected and codes comes back empty, so check errors rather than the status code. Requires the write:codes scope. Set compression on each definition to EPC_BASE64 or EPC_HEX for a compressed Digital Link. Omit or send null for an uncompressed URI. Compression requires a GTIN and serial number.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://thing-identity.mintlify.app/_mintlify/api/og/v2?division=2D+Barcodes\u0026amp;title=Batch+Generate+2D+barcodes\u0026amp;description=Takes+a+batch+of+code+definitions+and+returns%2C+for+each+one%2C+the+payload+to+encode+in+a+symbol+plus+its+human+readable+interpretation.+Nothing+is+rendered+as+an\u0026amp;theme=cbc6b4ca26d606041ab96dc7\u0026amp;signature=ff51a7df81d44e4614b80abcd8ac213b8505c37b732916608f43035675a3b0bf\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/thing-identity/3IW8MTT2ZtvIbmGr/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Thing Identity\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#18181B\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.thingidentity.com/api-reference/endpoints/generate-codes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoints/generate-codes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.thingidentity.com/#organization\",\"name\":\"Thing Identity\",\"url\":\"https://docs.thingidentity.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/thing-identity/kRu3PmIiw7bjxaKS/logo/light.svg?fit=max\u0026auto=format\u0026n=kRu3PmIiw7bjxaKS\u0026q=85\u0026s=5b0ca7ae1844542e1d6472bfd08fcb66\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.thingidentity.com#website\",\"name\":\"Thing Identity\",\"url\":\"https://docs.thingidentity.com\",\"publisher\":{\"@id\":\"https://docs.thingidentity.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.thingidentity.com/api-reference/endpoints/generate-codes#webpage\",\"url\":\"https://docs.thingidentity.com/api-reference/endpoints/generate-codes\",\"name\":\"Batch Generate 2D barcodes\",\"description\":\"Takes a batch of code definitions and returns, for each one, the payload to encode in a symbol plus its human readable interpretation. Nothing is rendered as an image: you get the text and feed it to your own 2D barcode renderer. A definition that fails validation does not fail the request. The status is 200 OK even when every item was rejected and codes comes back empty, so check errors rather than the status code. Requires the write:codes scope. Set compression on each definition to EPC_BASE64 or EPC_HEX for a compressed Digital Link. Omit or send null for an uncompressed URI. Compression requires a GTIN and serial number.\",\"dateModified\":\"2026-09-28T14:39:05.534Z\",\"isPartOf\":{\"@id\":\"https://docs.thingidentity.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.thingidentity.com/api-reference/endpoints/generate-codes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.thingidentity.com/api-reference/endpoints/generate-codes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"2D Barcodes\",\"item\":\"https://docs.thingidentity.com/api-reference/endpoints/generate-code\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Batch Generate 2D barcodes\",\"item\":\"https://docs.thingidentity.com/api-reference/endpoints/generate-codes\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.thingidentity.com/api-reference/endpoints/generate-codes#apireference\",\"headline\":\"Batch Generate 2D barcodes\",\"name\":\"Batch Generate 2D barcodes\",\"description\":\"Takes a batch of code definitions and returns, for each one, the payload to encode in a symbol plus its human readable interpretation. Nothing is rendered as an image: you get the text and feed it to your own 2D barcode renderer. A definition that fails validation does not fail the request. The status is 200 OK even when every item was rejected and codes comes back empty, so check errors rather than the status code. Requires the write:codes scope. Set compression on each definition to EPC_BASE64 or EPC_HEX for a compressed Digital Link. Omit or send null for an uncompressed URI. Compression requires a GTIN and serial number.\",\"url\":\"https://docs.thingidentity.com/api-reference/endpoints/generate-codes\",\"mainEntityOfPage\":{\"@id\":\"https://docs.thingidentity.com/api-reference/endpoints/generate-codes#webpage\"},\"dateModified\":\"2026-09-28T14:39:05.534Z\",\"publisher\":{\"@id\":\"https://docs.thingidentity.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.thingidentity.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Thing Identity\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Thing Identity","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://thingidentity.com/blog"}]},"tabs":[{"tab":"API Reference","groups":[{"group":"Get Started","icon":"rocket","pages":[{"title":"Quickstart","sidebarTitle":"Quickstart","href":"/quickstart"}]},{"group":"Guides","icon":"book","pages":[{"title":"Authentication","sidebarTitle":"Authentication","href":"/guides/authentication"}]},{"group":"API Documentation","icon":"book-open","pages":[{"title":"Introduction","sidebarTitle":"Introduction","href":"/api-reference/introduction"},{"title":"Error handling","sidebarTitle":"Error handling","href":"/api-reference/errors"}]},{"group":"Authentication","icon":"code","pages":[{"title":"Get an access token","openapi":"openapi.json POST /oauth/token","href":"/api-reference/endpoints/get-an-access-token"}]},{"group":"2D Barcodes","icon":"qrcode","pages":[{"title":"Generate 2D barcode","openapi":"openapi.json POST /code","href":"/api-reference/endpoints/generate-code"},{"title":"Render 2D barcode","openapi":"openapi.json POST /code/render","description":"Render one validated code definition as SVG.\n\nSet `compression` on each definition to `EPC_BASE64` or `EPC_HEX` for a compressed Digital Link. Omit or send null for an uncompressed URI. Compression requires a GTIN and serial number.","href":"/api-reference/endpoints/render-code"},{"title":"Batch Generate 2D barcodes","openapi":"openapi.json POST /codes","href":"/api-reference/endpoints/generate-codes"},{"title":"Batch Render 2D barcodes","openapi":"openapi.json POST /codes/render/batch","description":"Render up to 10 code definitions as Base64-encoded SVG images in one JSON response.\n\nSet `compression` on each definition to `EPC_BASE64` or `EPC_HEX` for a compressed Digital Link. Omit or send null for an uncompressed URI. Compression requires a GTIN and serial number.","href":"/api-reference/endpoints/render-codes"}]},{"group":"GS1 Resolver","icon":"link","pages":[{"title":"GS1 Digital Link resolver","sidebarTitle":"Overview","href":"/api-reference/resolver/overview"},{"title":"Resolve a GS1 Digital Link","openapi":"openapi.json GET /01/{gtin}","href":"/api-reference/resolver/resolve-gtin"},{"title":"Resolve a compressed GS1 Digital Link","api":"GET https://thingidentity.com/{compressedLink}","href":"/api-reference/resolver/resolve-compressed"}]}]}]},"title":"Batch Generate 2D barcodes - Thing Identity","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Bbp7I60D.js","utils-C3RIvJha.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DqD-vLt8.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B31Loprg.js","snippetPresets-DKpk-b8t.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Cj65AhOR.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BXtn5gcC.js","shallow-RY2b03Cp.js","getApiPlaygroundDisplay-B0jeiPk3.js","CodeSnippet-CYgBjjwn.js","CodeSnippets-DOngDrYB.js","Page-n7I5XbKb.js","getPastedJson-DRQbJx-T.js","icon-CQiQCicY.js","MethodPill-BKTLdNtu.js","DuplicateIcon-B9jpAdat.js","createIcon-DCddRrXv.js","DynamicMarkdown-a8hUKrw6.js","SectionHeading-eECVV2eH.js","axios-vUo_bRtp.js","Markdown--GF7ZIpf.js","clsx-DZLdJUrt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-2LoAhjKH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Zwc0ZncM.js"]}