Validate a non-authorizing prepared-media print order
Accepts exactly one JSON object up to 2 MiB and rejects unknown fields. environment is used only for structural preflight and cannot quote, create, pay for, upload media for, or submit an order. Authenticated quote and submission routes derive their fulfillment lane from the API credential. Clients must fetch the catalog and use the selected product revision’s asset requirements, text requirements, and options. This read-only preflight never downloads or transforms image sources; its result does not establish source-image readiness. Authoritative image inspection, DPI inference, and any enabled preparation happen during authenticated quote creation.
POST
/
v1
/
print-orders
/
validate
Validate a non-authorizing prepared-media print order
Required domestic US delivery service. The server freezes the exact deterministic provider shipping quote before payment; a service can be unavailable when provider eligibility, a one-day zone result, or required provider cost evidence is unavailable.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Batch Relay API","colors":{"primary":"#2563EB","light":"#EFF6FF","dark":"#1D4ED8"},"logo":{"light":"https://media.brand.dev/e0f13cde-5756-4d8b-bfdf-01f76e6b0d41.svg","dark":"https://media.brand.dev/e0f13cde-5756-4d8b-bfdf-01f76e6b0d41.svg"},"navbar":{"primary":{"type":"button","label":"Developer Dashboard","href":"https://app.batchrelay.com/developers"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ftrbnd","hasAudioNarration":false,"actualSubdomain":"ftrbnd","customDomains":["docs.batchrelay.com"],"gitSource":{"type":"github","owner":"sentinelite","repo":"batch-relay-documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeafa19e84fb046db8b4cad","collectionId":"ebcb1da7-627a-4689-b011-49bbfab55ee5","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeafa19e84fb046db8b4cad"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aeafa19e84fb046db8b4cad","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Reference","count":165},{"language":"default","tag":"Guides","count":33},{"language":"default","tag":"Studio Operations","count":26},{"language":"default","tag":"Studio catalog","count":18},{"language":"default","tag":"Core Concepts","count":16},{"language":"default","tag":"Product reference","count":13},{"language":"default","tag":"Consumer printing","count":13},{"language":"default","tag":"Studio management","count":12},{"language":"default","tag":"Studio offers","count":11},{"language":"default","tag":"API accounts","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","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":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"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":"workos-sso-scim","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},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order","slug":"/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order","pageMetadata":{"title":"Validate a non-authorizing prepared-media print order","description":"Accepts exactly one JSON object up to 2 MiB and rejects unknown fields. environment is used only for structural preflight and cannot quote, create, pay for, upload media for, or submit an order. Authenticated quote and submission routes derive their fulfillment lane from the API credential. Clients must fetch the catalog and use the selected product revision's asset requirements, text requirements, and options. This read-only preflight never downloads or transforms image sources; its result does not establish source-image readiness. Authoritative image inspection, DPI inference, and any enabled preparation happen during authenticated quote creation.","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/print-orders/validate","href":"/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Accepts exactly one JSON object up to 2 MiB and rejects unknown fields. environment is used only for structural preflight and cannot quote, create, pay for, upload media for, or submit an order. Authenticated quote and submission routes derive their fulfillment lane from the API credential. Clients must fetch the catalog and use the selected product revision’s asset requirements, text requirements, and options. This read-only preflight never downloads or transforms image sources; its result does not establish source-image readiness. Authoritative image inspection, DPI inference, and any enabled preparation happen during authenticated quote creation.\"\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Validate a non-authorizing prepared-media print order","description":"Accepts exactly one JSON object up to 2 MiB and rejects unknown fields. environment is used only for structural preflight and cannot quote, create, pay for, upload media for, or submit an order. Authenticated quote and submission routes derive their fulfillment lane from the API credential. Clients must fetch the catalog and use the selected product revision's asset requirements, text requirements, and options. This read-only preflight never downloads or transforms image sources; its result does not establish source-image readiness. Authoritative image inspection, DPI inference, and any enabled preparation happen during authenticated quote creation.","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/print-orders/validate","href":"/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Accepts exactly one JSON object up to 2 MiB and rejects unknown fields. environment is used only for structural preflight and cannot quote, create, pay for, upload media for, or submit an order. Authenticated quote and submission routes derive their fulfillment lane from the API credential. Clients must fetch the catalog and use the selected product revision's asset requirements, text requirements, and options. This read-only preflight never downloads or transforms image sources; its result does not establish source-image readiness. Authoritative image inspection, DPI inference, and any enabled preparation happen during authenticated quote creation.","operationId":"validatePrintOrder","requestBody":"9820467a-767d-4fa7-8e1d-c5719b01681e","responses":{"200":"ab9efa20-e738-4f37-8f93-d2dcf13ebd25","400":"dedd225a-0f2a-4133-9577-d4f08fad1cd9","413":"4117ab5c-c49e-495d-8d35-ad2ca7a8619d","422":"cdec12b3-e749-4b59-a2c3-a57d511e342a"},"security":[],"summary":"Validate a non-authorizing prepared-media print order","tags":["Print orders"],"method":"post","type":"path","servers":["60384607-e10c-4b83-b9c9-06793f8172ef"],"path":"/v1/print-orders/validate","baseUrlOptions":["https://api.batchrelay.com"],"title":"Validate a non-authorizing prepared-media print order","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"665762a0-b31b-4bb6-8e6c-fabe0e1d35eb":{"description":"Untrusted optional analytics hint naming the calling client surface. It never affects authorization, routing, pricing, or behavior.","in":"header","name":"X-BatchRelay-Client-Surface","required":false,"schema":{"maxLength":100,"minLength":1,"type":"string","isRequired":false,"description":"Untrusted optional analytics hint naming the calling client surface. It never affects authorization, routing, pricing, or behavior.","uniqueKey":"","typeLabel":"string"}},"eb624f73-33f3-4bce-9715-ea8087037bf3":{"description":"Untrusted optional analytics hint naming the calling client version. It never affects authorization, routing, pricing, or behavior.","in":"header","name":"X-BatchRelay-Client-Version","required":false,"schema":{"maxLength":100,"minLength":1,"type":"string","isRequired":false,"description":"Untrusted optional analytics hint naming the calling client version. It never affects authorization, routing, pricing, or behavior.","uniqueKey":"","typeLabel":"string"}},"3d81accd-dfdf-479d-ac1d-f80c4f88281c":{"description":"Untrusted optional analytics hint naming the invocation mode. It never affects authorization, routing, pricing, or behavior.","in":"header","name":"X-BatchRelay-Invocation-Mode","required":false,"schema":{"maxLength":100,"minLength":1,"type":"string","isRequired":false,"description":"Untrusted optional analytics hint naming the invocation mode. It never affects authorization, routing, pricing, or behavior.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"environment":{"description":"Used only for this non-authorizing structural validation request.","enum":["sandbox","production"],"type":"string","isRequired":true,"uniqueKey":"environment","typeLabel":"enum\u003cstring>"},"external_order_id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"external_order_id","typeLabel":"string"},"items":{"items":{"additionalProperties":false,"properties":{"assets":{"items":{"oneOf":[{"type":"object","description":"Public asset source. Supply role plus exactly one of url or asset_id. Batch Relay resolves and freezes immutable metadata during quote; optional metadata is a non-authoritative preflight hint. Products with template_requirement=required accept only the asset_id from a succeeded Batch Relay template render plus template_render_id. Public submission never passes a source URL to a provider. For photo-button-3 revision 2 and trader-cards-12 revision 2, quote creation infers an omitted dpi from measured dimensions when all artwork already matches a supported output profile. If flexible artwork preparation is enabled for the account and credential lane, direct artwork with omitted dpi can be downscaled to the 300-PPI output canvas. Existing exact 300/600-PPI artwork and verified template outputs retain their bytes and profile; explicit dpi keeps strict prepared-artwork validation. Catalog prepared_artwork still describes the final file, not a general permission to crop or upscale.","required":["role","url"],"properties":{"role":{"enum":["artwork","background","individual","team","logo","front","back"],"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"url":{"description":"HTTPS source copied into managed fulfillment storage during quote.","format":"uri","pattern":"^https://","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.url","typeLabel":"string\u003curi>"},"asset_id":{"description":"Existing authorized bra_ managed asset or same-studio image asset. A valid prepared output is reused; enabled flexible preparation creates a separate immutable derivative when needed.","type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.asset_id","typeLabel":"string"},"dpi":{"description":"Optional prepared-output resolution. Omit it to infer a supported exact profile at quote time; zero retains the legacy omitted-value behavior. A positive value must match both measured pixel dimensions and the selected product revision. When any asset in a line supplies a positive DPI, that line keeps strict prepared-artwork validation. This is not trusted image-file metadata.","minimum":0,"type":"integer","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.dpi","typeLabel":"integer"},"file_size_bytes":{"description":"Optional non-authoritative preflight hint.","minimum":1,"type":"integer","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.file_size_bytes","typeLabel":"integer"},"format":{"description":"Optional non-authoritative preflight hint.","enum":["jpeg","png","tiff","webp"],"type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.format","typeLabel":"enum\u003cstring>"},"hash":{"type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.hash","typeLabel":"string"},"origin":{"additionalProperties":false,"properties":{"design_id":{"type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.origin.design_id","typeLabel":"string"},"design_version":{"minimum":1,"type":"integer","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.origin.design_version","typeLabel":"integer"},"kind":{"enum":["whcc-preset","batch-relay-design","studio-design","community-design","custom-upload"],"type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.origin.kind","typeLabel":"enum\u003cstring>"}},"type":"object","description":"Ignored for template provenance; the server derives it from template_render_id.","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.origin","typeLabel":"object"},"pixel_height":{"description":"Optional non-authoritative preflight hint.","minimum":1,"type":"integer","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.pixel_height","typeLabel":"integer"},"pixel_width":{"description":"Optional non-authoritative preflight hint.","minimum":1,"type":"integer","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.pixel_width","typeLabel":"integer"},"printed_file_name":{"type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.printed_file_name","typeLabel":"string"},"template_render_id":{"description":"Required with asset_id for a template-required product. Batch Relay verifies the succeeded render owns the selected artifact.","type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0.template_render_id","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Public asset source. Supply role plus exactly one of url or asset_id. Batch Relay resolves and freezes immutable metadata during quote; optional metadata is a non-authoritative preflight hint. Products with template_requirement=required accept only the asset_id from a succeeded Batch Relay template render plus template_render_id. Public submission never passes a source URL to a provider. For photo-button-3 revision 2 and trader-cards-12 revision 2, quote creation infers an omitted dpi from measured dimensions when all artwork already matches a supported output profile. If flexible artwork preparation is enabled for the account and credential lane, direct artwork with omitted dpi can be downscaled to the 300-PPI output canvas. Existing exact 300/600-PPI artwork and verified template outputs retain their bytes and profile; explicit dpi keeps strict prepared-artwork validation. Catalog prepared_artwork still describes the final file, not a general permission to crop or upscale.","required":["role","asset_id"],"properties":{"asset_id":{"description":"Existing authorized bra_ managed asset or same-studio image asset. A valid prepared output is reused; enabled flexible preparation creates a separate immutable derivative when needed.","type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.asset_id","typeLabel":"string"},"role":{"enum":["artwork","background","individual","team","logo","front","back"],"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"dpi":{"description":"Optional prepared-output resolution. Omit it to infer a supported exact profile at quote time; zero retains the legacy omitted-value behavior. A positive value must match both measured pixel dimensions and the selected product revision. When any asset in a line supplies a positive DPI, that line keeps strict prepared-artwork validation. This is not trusted image-file metadata.","minimum":0,"type":"integer","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.dpi","typeLabel":"integer"},"file_size_bytes":{"description":"Optional non-authoritative preflight hint.","minimum":1,"type":"integer","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.file_size_bytes","typeLabel":"integer"},"format":{"description":"Optional non-authoritative preflight hint.","enum":["jpeg","png","tiff","webp"],"type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.format","typeLabel":"enum\u003cstring>"},"hash":{"type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.hash","typeLabel":"string"},"origin":{"additionalProperties":false,"properties":{"design_id":{"type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.origin.design_id","typeLabel":"string"},"design_version":{"minimum":1,"type":"integer","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.origin.design_version","typeLabel":"integer"},"kind":{"enum":["whcc-preset","batch-relay-design","studio-design","community-design","custom-upload"],"type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.origin.kind","typeLabel":"enum\u003cstring>"}},"type":"object","description":"Ignored for template provenance; the server derives it from template_render_id.","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.origin","typeLabel":"object"},"pixel_height":{"description":"Optional non-authoritative preflight hint.","minimum":1,"type":"integer","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.pixel_height","typeLabel":"integer"},"pixel_width":{"description":"Optional non-authoritative preflight hint.","minimum":1,"type":"integer","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.pixel_width","typeLabel":"integer"},"printed_file_name":{"type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.printed_file_name","typeLabel":"string"},"template_render_id":{"description":"Required with asset_id for a template-required product. Batch Relay verifies the succeeded render owns the selected artifact.","type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.template_render_id","typeLabel":"string"},"url":{"description":"HTTPS source copied into managed fulfillment storage during quote.","format":"uri","pattern":"^https://","type":"string","uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1.url","typeLabel":"string\u003curi>"}},"additionalProperties":false,"uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"\\items.items.[INDEX].assets.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"\\items.items.[INDEX].assets","typeLabel":"object[]"},"product":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].product.id","typeLabel":"string"},"revision":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"\\items.items.[INDEX].product.revision","typeLabel":"integer"}},"required":["id","revision"],"type":"object","isRequired":true,"uniqueKey":"\\items.items.[INDEX].product","typeLabel":"object"},"quantity":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"\\items.items.[INDEX].quantity","typeLabel":"integer"},"options":{"items":{"additionalProperties":false,"properties":{"option_id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].options.items.[INDEX].option_id","typeLabel":"string"},"value":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].options.items.[INDEX].value","typeLabel":"string"}},"required":["option_id","value"],"type":"object","uniqueKey":"\\items.items.[INDEX].options.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"\\items.items.[INDEX].options","typeLabel":"object[]"},"texts":{"description":"Text values keyed by the selected product's published semantic slots. Each slot may occur at most once; preserve intentional whitespace exactly.","items":{"additionalProperties":false,"properties":{"slot":{"enum":["text-1","text-2","text-3","text-4","text-5","text-6"],"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].texts.items.[INDEX].slot","typeLabel":"enum\u003cstring>"},"value":{"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].texts.items.[INDEX].value","typeLabel":"string"}},"required":["slot","value"],"type":"object","uniqueKey":"\\items.items.[INDEX].texts.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"\\items.items.[INDEX].texts","typeLabel":"object[]"}},"required":["product","quantity","assets"],"type":"object","uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"},"schema_version":{"const":1,"type":"integer","isRequired":true,"uniqueKey":"schema_version","typeLabel":"integer"},"ship_from":{"additionalProperties":false,"properties":{"address_1":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"ship_from.address_1","typeLabel":"string"},"city":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"ship_from.city","typeLabel":"string"},"country":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"ship_from.country","typeLabel":"string"},"name":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"ship_from.name","typeLabel":"string"},"phone":{"description":"E.164 phone number, for example +16516468263","pattern":"^\\+[1-9][0-9]{1,14}$","type":"string","isRequired":true,"uniqueKey":"ship_from.phone","typeLabel":"string"},"postal_code":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"ship_from.postal_code","typeLabel":"string"},"state":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"ship_from.state","typeLabel":"string"},"address_2":{"type":"string","uniqueKey":"ship_from.address_2","typeLabel":"string"}},"required":["name","address_1","city","state","postal_code","country","phone"],"type":"object","isRequired":true,"uniqueKey":"ship_from","typeLabel":"object"},"ship_to":{"additionalProperties":false,"properties":{"address_1":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"ship_to.address_1","typeLabel":"string"},"city":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"ship_to.city","typeLabel":"string"},"country":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"ship_to.country","typeLabel":"string"},"name":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"ship_to.name","typeLabel":"string"},"phone":{"description":"E.164 phone number, for example +16516468263","pattern":"^\\+[1-9][0-9]{1,14}$","type":"string","isRequired":true,"uniqueKey":"ship_to.phone","typeLabel":"string"},"postal_code":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"ship_to.postal_code","typeLabel":"string"},"state":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"ship_to.state","typeLabel":"string"},"address_2":{"type":"string","uniqueKey":"ship_to.address_2","typeLabel":"string"}},"required":["name","address_1","city","state","postal_code","country","phone"],"type":"object","isRequired":true,"uniqueKey":"ship_to","typeLabel":"object"},"shipping_service":{"description":"Required domestic US delivery service. The server freezes the exact deterministic provider shipping quote before payment; a service can be unavailable when provider eligibility, a one-day zone result, or required provider cost evidence is unavailable.","enum":["economy_untracked","economy","expedited","standard_one_day","priority_one_day"],"type":"string","isRequired":true,"uniqueKey":"shipping_service","typeLabel":"enum\u003cstring>"},"customer":{"additionalProperties":false,"description":"For quote and submit API routes, at least email or phone is required.","properties":{"email":{"format":"email","type":"string","uniqueKey":"customer.email","typeLabel":"string\u003cemail>"},"external_id":{"type":"string","uniqueKey":"customer.external_id","typeLabel":"string"},"name":{"type":"string","uniqueKey":"customer.name","typeLabel":"string"},"phone":{"pattern":"^\\+[1-9][0-9]{1,14}$","type":"string","uniqueKey":"customer.phone","typeLabel":"string"}},"type":"object","uniqueKey":"customer","typeLabel":"object"}},"required":["schema_version","environment","external_order_id","ship_to","ship_from","shipping_service","items"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"external_order_id":"\u003cstring>","items":[{"assets":[{"url":"\u003cstring>","asset_id":"\u003cstring>","dpi":1,"file_size_bytes":2,"hash":"\u003cstring>","origin":{"design_id":"\u003cstring>","design_version":2},"pixel_height":2,"pixel_width":2,"printed_file_name":"\u003cstring>","template_render_id":"\u003cstring>"}],"product":{"id":"\u003cstring>","revision":2},"quantity":2,"options":[{"option_id":"\u003cstring>","value":"\u003cstring>"}],"texts":[{"value":"\u003cstring>"}]}],"schema_version":1,"ship_from":{"address_1":"\u003cstring>","city":"\u003cstring>","country":"\u003cstring>","name":"\u003cstring>","phone":"\u003cstring>","postal_code":"\u003cstring>","state":"\u003cstring>","address_2":"\u003cstring>"},"ship_to":{"address_1":"\u003cstring>","city":"\u003cstring>","country":"\u003cstring>","name":"\u003cstring>","phone":"\u003cstring>","postal_code":"\u003cstring>","state":"\u003cstring>","address_2":"\u003cstring>"},"customer":{"email":"jsmith@example.com","external_id":"\u003cstring>","name":"\u003cstring>","phone":"\u003cstring>"}}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"ab9efa20-e738-4f37-8f93-d2dcf13ebd25":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"plan":{"additionalProperties":false,"properties":{"environment":{"enum":["sandbox","production"],"type":"string","isRequired":true,"uniqueKey":"plan.environment","typeLabel":"enum\u003cstring>"},"external_order_id":{"type":"string","isRequired":true,"uniqueKey":"plan.external_order_id","typeLabel":"string"},"lines":{"items":{"additionalProperties":false,"properties":{"product":{"oneOf":[{"type":"object","required":["id","revision","name","description","family","variant_attributes","category","fulfillment_type","tax_category","units_per_quantity","options","asset_requirements","template_requirement","lifecycle","physical_output"],"properties":{"fulfillment_type":{"type":"string","enum":["print","digital"],"const":"print","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.fulfillment_type","typeLabel":"enum\u003cstring>"},"tax_category":{"type":"string","enum":["physical_print","digital_download"],"const":"physical_print","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.tax_category","typeLabel":"enum\u003cstring>"},"asset_requirements":{"items":{"additionalProperties":false,"properties":{"aspect_ratio":{"additionalProperties":false,"properties":{"height":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.asset_requirements.items.[INDEX].aspect_ratio.height","typeLabel":"integer"},"width":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.asset_requirements.items.[INDEX].aspect_ratio.width","typeLabel":"integer"}},"required":["width","height"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.asset_requirements.items.[INDEX].aspect_ratio","typeLabel":"object"},"required":{"type":"boolean","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.asset_requirements.items.[INDEX].required","typeLabel":"boolean"},"role":{"enum":["artwork","background","individual","team","logo","front","back"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.asset_requirements.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"rotation_policy":{"description":"Whether the prepared asset may use the transposed aspect orientation. Fixed is the default for templates and multi-asset layouts.","enum":["fixed","allowed"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.asset_requirements.items.[INDEX].rotation_policy","typeLabel":"enum\u003cstring>"}},"required":["role","aspect_ratio","required","rotation_policy"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.asset_requirements.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.asset_requirements","typeLabel":"object[]"},"category":{"enum":["prints","keepsakes","trader-products","composites","digital-downloads"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.category","typeLabel":"enum\u003cstring>"},"description":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.description","typeLabel":"string"},"family":{"additionalProperties":false,"description":"Discovery grouping shared by related immutable products. Do not use a family ID in an order.","properties":{"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.family.id","typeLabel":"string"},"name":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.family.name","typeLabel":"string"}},"required":["id","name"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.family","typeLabel":"object"},"id":{"description":"Stable canonical product identifier.","type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.id","typeLabel":"string"},"lifecycle":{"additionalProperties":false,"properties":{"status":{"enum":["active","deprecated"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.lifecycle.status","typeLabel":"enum\u003cstring>"},"replacement_product_id":{"description":"A recommended canonical replacement. Deprecated products remain decodable for historical records but cannot be planned for new fulfillment.","type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.lifecycle.replacement_product_id","typeLabel":"string"}},"required":["status"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.lifecycle","typeLabel":"object"},"name":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.name","typeLabel":"string"},"options":{"items":{"additionalProperties":false,"properties":{"affects_price":{"description":"Whether a selected value can change the provider unit cost.","type":"boolean","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options.items.[INDEX].affects_price","typeLabel":"boolean"},"default_value":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options.items.[INDEX].default_value","typeLabel":"string"},"id":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options.items.[INDEX].name","typeLabel":"string"},"values":{"items":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options.items.[INDEX].values","typeLabel":"string[]"},"description":{"description":"Platform-defined reference context for this option, not studio storefront copy.","type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options.items.[INDEX].description","typeLabel":"string"},"value_descriptions":{"description":"Shared reference definitions for the supported values. Provider availability is determined by provider offers, not by this metadata.","items":{"additionalProperties":false,"properties":{"description":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options.items.[INDEX].value_descriptions.items.[INDEX].description","typeLabel":"string"},"value":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options.items.[INDEX].value_descriptions.items.[INDEX].value","typeLabel":"string"}},"required":["value","description"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options.items.[INDEX].value_descriptions.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options.items.[INDEX].value_descriptions","typeLabel":"object[]"}},"required":["id","name","values","default_value","affects_price"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.options","typeLabel":"object[]"},"physical_output":{"additionalProperties":false,"properties":{"height":{"exclusiveMinimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.physical_output.height","typeLabel":"number"},"unit":{"const":"inches","type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.physical_output.unit","typeLabel":"string"},"width":{"exclusiveMinimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.physical_output.width","typeLabel":"number"}},"required":["width","height","unit"],"type":"object","description":"Required for physical print products and omitted for digital products.","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.physical_output","typeLabel":"object"},"revision":{"description":"Immutable fulfillment-contract revision.","minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.revision","typeLabel":"integer"},"template_requirement":{"description":"Product-specific template policy. required accepts only artwork from a succeeded Batch Relay template render; optional accepts either a compatible rendered output or direct prepared artwork; unsupported has no template workflow.","enum":["required","optional","unsupported"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.template_requirement","typeLabel":"enum\u003cstring>"},"units_per_quantity":{"description":"Units produced or delivered by one line quantity.","minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.units_per_quantity","typeLabel":"integer"},"variant_attributes":{"additionalProperties":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.variant_attributes.additionalProperties","typeLabel":"string"},"description":"Display and filtering attributes for one immutable variant. These values do not replace the product ID and revision in an order.","type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.variant_attributes","typeLabel":"object"},"artwork_orientation":{"additionalProperties":false,"description":"Revisioned role layout discovery. Legacy metadata derives only from existing asset requirements and is not verified full-canvas provider support. Missing metadata preserves historical behavior. No shopper layout selector is introduced.","properties":{"revision":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.artwork_orientation.revision","typeLabel":"string"},"roles":{"items":{"additionalProperties":false,"properties":{"allowed_orientations":{"items":{"enum":["portrait","landscape","square"],"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.artwork_orientation.roles.items.[INDEX].allowed_orientations.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.artwork_orientation.roles.items.[INDEX].allowed_orientations","typeLabel":"enum\u003cstring>[]"},"role":{"enum":["artwork","background","individual","team","logo","front","back"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.artwork_orientation.roles.items.[INDEX].role","typeLabel":"enum\u003cstring>"}},"required":["role","allowed_orientations"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.artwork_orientation.roles.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.artwork_orientation.roles","typeLabel":"object[]"},"verification":{"enum":["legacy","verified","unsupported"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.artwork_orientation.verification","typeLabel":"enum\u003cstring>"},"version":{"enum":["batchrelay.product-orientation/v1"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.artwork_orientation.version","typeLabel":"enum\u003cstring>"},"evidence":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.artwork_orientation.evidence","typeLabel":"string"}},"required":["version","revision","verification","roles"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.artwork_orientation","typeLabel":"object"},"consumer_quantity":{"additionalProperties":false,"properties":{"unit_plural":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.consumer_quantity.unit_plural","typeLabel":"string"},"unit_singular":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.consumer_quantity.unit_singular","typeLabel":"string"},"container_plural":{"minLength":1,"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.consumer_quantity.container_plural","typeLabel":"string"},"container_singular":{"minLength":1,"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.consumer_quantity.container_singular","typeLabel":"string"}},"required":["unit_singular","unit_plural"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.consumer_quantity","typeLabel":"object"},"fulfillment_target":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.fulfillment_target.id","typeLabel":"string"},"revision":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.fulfillment_target.revision","typeLabel":"integer"}},"required":["id","revision"],"type":"object","description":"The standard physical product used for provider-neutral routing after a composed product has flattened to finished artwork.","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.fulfillment_target","typeLabel":"object"},"orientation_capabilities":{"additionalProperties":false,"description":"Explicit audited canonical physical capability and verified provider full-canvas profiles. Omitted until verified; legacy artwork_orientation never implies this object exists. Platform and optional Studio policies may only restrict these choices.","properties":{"allowed_orientations":{"items":{"enum":["portrait","landscape","square"],"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.allowed_orientations.items.[INDEX]","typeLabel":"enum\u003cstring>"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.allowed_orientations","typeLabel":"enum\u003cstring>[]"},"provider_targets":{"items":{"additionalProperties":false,"properties":{"allowed_orientations":{"items":{"enum":["portrait","landscape","square"],"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].allowed_orientations.items.[INDEX]","typeLabel":"enum\u003cstring>"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].allowed_orientations","typeLabel":"enum\u003cstring>[]"},"dpi":{"enum":[300,600],"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].dpi","typeLabel":"enum\u003cinteger>"},"height":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].height","typeLabel":"integer"},"native_rotation":{"enum":["automatic","explicit","none"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].native_rotation","typeLabel":"enum\u003cstring>"},"product":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].product.id","typeLabel":"string"},"revision":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].product.revision","typeLabel":"integer"}},"required":["id","revision"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].product","typeLabel":"object"},"provider_id":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].provider_id","typeLabel":"string"},"quarter_turn":{"enum":[90,270],"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].quarter_turn","typeLabel":"enum\u003cinteger>"},"revision":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].revision","typeLabel":"integer"},"role":{"enum":["artwork","background","individual","team","logo","front","back"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"verification_evidence":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].verification_evidence","typeLabel":"string"},"width":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX].width","typeLabel":"integer"}},"required":["provider_id","revision","product","role","width","height","dpi","allowed_orientations","quarter_turn","native_rotation","verification_evidence"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities.provider_targets","typeLabel":"object[]"}},"required":["allowed_orientations","provider_targets"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.orientation_capabilities","typeLabel":"object"},"prepared_artwork":{"additionalProperties":false,"properties":{"finished_area":{"additionalProperties":false,"properties":{"kind":{"enum":["rectangle","circle"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.finished_area.kind","typeLabel":"enum\u003cstring>"},"center_in":{"additionalProperties":false,"properties":{"x":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.finished_area.center_in.x","typeLabel":"number"},"y":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.finished_area.center_in.y","typeLabel":"number"}},"required":["x","y"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.finished_area.center_in","typeLabel":"object"},"diameter_in":{"exclusiveMinimum":0,"type":"number","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.finished_area.diameter_in","typeLabel":"number"},"inset_in":{"additionalProperties":false,"properties":{"bottom":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.finished_area.inset_in.bottom","typeLabel":"number"},"left":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.finished_area.inset_in.left","typeLabel":"number"},"right":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.finished_area.inset_in.right","typeLabel":"number"},"top":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.finished_area.inset_in.top","typeLabel":"number"}},"required":["left","top","right","bottom"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.finished_area.inset_in","typeLabel":"object"}},"required":["kind"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.finished_area","typeLabel":"object"},"important_content_area":{"additionalProperties":false,"properties":{"kind":{"enum":["rectangle","circle"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.important_content_area.kind","typeLabel":"enum\u003cstring>"},"center_in":{"additionalProperties":false,"properties":{"x":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.important_content_area.center_in.x","typeLabel":"number"},"y":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.important_content_area.center_in.y","typeLabel":"number"}},"required":["x","y"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.important_content_area.center_in","typeLabel":"object"},"diameter_in":{"exclusiveMinimum":0,"type":"number","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.important_content_area.diameter_in","typeLabel":"number"},"inset_in":{"additionalProperties":false,"properties":{"bottom":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.important_content_area.inset_in.bottom","typeLabel":"number"},"left":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.important_content_area.inset_in.left","typeLabel":"number"},"right":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.important_content_area.inset_in.right","typeLabel":"number"},"top":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.important_content_area.inset_in.top","typeLabel":"number"}},"required":["left","top","right","bottom"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.important_content_area.inset_in","typeLabel":"object"}},"required":["kind"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.important_content_area","typeLabel":"object"},"output_bounds_in":{"additionalProperties":false,"properties":{"height":{"exclusiveMinimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.output_bounds_in.height","typeLabel":"number"},"width":{"exclusiveMinimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.output_bounds_in.width","typeLabel":"number"}},"required":["width","height"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.output_bounds_in","typeLabel":"object"},"output_dpi":{"maximum":1200,"minimum":72,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.output_dpi","typeLabel":"integer"},"supported_output_dpis":{"items":{"maximum":1200,"minimum":72,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.supported_output_dpis.items.[INDEX]","typeLabel":"integer"},"type":"array","uniqueItems":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork.supported_output_dpis","typeLabel":"integer[]"}},"required":["output_bounds_in","output_dpi","finished_area","important_content_area"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.prepared_artwork","typeLabel":"object"},"print_safety_profile":{"additionalProperties":false,"properties":{"expected_trim_fraction_per_edge":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.print_safety_profile.expected_trim_fraction_per_edge","typeLabel":"number"},"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.print_safety_profile.id","typeLabel":"string"},"important_content_inset_in":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.print_safety_profile.important_content_inset_in","typeLabel":"number"},"minimum_border_inset_in":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.print_safety_profile.minimum_border_inset_in","typeLabel":"number"},"trim_bottom_in":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.print_safety_profile.trim_bottom_in","typeLabel":"number"},"trim_left_in":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.print_safety_profile.trim_left_in","typeLabel":"number"},"trim_right_in":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.print_safety_profile.trim_right_in","typeLabel":"number"},"trim_top_in":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.print_safety_profile.trim_top_in","typeLabel":"number"},"version":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.print_safety_profile.version","typeLabel":"integer"},"mounted":{"type":"boolean","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.print_safety_profile.mounted","typeLabel":"boolean"}},"required":["id","version","expected_trim_fraction_per_edge","trim_left_in","trim_top_in","trim_right_in","trim_bottom_in","important_content_inset_in","minimum_border_inset_in"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.print_safety_profile","typeLabel":"object"},"provider_offers":{"description":"Approved provider prices for this deployment environment. Omitted when no provider-specific pricebook snapshot is available for discovery.","items":{"type":"object","description":"Canonical provider-neutral discovery data. Available WHCC offers include a verified exact unit cost. Unknown or unavailable offers, including the current RPL entry, never contain a currency, unit cost, or pricing revision and are not chargeable quotes.","required":["id","product","configuration","provider_id","availability","fulfillment_constraints"],"properties":{"availability":{"enum":["available","unavailable","unknown"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].availability","typeLabel":"enum\u003cstring>"},"configuration":{"additionalProperties":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].configuration.additionalProperties","typeLabel":"string"},"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].configuration","typeLabel":"object"},"fulfillment_constraints":{"additionalProperties":false,"properties":{"fulfillment_group":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].fulfillment_constraints.fulfillment_group","typeLabel":"string"},"requirements":{"items":{"minLength":1,"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].fulfillment_constraints.requirements.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].fulfillment_constraints.requirements","typeLabel":"string[]"},"shipping_services":{"items":{"description":"Required domestic US delivery service. The server freezes the exact deterministic provider shipping quote before payment; a service can be unavailable when provider eligibility, a one-day zone result, or required provider cost evidence is unavailable.","enum":["economy_untracked","economy","expedited","standard_one_day","priority_one_day"],"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].fulfillment_constraints.shipping_services.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].fulfillment_constraints.shipping_services","typeLabel":"enum\u003cstring>[]"}},"required":["fulfillment_group"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].fulfillment_constraints","typeLabel":"object"},"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].id","typeLabel":"string"},"product":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].product.id","typeLabel":"string"},"revision":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].product.revision","typeLabel":"integer"}},"required":["id","revision"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].product","typeLabel":"object"},"provider_id":{"enum":["whcc","rpl"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].provider_id","typeLabel":"enum\u003cstring>"},"currency":{"const":"USD","type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].currency","typeLabel":"string"},"pricing_revision":{"minLength":1,"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].pricing_revision","typeLabel":"string"},"unit_cost_cents":{"minimum":0,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX].unit_cost_cents","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.provider_offers","typeLabel":"object[]"},"text_requirements":{"description":"Provider-neutral ordered text slots supported by this product. The current catalog publishes six generic Memory Mate slots while final visual/provider field labels are under verification; clients must use the returned slot IDs rather than infer provider node IDs.","items":{"additionalProperties":false,"properties":{"allow_blank":{"type":"boolean","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.text_requirements.items.[INDEX].allow_blank","typeLabel":"boolean"},"name":{"description":"Current public label. Memory Mate labels are intentionally generic while final visual/provider-field mapping is under verification.","type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.text_requirements.items.[INDEX].name","typeLabel":"string"},"slot":{"enum":["text-1","text-2","text-3","text-4","text-5","text-6"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.text_requirements.items.[INDEX].slot","typeLabel":"enum\u003cstring>"}},"required":["slot","name","allow_blank"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.text_requirements.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0.text_requirements","typeLabel":"object[]"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.0","typeLabel":"object"},{"type":"object","required":["id","revision","name","description","family","variant_attributes","category","fulfillment_type","tax_category","units_per_quantity","options","asset_requirements","template_requirement","lifecycle"],"properties":{"category":{"type":"string","enum":["prints","keepsakes","trader-products","composites","digital-downloads"],"const":"digital-downloads","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.category","typeLabel":"enum\u003cstring>"},"fulfillment_type":{"type":"string","enum":["print","digital"],"const":"digital","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.fulfillment_type","typeLabel":"enum\u003cstring>"},"tax_category":{"type":"string","enum":["physical_print","digital_download"],"const":"digital_download","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.tax_category","typeLabel":"enum\u003cstring>"},"asset_requirements":{"items":{"additionalProperties":false,"properties":{"aspect_ratio":{"additionalProperties":false,"properties":{"height":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.asset_requirements.items.[INDEX].aspect_ratio.height","typeLabel":"integer"},"width":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.asset_requirements.items.[INDEX].aspect_ratio.width","typeLabel":"integer"}},"required":["width","height"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.asset_requirements.items.[INDEX].aspect_ratio","typeLabel":"object"},"required":{"type":"boolean","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.asset_requirements.items.[INDEX].required","typeLabel":"boolean"},"role":{"enum":["artwork","background","individual","team","logo","front","back"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.asset_requirements.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"rotation_policy":{"description":"Whether the prepared asset may use the transposed aspect orientation. Fixed is the default for templates and multi-asset layouts.","enum":["fixed","allowed"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.asset_requirements.items.[INDEX].rotation_policy","typeLabel":"enum\u003cstring>"}},"required":["role","aspect_ratio","required","rotation_policy"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.asset_requirements.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.asset_requirements","typeLabel":"object[]"},"description":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.description","typeLabel":"string"},"family":{"additionalProperties":false,"description":"Discovery grouping shared by related immutable products. Do not use a family ID in an order.","properties":{"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.family.id","typeLabel":"string"},"name":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.family.name","typeLabel":"string"}},"required":["id","name"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.family","typeLabel":"object"},"id":{"description":"Stable canonical product identifier.","type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.id","typeLabel":"string"},"lifecycle":{"additionalProperties":false,"properties":{"status":{"enum":["active","deprecated"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.lifecycle.status","typeLabel":"enum\u003cstring>"},"replacement_product_id":{"description":"A recommended canonical replacement. Deprecated products remain decodable for historical records but cannot be planned for new fulfillment.","type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.lifecycle.replacement_product_id","typeLabel":"string"}},"required":["status"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.lifecycle","typeLabel":"object"},"name":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.name","typeLabel":"string"},"options":{"items":{"additionalProperties":false,"properties":{"affects_price":{"description":"Whether a selected value can change the provider unit cost.","type":"boolean","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options.items.[INDEX].affects_price","typeLabel":"boolean"},"default_value":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options.items.[INDEX].default_value","typeLabel":"string"},"id":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options.items.[INDEX].id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options.items.[INDEX].name","typeLabel":"string"},"values":{"items":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options.items.[INDEX].values","typeLabel":"string[]"},"description":{"description":"Platform-defined reference context for this option, not studio storefront copy.","type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options.items.[INDEX].description","typeLabel":"string"},"value_descriptions":{"description":"Shared reference definitions for the supported values. Provider availability is determined by provider offers, not by this metadata.","items":{"additionalProperties":false,"properties":{"description":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options.items.[INDEX].value_descriptions.items.[INDEX].description","typeLabel":"string"},"value":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options.items.[INDEX].value_descriptions.items.[INDEX].value","typeLabel":"string"}},"required":["value","description"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options.items.[INDEX].value_descriptions.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options.items.[INDEX].value_descriptions","typeLabel":"object[]"}},"required":["id","name","values","default_value","affects_price"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.options","typeLabel":"object[]"},"revision":{"description":"Immutable fulfillment-contract revision.","minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.revision","typeLabel":"integer"},"template_requirement":{"description":"Product-specific template policy. required accepts only artwork from a succeeded Batch Relay template render; optional accepts either a compatible rendered output or direct prepared artwork; unsupported has no template workflow.","enum":["required","optional","unsupported"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.template_requirement","typeLabel":"enum\u003cstring>"},"units_per_quantity":{"description":"Units produced or delivered by one line quantity.","minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.units_per_quantity","typeLabel":"integer"},"variant_attributes":{"additionalProperties":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.variant_attributes.additionalProperties","typeLabel":"string"},"description":"Display and filtering attributes for one immutable variant. These values do not replace the product ID and revision in an order.","type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.variant_attributes","typeLabel":"object"},"artwork_orientation":{"additionalProperties":false,"description":"Revisioned role layout discovery. Legacy metadata derives only from existing asset requirements and is not verified full-canvas provider support. Missing metadata preserves historical behavior. No shopper layout selector is introduced.","properties":{"revision":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.artwork_orientation.revision","typeLabel":"string"},"roles":{"items":{"additionalProperties":false,"properties":{"allowed_orientations":{"items":{"enum":["portrait","landscape","square"],"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.artwork_orientation.roles.items.[INDEX].allowed_orientations.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.artwork_orientation.roles.items.[INDEX].allowed_orientations","typeLabel":"enum\u003cstring>[]"},"role":{"enum":["artwork","background","individual","team","logo","front","back"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.artwork_orientation.roles.items.[INDEX].role","typeLabel":"enum\u003cstring>"}},"required":["role","allowed_orientations"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.artwork_orientation.roles.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.artwork_orientation.roles","typeLabel":"object[]"},"verification":{"enum":["legacy","verified","unsupported"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.artwork_orientation.verification","typeLabel":"enum\u003cstring>"},"version":{"enum":["batchrelay.product-orientation/v1"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.artwork_orientation.version","typeLabel":"enum\u003cstring>"},"evidence":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.artwork_orientation.evidence","typeLabel":"string"}},"required":["version","revision","verification","roles"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.artwork_orientation","typeLabel":"object"},"consumer_quantity":{"additionalProperties":false,"properties":{"unit_plural":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.consumer_quantity.unit_plural","typeLabel":"string"},"unit_singular":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.consumer_quantity.unit_singular","typeLabel":"string"},"container_plural":{"minLength":1,"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.consumer_quantity.container_plural","typeLabel":"string"},"container_singular":{"minLength":1,"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.consumer_quantity.container_singular","typeLabel":"string"}},"required":["unit_singular","unit_plural"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.consumer_quantity","typeLabel":"object"},"fulfillment_target":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.fulfillment_target.id","typeLabel":"string"},"revision":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.fulfillment_target.revision","typeLabel":"integer"}},"required":["id","revision"],"type":"object","description":"The standard physical product used for provider-neutral routing after a composed product has flattened to finished artwork.","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.fulfillment_target","typeLabel":"object"},"orientation_capabilities":{"additionalProperties":false,"description":"Explicit audited canonical physical capability and verified provider full-canvas profiles. Omitted until verified; legacy artwork_orientation never implies this object exists. Platform and optional Studio policies may only restrict these choices.","properties":{"allowed_orientations":{"items":{"enum":["portrait","landscape","square"],"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.allowed_orientations.items.[INDEX]","typeLabel":"enum\u003cstring>"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.allowed_orientations","typeLabel":"enum\u003cstring>[]"},"provider_targets":{"items":{"additionalProperties":false,"properties":{"allowed_orientations":{"items":{"enum":["portrait","landscape","square"],"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].allowed_orientations.items.[INDEX]","typeLabel":"enum\u003cstring>"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].allowed_orientations","typeLabel":"enum\u003cstring>[]"},"dpi":{"enum":[300,600],"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].dpi","typeLabel":"enum\u003cinteger>"},"height":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].height","typeLabel":"integer"},"native_rotation":{"enum":["automatic","explicit","none"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].native_rotation","typeLabel":"enum\u003cstring>"},"product":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].product.id","typeLabel":"string"},"revision":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].product.revision","typeLabel":"integer"}},"required":["id","revision"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].product","typeLabel":"object"},"provider_id":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].provider_id","typeLabel":"string"},"quarter_turn":{"enum":[90,270],"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].quarter_turn","typeLabel":"enum\u003cinteger>"},"revision":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].revision","typeLabel":"integer"},"role":{"enum":["artwork","background","individual","team","logo","front","back"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"verification_evidence":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].verification_evidence","typeLabel":"string"},"width":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX].width","typeLabel":"integer"}},"required":["provider_id","revision","product","role","width","height","dpi","allowed_orientations","quarter_turn","native_rotation","verification_evidence"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities.provider_targets","typeLabel":"object[]"}},"required":["allowed_orientations","provider_targets"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.orientation_capabilities","typeLabel":"object"},"physical_output":{"additionalProperties":false,"properties":{"height":{"exclusiveMinimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.physical_output.height","typeLabel":"number"},"unit":{"const":"inches","type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.physical_output.unit","typeLabel":"string"},"width":{"exclusiveMinimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.physical_output.width","typeLabel":"number"}},"required":["width","height","unit"],"type":"object","description":"Required for physical print products and omitted for digital products.","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.physical_output","typeLabel":"object"},"prepared_artwork":{"additionalProperties":false,"properties":{"finished_area":{"additionalProperties":false,"properties":{"kind":{"enum":["rectangle","circle"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.finished_area.kind","typeLabel":"enum\u003cstring>"},"center_in":{"additionalProperties":false,"properties":{"x":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.finished_area.center_in.x","typeLabel":"number"},"y":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.finished_area.center_in.y","typeLabel":"number"}},"required":["x","y"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.finished_area.center_in","typeLabel":"object"},"diameter_in":{"exclusiveMinimum":0,"type":"number","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.finished_area.diameter_in","typeLabel":"number"},"inset_in":{"additionalProperties":false,"properties":{"bottom":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.finished_area.inset_in.bottom","typeLabel":"number"},"left":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.finished_area.inset_in.left","typeLabel":"number"},"right":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.finished_area.inset_in.right","typeLabel":"number"},"top":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.finished_area.inset_in.top","typeLabel":"number"}},"required":["left","top","right","bottom"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.finished_area.inset_in","typeLabel":"object"}},"required":["kind"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.finished_area","typeLabel":"object"},"important_content_area":{"additionalProperties":false,"properties":{"kind":{"enum":["rectangle","circle"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.important_content_area.kind","typeLabel":"enum\u003cstring>"},"center_in":{"additionalProperties":false,"properties":{"x":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.important_content_area.center_in.x","typeLabel":"number"},"y":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.important_content_area.center_in.y","typeLabel":"number"}},"required":["x","y"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.important_content_area.center_in","typeLabel":"object"},"diameter_in":{"exclusiveMinimum":0,"type":"number","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.important_content_area.diameter_in","typeLabel":"number"},"inset_in":{"additionalProperties":false,"properties":{"bottom":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.important_content_area.inset_in.bottom","typeLabel":"number"},"left":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.important_content_area.inset_in.left","typeLabel":"number"},"right":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.important_content_area.inset_in.right","typeLabel":"number"},"top":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.important_content_area.inset_in.top","typeLabel":"number"}},"required":["left","top","right","bottom"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.important_content_area.inset_in","typeLabel":"object"}},"required":["kind"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.important_content_area","typeLabel":"object"},"output_bounds_in":{"additionalProperties":false,"properties":{"height":{"exclusiveMinimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.output_bounds_in.height","typeLabel":"number"},"width":{"exclusiveMinimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.output_bounds_in.width","typeLabel":"number"}},"required":["width","height"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.output_bounds_in","typeLabel":"object"},"output_dpi":{"maximum":1200,"minimum":72,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.output_dpi","typeLabel":"integer"},"supported_output_dpis":{"items":{"maximum":1200,"minimum":72,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.supported_output_dpis.items.[INDEX]","typeLabel":"integer"},"type":"array","uniqueItems":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork.supported_output_dpis","typeLabel":"integer[]"}},"required":["output_bounds_in","output_dpi","finished_area","important_content_area"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.prepared_artwork","typeLabel":"object"},"print_safety_profile":{"additionalProperties":false,"properties":{"expected_trim_fraction_per_edge":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.print_safety_profile.expected_trim_fraction_per_edge","typeLabel":"number"},"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.print_safety_profile.id","typeLabel":"string"},"important_content_inset_in":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.print_safety_profile.important_content_inset_in","typeLabel":"number"},"minimum_border_inset_in":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.print_safety_profile.minimum_border_inset_in","typeLabel":"number"},"trim_bottom_in":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.print_safety_profile.trim_bottom_in","typeLabel":"number"},"trim_left_in":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.print_safety_profile.trim_left_in","typeLabel":"number"},"trim_right_in":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.print_safety_profile.trim_right_in","typeLabel":"number"},"trim_top_in":{"minimum":0,"type":"number","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.print_safety_profile.trim_top_in","typeLabel":"number"},"version":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.print_safety_profile.version","typeLabel":"integer"},"mounted":{"type":"boolean","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.print_safety_profile.mounted","typeLabel":"boolean"}},"required":["id","version","expected_trim_fraction_per_edge","trim_left_in","trim_top_in","trim_right_in","trim_bottom_in","important_content_inset_in","minimum_border_inset_in"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.print_safety_profile","typeLabel":"object"},"provider_offers":{"description":"Approved provider prices for this deployment environment. Omitted when no provider-specific pricebook snapshot is available for discovery.","items":{"type":"object","description":"Canonical provider-neutral discovery data. Available WHCC offers include a verified exact unit cost. Unknown or unavailable offers, including the current RPL entry, never contain a currency, unit cost, or pricing revision and are not chargeable quotes.","required":["id","product","configuration","provider_id","availability","fulfillment_constraints"],"properties":{"availability":{"enum":["available","unavailable","unknown"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].availability","typeLabel":"enum\u003cstring>"},"configuration":{"additionalProperties":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].configuration.additionalProperties","typeLabel":"string"},"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].configuration","typeLabel":"object"},"fulfillment_constraints":{"additionalProperties":false,"properties":{"fulfillment_group":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].fulfillment_constraints.fulfillment_group","typeLabel":"string"},"requirements":{"items":{"minLength":1,"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].fulfillment_constraints.requirements.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].fulfillment_constraints.requirements","typeLabel":"string[]"},"shipping_services":{"items":{"description":"Required domestic US delivery service. The server freezes the exact deterministic provider shipping quote before payment; a service can be unavailable when provider eligibility, a one-day zone result, or required provider cost evidence is unavailable.","enum":["economy_untracked","economy","expedited","standard_one_day","priority_one_day"],"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].fulfillment_constraints.shipping_services.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].fulfillment_constraints.shipping_services","typeLabel":"enum\u003cstring>[]"}},"required":["fulfillment_group"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].fulfillment_constraints","typeLabel":"object"},"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].id","typeLabel":"string"},"product":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].product.id","typeLabel":"string"},"revision":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].product.revision","typeLabel":"integer"}},"required":["id","revision"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].product","typeLabel":"object"},"provider_id":{"enum":["whcc","rpl"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].provider_id","typeLabel":"enum\u003cstring>"},"currency":{"const":"USD","type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].currency","typeLabel":"string"},"pricing_revision":{"minLength":1,"type":"string","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].pricing_revision","typeLabel":"string"},"unit_cost_cents":{"minimum":0,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX].unit_cost_cents","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.provider_offers","typeLabel":"object[]"},"text_requirements":{"description":"Provider-neutral ordered text slots supported by this product. The current catalog publishes six generic Memory Mate slots while final visual/provider field labels are under verification; clients must use the returned slot IDs rather than infer provider node IDs.","items":{"additionalProperties":false,"properties":{"allow_blank":{"type":"boolean","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.text_requirements.items.[INDEX].allow_blank","typeLabel":"boolean"},"name":{"description":"Current public label. Memory Mate labels are intentionally generic while final visual/provider-field mapping is under verification.","type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.text_requirements.items.[INDEX].name","typeLabel":"string"},"slot":{"enum":["text-1","text-2","text-3","text-4","text-5","text-6"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.text_requirements.items.[INDEX].slot","typeLabel":"enum\u003cstring>"}},"required":["slot","name","allow_blank"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.text_requirements.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1.text_requirements","typeLabel":"object[]"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].product","typeLabel":"object"},"request":{"additionalProperties":false,"properties":{"assets":{"items":{"oneOf":[{"type":"object","description":"Public asset source. Supply role plus exactly one of url or asset_id. Batch Relay resolves and freezes immutable metadata during quote; optional metadata is a non-authoritative preflight hint. Products with template_requirement=required accept only the asset_id from a succeeded Batch Relay template render plus template_render_id. Public submission never passes a source URL to a provider. For photo-button-3 revision 2 and trader-cards-12 revision 2, quote creation infers an omitted dpi from measured dimensions when all artwork already matches a supported output profile. If flexible artwork preparation is enabled for the account and credential lane, direct artwork with omitted dpi can be downscaled to the 300-PPI output canvas. Existing exact 300/600-PPI artwork and verified template outputs retain their bytes and profile; explicit dpi keeps strict prepared-artwork validation. Catalog prepared_artwork still describes the final file, not a general permission to crop or upscale.","required":["role","url"],"properties":{"role":{"enum":["artwork","background","individual","team","logo","front","back"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"url":{"description":"HTTPS source copied into managed fulfillment storage during quote.","format":"uri","pattern":"^https://","type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.url","typeLabel":"string\u003curi>"},"asset_id":{"description":"Existing authorized bra_ managed asset or same-studio image asset. A valid prepared output is reused; enabled flexible preparation creates a separate immutable derivative when needed.","type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.asset_id","typeLabel":"string"},"dpi":{"description":"Optional prepared-output resolution. Omit it to infer a supported exact profile at quote time; zero retains the legacy omitted-value behavior. A positive value must match both measured pixel dimensions and the selected product revision. When any asset in a line supplies a positive DPI, that line keeps strict prepared-artwork validation. This is not trusted image-file metadata.","minimum":0,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.dpi","typeLabel":"integer"},"file_size_bytes":{"description":"Optional non-authoritative preflight hint.","minimum":1,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.file_size_bytes","typeLabel":"integer"},"format":{"description":"Optional non-authoritative preflight hint.","enum":["jpeg","png","tiff","webp"],"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.format","typeLabel":"enum\u003cstring>"},"hash":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.hash","typeLabel":"string"},"origin":{"additionalProperties":false,"properties":{"design_id":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.origin.design_id","typeLabel":"string"},"design_orientation":{"enum":["portrait","landscape","square"],"type":"string","readOnly":true,"uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.origin.design_orientation","typeLabel":"enum\u003cstring>"},"design_version":{"minimum":1,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.origin.design_version","typeLabel":"integer"},"kind":{"enum":["whcc-preset","batch-relay-design","studio-design","community-design","custom-upload"],"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.origin.kind","typeLabel":"enum\u003cstring>"},"template_output_id":{"readOnly":true,"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.origin.template_output_id","typeLabel":"string"},"template_render_id":{"readOnly":true,"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.origin.template_render_id","typeLabel":"string"},"template_revision_id":{"readOnly":true,"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.origin.template_revision_id","typeLabel":"string"}},"type":"object","description":"Ignored for template provenance; the server derives it from template_render_id.","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.origin","typeLabel":"object"},"pixel_height":{"description":"Optional non-authoritative preflight hint.","minimum":1,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.pixel_height","typeLabel":"integer"},"pixel_width":{"description":"Optional non-authoritative preflight hint.","minimum":1,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.pixel_width","typeLabel":"integer"},"printed_file_name":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.printed_file_name","typeLabel":"string"},"template_render_id":{"description":"Required with asset_id for a template-required product. Batch Relay verifies the succeeded render owns the selected artifact.","type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0.template_render_id","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Public asset source. Supply role plus exactly one of url or asset_id. Batch Relay resolves and freezes immutable metadata during quote; optional metadata is a non-authoritative preflight hint. Products with template_requirement=required accept only the asset_id from a succeeded Batch Relay template render plus template_render_id. Public submission never passes a source URL to a provider. For photo-button-3 revision 2 and trader-cards-12 revision 2, quote creation infers an omitted dpi from measured dimensions when all artwork already matches a supported output profile. If flexible artwork preparation is enabled for the account and credential lane, direct artwork with omitted dpi can be downscaled to the 300-PPI output canvas. Existing exact 300/600-PPI artwork and verified template outputs retain their bytes and profile; explicit dpi keeps strict prepared-artwork validation. Catalog prepared_artwork still describes the final file, not a general permission to crop or upscale.","required":["role","asset_id"],"properties":{"asset_id":{"description":"Existing authorized bra_ managed asset or same-studio image asset. A valid prepared output is reused; enabled flexible preparation creates a separate immutable derivative when needed.","type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.asset_id","typeLabel":"string"},"role":{"enum":["artwork","background","individual","team","logo","front","back"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"dpi":{"description":"Optional prepared-output resolution. Omit it to infer a supported exact profile at quote time; zero retains the legacy omitted-value behavior. A positive value must match both measured pixel dimensions and the selected product revision. When any asset in a line supplies a positive DPI, that line keeps strict prepared-artwork validation. This is not trusted image-file metadata.","minimum":0,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.dpi","typeLabel":"integer"},"file_size_bytes":{"description":"Optional non-authoritative preflight hint.","minimum":1,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.file_size_bytes","typeLabel":"integer"},"format":{"description":"Optional non-authoritative preflight hint.","enum":["jpeg","png","tiff","webp"],"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.format","typeLabel":"enum\u003cstring>"},"hash":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.hash","typeLabel":"string"},"origin":{"additionalProperties":false,"properties":{"design_id":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.origin.design_id","typeLabel":"string"},"design_orientation":{"enum":["portrait","landscape","square"],"type":"string","readOnly":true,"uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.origin.design_orientation","typeLabel":"enum\u003cstring>"},"design_version":{"minimum":1,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.origin.design_version","typeLabel":"integer"},"kind":{"enum":["whcc-preset","batch-relay-design","studio-design","community-design","custom-upload"],"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.origin.kind","typeLabel":"enum\u003cstring>"},"template_output_id":{"readOnly":true,"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.origin.template_output_id","typeLabel":"string"},"template_render_id":{"readOnly":true,"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.origin.template_render_id","typeLabel":"string"},"template_revision_id":{"readOnly":true,"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.origin.template_revision_id","typeLabel":"string"}},"type":"object","description":"Ignored for template provenance; the server derives it from template_render_id.","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.origin","typeLabel":"object"},"pixel_height":{"description":"Optional non-authoritative preflight hint.","minimum":1,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.pixel_height","typeLabel":"integer"},"pixel_width":{"description":"Optional non-authoritative preflight hint.","minimum":1,"type":"integer","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.pixel_width","typeLabel":"integer"},"printed_file_name":{"type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.printed_file_name","typeLabel":"string"},"template_render_id":{"description":"Required with asset_id for a template-required product. Batch Relay verifies the succeeded render owns the selected artifact.","type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.template_render_id","typeLabel":"string"},"url":{"description":"HTTPS source copied into managed fulfillment storage during quote.","format":"uri","pattern":"^https://","type":"string","uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1.url","typeLabel":"string\u003curi>"}},"additionalProperties":false,"uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"plan.lines.items.[INDEX].request.assets.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.assets","typeLabel":"object[]"},"product":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.product.id","typeLabel":"string"},"revision":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.product.revision","typeLabel":"integer"}},"required":["id","revision"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.product","typeLabel":"object"},"quantity":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.quantity","typeLabel":"integer"},"options":{"items":{"additionalProperties":false,"properties":{"option_id":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.options.items.[INDEX].option_id","typeLabel":"string"},"value":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.options.items.[INDEX].value","typeLabel":"string"}},"required":["option_id","value"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].request.options.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"plan.lines.items.[INDEX].request.options","typeLabel":"object[]"},"texts":{"description":"Text values keyed by the selected product's published semantic slots. Each slot may occur at most once; preserve intentional whitespace exactly.","items":{"additionalProperties":false,"properties":{"slot":{"enum":["text-1","text-2","text-3","text-4","text-5","text-6"],"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.texts.items.[INDEX].slot","typeLabel":"enum\u003cstring>"},"value":{"type":"string","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request.texts.items.[INDEX].value","typeLabel":"string"}},"required":["slot","value"],"type":"object","uniqueKey":"plan.lines.items.[INDEX].request.texts.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"plan.lines.items.[INDEX].request.texts","typeLabel":"object[]"}},"required":["product","quantity","assets"],"type":"object","isRequired":true,"uniqueKey":"plan.lines.items.[INDEX].request","typeLabel":"object"}},"required":["request","product"],"type":"object","uniqueKey":"plan.lines.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"plan.lines","typeLabel":"object[]"},"schema_version":{"const":1,"type":"integer","isRequired":true,"uniqueKey":"plan.schema_version","typeLabel":"integer"},"ship_from":{"additionalProperties":false,"properties":{"address_1":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.ship_from.address_1","typeLabel":"string"},"city":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.ship_from.city","typeLabel":"string"},"country":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.ship_from.country","typeLabel":"string"},"name":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.ship_from.name","typeLabel":"string"},"phone":{"description":"E.164 phone number, for example +16516468263","pattern":"^\\+[1-9][0-9]{1,14}$","type":"string","isRequired":true,"uniqueKey":"plan.ship_from.phone","typeLabel":"string"},"postal_code":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.ship_from.postal_code","typeLabel":"string"},"state":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.ship_from.state","typeLabel":"string"},"address_2":{"type":"string","uniqueKey":"plan.ship_from.address_2","typeLabel":"string"}},"required":["name","address_1","city","state","postal_code","country","phone"],"type":"object","isRequired":true,"uniqueKey":"plan.ship_from","typeLabel":"object"},"ship_to":{"additionalProperties":false,"properties":{"address_1":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.ship_to.address_1","typeLabel":"string"},"city":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.ship_to.city","typeLabel":"string"},"country":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.ship_to.country","typeLabel":"string"},"name":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.ship_to.name","typeLabel":"string"},"phone":{"description":"E.164 phone number, for example +16516468263","pattern":"^\\+[1-9][0-9]{1,14}$","type":"string","isRequired":true,"uniqueKey":"plan.ship_to.phone","typeLabel":"string"},"postal_code":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.ship_to.postal_code","typeLabel":"string"},"state":{"minLength":1,"type":"string","isRequired":true,"uniqueKey":"plan.ship_to.state","typeLabel":"string"},"address_2":{"type":"string","uniqueKey":"plan.ship_to.address_2","typeLabel":"string"}},"required":["name","address_1","city","state","postal_code","country","phone"],"type":"object","isRequired":true,"uniqueKey":"plan.ship_to","typeLabel":"object"},"shipping_service":{"description":"Required domestic US delivery service. The server freezes the exact deterministic provider shipping quote before payment; a service can be unavailable when provider eligibility, a one-day zone result, or required provider cost evidence is unavailable.","enum":["economy_untracked","economy","expedited","standard_one_day","priority_one_day"],"type":"string","isRequired":true,"uniqueKey":"plan.shipping_service","typeLabel":"enum\u003cstring>"}},"required":["schema_version","environment","external_order_id","ship_to","ship_from","shipping_service","lines"],"type":"object","isRequired":true,"uniqueKey":"plan","typeLabel":"object"}},"required":["plan"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"plan":{"environment":"sandbox","external_order_id":"\u003cstring>","lines":[{"product":{"fulfillment_type":"print","tax_category":"physical_print","asset_requirements":[{"aspect_ratio":{"height":2,"width":2},"required":true,"role":"artwork","rotation_policy":"fixed"}],"category":"prints","description":"\u003cstring>","family":{"id":"\u003cstring>","name":"\u003cstring>"},"id":"\u003cstring>","lifecycle":{"status":"active","replacement_product_id":"\u003cstring>"},"name":"\u003cstring>","options":[{"affects_price":true,"default_value":"\u003cstring>","id":"\u003cstring>","name":"\u003cstring>","values":["\u003cstring>"],"description":"\u003cstring>","value_descriptions":[{"description":"\u003cstring>","value":"\u003cstring>"}]}],"physical_output":{"height":123,"unit":"inches","width":123},"revision":2,"template_requirement":"required","units_per_quantity":2,"variant_attributes":{},"artwork_orientation":{"revision":"\u003cstring>","roles":[{"allowed_orientations":["portrait"],"role":"artwork"}],"verification":"legacy","version":"batchrelay.product-orientation/v1","evidence":"\u003cstring>"},"consumer_quantity":{"unit_plural":"\u003cstring>","unit_singular":"\u003cstring>","container_plural":"\u003cstring>","container_singular":"\u003cstring>"},"fulfillment_target":{"id":"\u003cstring>","revision":2},"orientation_capabilities":{"allowed_orientations":["portrait"],"provider_targets":[{"allowed_orientations":["portrait"],"dpi":300,"height":2,"native_rotation":"automatic","product":{"id":"\u003cstring>","revision":2},"provider_id":"\u003cstring>","quarter_turn":90,"revision":2,"role":"artwork","verification_evidence":"\u003cstring>","width":2}]},"prepared_artwork":{"finished_area":{"kind":"rectangle","center_in":{"x":1,"y":1},"diameter_in":123,"inset_in":{"bottom":1,"left":1,"right":1,"top":1}},"important_content_area":{"kind":"rectangle","center_in":{"x":1,"y":1},"diameter_in":123,"inset_in":{"bottom":1,"left":1,"right":1,"top":1}},"output_bounds_in":{"height":123,"width":123},"output_dpi":636,"supported_output_dpis":[636]},"print_safety_profile":{"expected_trim_fraction_per_edge":1,"id":"\u003cstring>","important_content_inset_in":1,"minimum_border_inset_in":1,"trim_bottom_in":1,"trim_left_in":1,"trim_right_in":1,"trim_top_in":1,"version":2,"mounted":true},"provider_offers":[{"availability":"available","configuration":{},"fulfillment_constraints":{"fulfillment_group":"\u003cstring>","requirements":["\u003cstring>"],"shipping_services":["economy_untracked"]},"id":"\u003cstring>","product":{"id":"\u003cstring>","revision":2},"provider_id":"whcc","currency":"USD","pricing_revision":"\u003cstring>","unit_cost_cents":1}],"text_requirements":[{"allow_blank":true,"name":"\u003cstring>","slot":"text-1"}]},"request":{"assets":[{"role":"artwork","url":"\u003cstring>","asset_id":"\u003cstring>","dpi":1,"file_size_bytes":2,"format":"jpeg","hash":"\u003cstring>","origin":{"design_id":"\u003cstring>","design_orientation":"portrait","design_version":2,"kind":"whcc-preset","template_output_id":"\u003cstring>","template_render_id":"\u003cstring>","template_revision_id":"\u003cstring>"},"pixel_height":2,"pixel_width":2,"printed_file_name":"\u003cstring>","template_render_id":"\u003cstring>"}],"product":{"id":"\u003cstring>","revision":2},"quantity":2,"options":[{"option_id":"\u003cstring>","value":"\u003cstring>"}],"texts":[{"slot":"text-1","value":"\u003cstring>"}]}}],"schema_version":1,"ship_from":{"address_1":"\u003cstring>","city":"\u003cstring>","country":"\u003cstring>","name":"\u003cstring>","phone":"\u003cstring>","postal_code":"\u003cstring>","state":"\u003cstring>","address_2":"\u003cstring>"},"ship_to":{"address_1":"\u003cstring>","city":"\u003cstring>","country":"\u003cstring>","name":"\u003cstring>","phone":"\u003cstring>","postal_code":"\u003cstring>","state":"\u003cstring>","address_2":"\u003cstring>"},"shipping_service":"economy_untracked"}}}},"exampleType":"generated"}},"description":"Validated, immutable fulfillment plan","exampleType":"generated"},"dedd225a-0f2a-4133-9577-d4f08fad1cd9":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"docs_url":{"format":"uri","type":"string","isRequired":true,"uniqueKey":"docs_url","typeLabel":"string\u003curi>"},"error":{"description":"Backward-compatible human-readable error.","type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"request_id":{"type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"}},"required":["error","code","message","docs_url","request_id"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","docs_url":"\u003cstring>","error":"\u003cstring>","message":"\u003cstring>","request_id":"\u003cstring>"}}},"exampleType":"generated"}},"description":"The body was malformed, contained unknown fields, or was not exactly one JSON object.","exampleType":"generated"},"4117ab5c-c49e-495d-8d35-ad2ca7a8619d":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"docs_url":{"format":"uri","type":"string","isRequired":true,"uniqueKey":"docs_url","typeLabel":"string\u003curi>"},"error":{"description":"Backward-compatible human-readable error.","type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"request_id":{"type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"}},"required":["error","code","message","docs_url","request_id"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","docs_url":"\u003cstring>","error":"\u003cstring>","message":"\u003cstring>","request_id":"\u003cstring>"}}},"exampleType":"generated"}},"description":"The body exceeded 2 MiB.","exampleType":"generated"},"cdec12b3-e749-4b59-a2c3-a57d511e342a":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"code":{"description":"Stable machine-readable error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"docs_url":{"format":"uri","type":"string","isRequired":true,"uniqueKey":"docs_url","typeLabel":"string\u003curi>"},"error":{"description":"Backward-compatible human-readable error.","type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"request_id":{"type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"}},"required":["error","code","message","docs_url","request_id"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","docs_url":"\u003cstring>","error":"\u003cstring>","message":"\u003cstring>","request_id":"\u003cstring>"}}},"exampleType":"generated"}},"description":"The order did not satisfy the catalog, option, quantity, address, or prepared-media requirements.","exampleType":"generated"}},"security":{},"servers":{"60384607-e10c-4b83-b9c9-06793f8172ef":{"url":"https://api.batchrelay.com"}}},"originalFileLocation":"https://api.batchrelay.com/openapi.json"},"subdomain":"ftrbnd","siteName":"Batch Relay API","title":"Validate a non-authorizing prepared-media print order - Batch Relay API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T09:25:54.054Z","originalFileLocation":"api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order.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=\"Accepts exactly one JSON object up to 2 MiB and rejects unknown fields. environment is used only for structural preflight and cannot quote, create, pay for, upload media for, or submit an order. Authenticated quote and submission routes derive their fulfillment lane from the API credential. Clients must fetch the catalog and use the selected product revision\u0026#x27;s asset requirements, text requirements, and options. This read-only preflight never downloads or transforms image sources; its result does not establish source-image readiness. Authoritative image inspection, DPI inference, and any enabled preparation happen during authenticated quote creation.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Batch Relay API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/ftrbnd/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/ftrbnd/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/ftrbnd/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/ftrbnd/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"Validate a non-authorizing prepared-media print order - Batch Relay API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Accepts exactly one JSON object up to 2 MiB and rejects unknown fields. environment is used only for structural preflight and cannot quote, create, pay for, upload media for, or submit an order. Authenticated quote and submission routes derive their fulfillment lane from the API credential. Clients must fetch the catalog and use the selected product revision\u0026#x27;s asset requirements, text requirements, and options. This read-only preflight never downloads or transforms image sources; its result does not establish source-image readiness. Authoritative image inspection, DPI inference, and any enabled preparation happen during authenticated quote creation.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Batch Relay API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.batchrelay.com/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ftrbnd.mintlify.app/_mintlify/api/og/v2?division=Print+orders\u0026amp;title=Validate+a+non-authorizing+prepared-media+print+order\u0026amp;description=Accepts+exactly+one+JSON+object+up+to+2+MiB+and+rejects+unknown+fields.+environment+is+used+only+for+structural+preflight+and+cannot+quote%2C+create%2C+pay+for%2C+upl\u0026amp;theme=182a8e84995dd9358c2ea7e4\u0026amp;signature=68bd4394be1d206c7db8790b40bb7b9d27c43850db10fbea1aa6bb3c81a9d603\">\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=\"Validate a non-authorizing prepared-media print order - Batch Relay API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Accepts exactly one JSON object up to 2 MiB and rejects unknown fields. environment is used only for structural preflight and cannot quote, create, pay for, upload media for, or submit an order. Authenticated quote and submission routes derive their fulfillment lane from the API credential. Clients must fetch the catalog and use the selected product revision\u0026#x27;s asset requirements, text requirements, and options. This read-only preflight never downloads or transforms image sources; its result does not establish source-image readiness. Authoritative image inspection, DPI inference, and any enabled preparation happen during authenticated quote creation.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ftrbnd.mintlify.app/_mintlify/api/og/v2?division=Print+orders\u0026amp;title=Validate+a+non-authorizing+prepared-media+print+order\u0026amp;description=Accepts+exactly+one+JSON+object+up+to+2+MiB+and+rejects+unknown+fields.+environment+is+used+only+for+structural+preflight+and+cannot+quote%2C+create%2C+pay+for%2C+upl\u0026amp;theme=182a8e84995dd9358c2ea7e4\u0026amp;signature=68bd4394be1d206c7db8790b40bb7b9d27c43850db10fbea1aa6bb3c81a9d603\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/ftrbnd/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Batch Relay API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563EB\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.batchrelay.com/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.batchrelay.com/#organization\",\"name\":\"Batch Relay API\",\"url\":\"https://docs.batchrelay.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://media.brand.dev/e0f13cde-5756-4d8b-bfdf-01f76e6b0d41.svg\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.batchrelay.com#website\",\"name\":\"Batch Relay API\",\"url\":\"https://docs.batchrelay.com\",\"publisher\":{\"@id\":\"https://docs.batchrelay.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.batchrelay.com/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order#webpage\",\"url\":\"https://docs.batchrelay.com/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order\",\"name\":\"Validate a non-authorizing prepared-media print order\",\"description\":\"Accepts exactly one JSON object up to 2 MiB and rejects unknown fields. environment is used only for structural preflight and cannot quote, create, pay for, upload media for, or submit an order. Authenticated quote and submission routes derive their fulfillment lane from the API credential. Clients must fetch the catalog and use the selected product revision's asset requirements, text requirements, and options. This read-only preflight never downloads or transforms image sources; its result does not establish source-image readiness. Authoritative image inspection, DPI inference, and any enabled preparation happen during authenticated quote creation.\",\"dateModified\":\"2026-11-04T09:25:54.054Z\",\"isPartOf\":{\"@id\":\"https://docs.batchrelay.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.batchrelay.com/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.batchrelay.com/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Print orders\",\"item\":\"https://docs.batchrelay.com/api-reference/print-orders/list-account-scoped-api-print-orders\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Validate a non-authorizing prepared-media print order\",\"item\":\"https://docs.batchrelay.com/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.batchrelay.com/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order#apireference\",\"headline\":\"Validate a non-authorizing prepared-media print order\",\"name\":\"Validate a non-authorizing prepared-media print order\",\"description\":\"Accepts exactly one JSON object up to 2 MiB and rejects unknown fields. environment is used only for structural preflight and cannot quote, create, pay for, upload media for, or submit an order. Authenticated quote and submission routes derive their fulfillment lane from the API credential. Clients must fetch the catalog and use the selected product revision's asset requirements, text requirements, and options. This read-only preflight never downloads or transforms image sources; its result does not establish source-image readiness. Authoritative image inspection, DPI inference, and any enabled preparation happen during authenticated quote creation.\",\"url\":\"https://docs.batchrelay.com/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order\",\"mainEntityOfPage\":{\"@id\":\"https://docs.batchrelay.com/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order#webpage\"},\"dateModified\":\"2026-11-04T09:25:54.054Z\",\"publisher\":{\"@id\":\"https://docs.batchrelay.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.batchrelay.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Batch Relay API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Batch Relay API","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/n8n"}]},{"tab":"Events","pages":[{"title":"Events","href":"/events/overview"}]},{"tab":"API Reference","groups":[{"group":"System","pages":[{"title":"Check API health","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /healthz","href":"/api-reference/system/check-api-health"},{"title":"Get this OpenAPI document","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /openapi.json","href":"/api-reference/system/get-this-openapi-document"}]},{"group":"Authentication","pages":[{"title":"Create an isolated Test Mode session","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/anonymous-sessions","href":"/api-reference/authentication/create-an-isolated-test-mode-session"},{"title":"Get safe API-key or dashboard authentication context","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/auth/status","href":"/api-reference/authentication/get-safe-api-key-or-dashboard-authentication-context"}]},{"group":"Anonymous sessions","pages":[{"title":"Create a one-time anonymous session claim code","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/anonymous-sessions/current/claim-codes","href":"/api-reference/anonymous-sessions/create-a-one-time-anonymous-session-claim-code"}]},{"group":"API accounts","pages":[{"title":"List authorized API accounts","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/api-accounts","href":"/api-reference/api-accounts/list-authorized-api-accounts"},{"title":"Create an individual or studio-owned API account","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/api-accounts","href":"/api-reference/api-accounts/create-an-individual-or-studio-owned-api-account"},{"title":"Get an authorized API account","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/api-accounts/{account_id}","href":"/api-reference/api-accounts/get-an-authorized-api-account"},{"title":"Activate an API account","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/api-accounts/{account_id}/activate","href":"/api-reference/api-accounts/activate-an-api-account"},{"title":"Get API account activation status","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/api-accounts/{account_id}/activation","href":"/api-reference/api-accounts/get-api-account-activation-status"},{"title":"Accept a versioned agreement","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/api-accounts/{account_id}/agreements/{agreement_id}/accept","href":"/api-reference/api-accounts/accept-a-versioned-agreement"},{"title":"Start hosted payment-method setup","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/api-accounts/{account_id}/billing/setup-sessions","href":"/api-reference/api-accounts/start-hosted-payment-method-setup"},{"title":"Claim an account sandbox","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/api-accounts/{account_id}/sandbox-claim","href":"/api-reference/api-accounts/claim-an-account-sandbox"},{"title":"Get API account usage and spend summary","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/usage","href":"/api-reference/api-accounts/get-api-account-usage-and-spend-summary"}]},{"group":"API keys","pages":[{"title":"List remote API keys","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/api-accounts/{account_id}/keys","href":"/api-reference/api-keys/list-remote-api-keys"},{"title":"Create a remote API key","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/api-accounts/{account_id}/keys","href":"/api-reference/api-keys/create-a-remote-api-key"},{"title":"Revoke a remote API key","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/api-accounts/{account_id}/keys/{key_id}/revoke","href":"/api-reference/api-keys/revoke-a-remote-api-key"},{"title":"Rotate a remote API key","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/api-accounts/{account_id}/keys/{key_id}/rotate","href":"/api-reference/api-keys/rotate-a-remote-api-key"}]},{"group":"Managed assets","pages":[{"title":"Copy one external image into Batch Relay-managed fulfillment storage","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/assets/ingest","href":"/api-reference/managed-assets/copy-one-external-image-into-batch-relay-managed-fulfillment-storage"}]},{"group":"Browser previews","pages":[{"title":"Get browser-preview proof status","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/browser-previews/{render_id}","href":"/api-reference/browser-previews/get-browser-preview-proof-status"},{"title":"Stream a short-lived browser-preview artifact","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/browser-previews/{render_id}/artifacts/{artifact_id}/content","href":"/api-reference/browser-previews/stream-a-short-lived-browser-preview-artifact"},{"title":"Get a published browser-preview package","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/templates/{template_id}/outputs/{output_id}/browser-preview","href":"/api-reference/browser-previews/get-a-published-browser-preview-package"},{"title":"Queue a short-lived browser proof render","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/templates/{template_id}/outputs/{output_id}/browser-preview","href":"/api-reference/browser-previews/queue-a-short-lived-browser-proof-render"},{"title":"Stream an authorized browser-preview source asset","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/templates/{template_id}/outputs/{output_id}/browser-preview/assets/{asset_ref}/content","href":"/api-reference/browser-previews/stream-an-authorized-browser-preview-source-asset"}]},{"group":"Catalog","pages":[{"title":"List active products","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/catalog/products","href":"/api-reference/catalog/list-active-products"},{"title":"Get one active product","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/catalog/products/{product_id}","href":"/api-reference/catalog/get-one-active-product"},{"title":"List exact published provider offers","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/catalog/products/{product_id}/offers","href":"/api-reference/catalog/list-exact-published-provider-offers"},{"title":"List semantic field definitions","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/catalog/semantic-fields","href":"/api-reference/catalog/list-semantic-field-definitions"},{"title":"Get a semantic field definition","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/catalog/semantic-fields/{semantic_key}","href":"/api-reference/catalog/get-a-semantic-field-definition"},{"title":"List V1 automation shipping services","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/catalog/shipping-services","href":"/api-reference/catalog/list-v1-automation-shipping-services"}]},{"group":"Consumer printing","pages":[{"title":"List published consumer listings, retail prices and caller-aware availability","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/consumer/catalog","href":"/api-reference/consumer-printing/list-published-consumer-listings-retail-prices-and-caller-aware-availability"},{"title":"Exchange a single-use handoff and rotate the session token","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/consumer/handoffs/exchange","href":"/api-reference/consumer-printing/exchange-a-single-use-handoff-and-rotate-the-session-token"},{"title":"Pay a frozen quote with a shared payment token","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/consumer/purchases","href":"/api-reference/consumer-printing/pay-a-frozen-quote-with-a-shared-payment-token"},{"title":"Create a separate guest print session","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/consumer/sessions","href":"/api-reference/consumer-printing/create-a-separate-guest-print-session"},{"title":"Read the exact owned guest session","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/consumer/sessions/{session_id}","href":"/api-reference/consumer-printing/read-the-exact-owned-guest-session"},{"title":"Upload local prepared image bytes","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json put /v1/consumer/sessions/{session_id}/assets","href":"/api-reference/consumer-printing/upload-local-prepared-image-bytes"},{"title":"Import a public HTTPS image into owned managed artwork","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/consumer/sessions/{session_id}/assets","href":"/api-reference/consumer-printing/import-a-public-https-image-into-owned-managed-artwork"},{"title":"Read an owned artwork preview without public storage capabilities","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/consumer/sessions/{session_id}/assets/{asset_id}/preview","href":"/api-reference/consumer-printing/read-an-owned-artwork-preview-without-public-storage-capabilities"},{"title":"Replace a guest cart using owned artwork","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json put /v1/consumer/sessions/{session_id}/cart","href":"/api-reference/consumer-printing/replace-a-guest-cart-using-owned-artwork"},{"title":"Create or reuse a hosted Checkout from an owned frozen quote","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/consumer/sessions/{session_id}/checkout","href":"/api-reference/consumer-printing/create-or-reuse-a-hosted-checkout-from-an-owned-frozen-quote"},{"title":"Create a single-use 30-minute browser handoff","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/consumer/sessions/{session_id}/handoffs","href":"/api-reference/consumer-printing/create-a-single-use-30-minute-browser-handoff"},{"title":"Read an owned order status and valid pending checkout resume link","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/consumer/sessions/{session_id}/orders/{order_id}","href":"/api-reference/consumer-printing/read-an-owned-order-status-and-valid-pending-checkout-resume-link"},{"title":"Freeze cart, recipient, retail price, authoritative shipping and tax","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/consumer/sessions/{session_id}/quotes","href":"/api-reference/consumer-printing/freeze-cart-recipient-retail-price-authoritative-shipping-and-tax"}]},{"group":"Event context","pages":[{"title":"Get explicitly authorized purchaser context for a studio order event","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/event-records/{event_id}/buyer","href":"/api-reference/event-context/get-explicitly-authorized-purchaser-context-for-a-studio-order-event"}]},{"group":"Event team changes","pages":[{"title":"Apply one reviewed bulk athlete team change","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/event-team-changes/apply","href":"/api-reference/event-team-changes/apply-one-reviewed-bulk-athlete-team-change"},{"title":"Prepare a studio-owned bulk athlete team change","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/event-team-changes/prepare","href":"/api-reference/event-team-changes/prepare-a-studio-owned-bulk-athlete-team-change"}]},{"group":"Studio management","pages":[{"title":"List events for the header-selected studio","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/events","href":"/api-reference/studio-management/list-events-for-the-header-selected-studio"},{"title":"Create an unpublished event for the header-selected studio","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/events","href":"/api-reference/studio-management/create-an-unpublished-event-for-the-header-selected-studio"},{"title":"Get an event for the header-selected studio","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/events/{event_id}","href":"/api-reference/studio-management/get-an-event-for-the-header-selected-studio"},{"title":"List studios available to this API credential","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios","href":"/api-reference/studio-management/list-studios-available-to-this-api-credential"},{"title":"List events for one explicit studio","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/events","href":"/api-reference/studio-management/list-events-for-one-explicit-studio"},{"title":"List an event's form revisions","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/events/{event_id}/form-revisions","href":"/api-reference/studio-management/list-an-events-form-revisions"},{"title":"Create a draft event form revision","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/events/{event_id}/form-revisions","href":"/api-reference/studio-management/create-a-draft-event-form-revision"},{"title":"Get one event form revision","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/events/{event_id}/form-revisions/{form_revision_id}","href":"/api-reference/studio-management/get-one-event-form-revision"},{"title":"Update an editable event form revision","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json patch /v1/studios/{studio_id}/events/{event_id}/form-revisions/{form_revision_id}","href":"/api-reference/studio-management/update-an-editable-event-form-revision"},{"title":"Publish an editable event form revision","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/events/{event_id}/form-revisions/{form_revision_id}/publish","href":"/api-reference/studio-management/publish-an-editable-event-form-revision"},{"title":"List reusable form definitions","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/form-definitions","href":"/api-reference/studio-management/list-reusable-form-definitions"},{"title":"Get a reusable form definition","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/form-definitions/{form_definition_id}","href":"/api-reference/studio-management/get-a-reusable-form-definition"}]},{"group":"Print orders","pages":[{"title":"List account-scoped API print orders","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/print-orders","href":"/api-reference/print-orders/list-account-scoped-api-print-orders"},{"title":"Submit a quoted API print order","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/print-orders","href":"/api-reference/print-orders/submit-a-quoted-api-print-order"},{"title":"Create a server-calculated API order quote","description":"Requires print_orders:write through an API key or anonymous Test Mode session and Idempotency-Key. The server derives the fulfillment lane from the credential. Price, tax, shipping, and platform fee are server-calculated and frozen for 15 minutes. Routing is explicit: studio_default never falls back, single_provider must fulfill every line, and best_available split fulfillment is currently unavailable until group-level durable failure handling is complete. Managed image metadata is authoritative. Exact button and paired trader-card artwork can omit dpi. Optional account/lane-gated preparation downsizes eligible direct artwork to 300 PPI before freezing the quote; it never crops, stretches, pads, or upscales. The original request still determines idempotency. No successful quote references a pending preparation. See artwork input preparation documentation for format, color, shape, and minimum-resolution requirements.","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/print-orders/quote","href":"/api-reference/print-orders/create-a-server-calculated-api-order-quote"},{"title":"Validate a non-authorizing prepared-media print order","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/print-orders/validate","href":"/api-reference/print-orders/validate-a-non-authorizing-prepared-media-print-order"},{"title":"Get an account-scoped API print order","description":null,"deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/print-orders/{order_id}","href":"/api-reference/print-orders/get-an-account-scoped-api-print-order"}]},{"group":"Template renders","pages":[{"title":"Get a template render and its output artifacts","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/renders/{render_id}","href":"/api-reference/template-renders/get-a-template-render-and-its-output-artifacts"},{"title":"List studio template renders","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/renders","href":"/api-reference/template-renders/list-studio-template-renders"},{"title":"Get one published output's render contract","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/templates/{template_id}/outputs/{output_id}/contract","href":"/api-reference/template-renders/get-one-published-outputs-render-contract"},{"title":"Create a render from a published template","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/templates/{template_id}/renders","href":"/api-reference/template-renders/create-a-render-from-a-published-template"}]},{"group":"Studio assets","pages":[{"title":"Reserve a studio-scoped original-asset upload session","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studio-assets/sessions","href":"/api-reference/studio-assets/reserve-a-studio-scoped-original-asset-upload-session"},{"title":"Get a studio asset upload session","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studio-assets/sessions/{session_id}","href":"/api-reference/studio-assets/get-a-studio-asset-upload-session"},{"title":"Upload bytes for one reserved studio asset","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json put /v1/studio-assets/sessions/{session_id}/assets/{asset_id}","href":"/api-reference/studio-assets/upload-bytes-for-one-reserved-studio-asset"}]},{"group":"Studio audit","pages":[{"title":"List privacy-safe studio management activity","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/activity","href":"/api-reference/studio-audit/list-privacy-safe-studio-management-activity"}]},{"group":"Studio Analytics","pages":[{"title":"Read Studio events analytics","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/analytics/events","href":"/api-reference/studio-analytics/read-studio-events-analytics"},{"title":"Read Studio sales analytics","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/analytics/sales","href":"/api-reference/studio-analytics/read-studio-sales-analytics"},{"title":"Read Studio sellables analytics","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/analytics/sellables","href":"/api-reference/studio-analytics/read-studio-sellables-analytics"}]},{"group":"Asset sessions","pages":[{"title":"Create an asset session","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/asset-sessions","href":"/api-reference/asset-sessions/create-an-asset-session"},{"title":"Get an asset session","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/asset-sessions/{session_id}","href":"/api-reference/asset-sessions/get-an-asset-session"},{"title":"Upload a session asset","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json put /v1/studios/{studio_id}/asset-sessions/{session_id}/assets/{asset_id}","href":"/api-reference/asset-sessions/upload-a-session-asset"},{"title":"Cancel an asset session","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/asset-sessions/{session_id}/cancel","href":"/api-reference/asset-sessions/cancel-an-asset-session"},{"title":"Finalize an asset session","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/asset-sessions/{session_id}/finalize","href":"/api-reference/asset-sessions/finalize-an-asset-session"}]},{"group":"Assets","pages":[{"title":"List studio-scoped managed assets","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/assets","href":"/api-reference/assets/list-studio-scoped-managed-assets"}]},{"group":"Studio catalog assets","pages":[{"title":"Reserve a managed asset upload","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/assets/uploads","href":"/api-reference/studio-catalog-assets/reserve-a-managed-asset-upload"},{"title":"Finalize a managed asset upload","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/assets/uploads/{upload_session_id}/finalize","href":"/api-reference/studio-catalog-assets/finalize-a-managed-asset-upload"},{"title":"Get managed asset metadata","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/assets/{asset_id}","href":"/api-reference/studio-catalog-assets/get-managed-asset-metadata"}]},{"group":"Studio Operations","pages":[{"title":"Get studio athlete","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/athletes/{athlete_id}","href":"/api-reference/studio-operations/get-studio-athlete"},{"title":"Search studio customers","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/customers","href":"/api-reference/studio-operations/search-studio-customers"},{"title":"Get studio customer","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/customers/{customer_id}","href":"/api-reference/studio-operations/get-studio-customer"},{"title":"List studio customer athletes","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/customers/{customer_id}/athletes","href":"/api-reference/studio-operations/list-studio-customer-athletes"},{"title":"Create studio event with setup","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/events","href":"/api-reference/studio-operations/create-studio-event-with-setup"},{"title":"Get studio event","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/events/{event_id}","href":"/api-reference/studio-operations/get-studio-event"},{"title":"Update studio event","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json patch /v1/studios/{studio_id}/events/{event_id}","href":"/api-reference/studio-operations/update-studio-event"},{"title":"Archive studio event","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/events/{event_id}/archive","href":"/api-reference/studio-operations/archive-studio-event"},{"title":"Delete studio event","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/events/{event_id}/delete","href":"/api-reference/studio-operations/delete-studio-event"},{"title":"Delete studio event form revision","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json delete /v1/studios/{studio_id}/events/{event_id}/form-revisions/{form_revision_id}","href":"/api-reference/studio-operations/delete-studio-event-form-revision"},{"title":"Publish studio event","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/events/{event_id}/publish","href":"/api-reference/studio-operations/publish-studio-event"},{"title":"Get studio event readiness","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/events/{event_id}/readiness","href":"/api-reference/studio-operations/get-studio-event-readiness"},{"title":"Restore studio event","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/events/{event_id}/restore","href":"/api-reference/studio-operations/restore-studio-event"},{"title":"Create studio form definition","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/form-definitions","href":"/api-reference/studio-operations/create-studio-form-definition"},{"title":"Update studio form definition","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json patch /v1/studios/{studio_id}/form-definitions/{form_definition_id}","href":"/api-reference/studio-operations/update-studio-form-definition"},{"title":"Archive studio form definition","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/form-definitions/{form_definition_id}/archive","href":"/api-reference/studio-operations/archive-studio-form-definition"},{"title":"Delete studio form definition","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/form-definitions/{form_definition_id}/delete","href":"/api-reference/studio-operations/delete-studio-form-definition"},{"title":"Restore studio form definition","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/form-definitions/{form_definition_id}/restore","href":"/api-reference/studio-operations/restore-studio-form-definition"},{"title":"List studio retail orders","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/orders","href":"/api-reference/studio-operations/list-studio-retail-orders"},{"title":"Get studio retail order","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/orders/{order_id}","href":"/api-reference/studio-operations/get-studio-retail-order"},{"title":"Get studio order delivery","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/orders/{order_id}/delivery","href":"/api-reference/studio-operations/get-studio-order-delivery"},{"title":"Get studio order refund eligibility","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/orders/{order_id}/refund-eligibility","href":"/api-reference/studio-operations/get-studio-order-refund-eligibility"},{"title":"List studio outstanding orders","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/outstanding-orders","href":"/api-reference/studio-operations/list-studio-outstanding-orders"},{"title":"Prepare studio order refund","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/refund-previews","href":"/api-reference/studio-operations/prepare-studio-order-refund"},{"title":"Apply studio order refund","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/refund-requests","href":"/api-reference/studio-operations/apply-studio-order-refund"},{"title":"Get studio order refund status","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/refund-requests/{request_id}","href":"/api-reference/studio-operations/get-studio-order-refund-status"}]},{"group":"Checkout links","pages":[{"title":"List studio checkout links","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/checkout-links","href":"/api-reference/checkout-links/list-studio-checkout-links"},{"title":"Create a studio-scoped guest checkout link","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/checkout-links","href":"/api-reference/checkout-links/create-a-studio-scoped-guest-checkout-link"},{"title":"Get a studio-scoped checkout link","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/checkout-links/{link_id}","href":"/api-reference/checkout-links/get-a-studio-scoped-checkout-link"},{"title":"Prepare a payable checkout URL","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/checkout-links/{link_id}/prepare","href":"/api-reference/checkout-links/prepare-a-payable-checkout-url"},{"title":"Recover a prepared checkout URL","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/checkout-links/{link_id}/recover","href":"/api-reference/checkout-links/recover-a-prepared-checkout-url"},{"title":"Revoke a studio-scoped checkout link","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/checkout-links/{link_id}/revoke","href":"/api-reference/checkout-links/revoke-a-studio-scoped-checkout-link"},{"title":"Get checkout payment status","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/checkout-links/{link_id}/status","href":"/api-reference/checkout-links/get-checkout-payment-status"}]},{"group":"Image imports","pages":[{"title":"Create an event image import","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/events/{event_id}/image-imports","href":"/api-reference/image-imports/create-an-event-image-import"},{"title":"Get an event image import","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/events/{event_id}/image-imports/{import_id}","href":"/api-reference/image-imports/get-an-event-image-import"},{"title":"Review an event image import","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json patch /v1/studios/{studio_id}/events/{event_id}/image-imports/{import_id}","href":"/api-reference/image-imports/review-an-event-image-import"},{"title":"Cancel an event image import","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/events/{event_id}/image-imports/{import_id}/cancel","href":"/api-reference/image-imports/cancel-an-event-image-import"},{"title":"Commit an event image import","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/events/{event_id}/image-imports/{import_id}/commit","href":"/api-reference/image-imports/commit-an-event-image-import"}]},{"group":"Studio messages","pages":[{"title":"List a studio's operational messages","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/messages","href":"/api-reference/studio-messages/list-a-studios-operational-messages"},{"title":"Create or schedule an operational event message","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/messages","href":"/api-reference/studio-messages/create-or-schedule-an-operational-event-message"},{"title":"Get an operational message","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/messages/{message_id}","href":"/api-reference/studio-messages/get-an-operational-message"},{"title":"Cancel a draft or scheduled message","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/messages/{message_id}/cancel","href":"/api-reference/studio-messages/cancel-a-draft-or-scheduled-message"},{"title":"Create an immutable correction","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/messages/{message_id}/corrections","href":"/api-reference/studio-messages/create-an-immutable-correction"},{"title":"List read and delivery facts without recipient addresses","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/messages/{message_id}/recipients","href":"/api-reference/studio-messages/list-read-and-delivery-facts-without-recipient-addresses"}]},{"group":"Studio offers","pages":[{"title":"List studio offers","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/offers","href":"/api-reference/studio-offers/list-studio-offers"},{"title":"Create a studio offer","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/offers","href":"/api-reference/studio-offers/create-a-studio-offer"},{"title":"Get a studio offer","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/offers/{offer_id}","href":"/api-reference/studio-offers/get-a-studio-offer"},{"title":"Append a studio offer revision","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json patch /v1/studios/{studio_id}/offers/{offer_id}","href":"/api-reference/studio-offers/append-a-studio-offer-revision"},{"title":"Activate a studio offer","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/offers/{offer_id}/activate","href":"/api-reference/studio-offers/activate-a-studio-offer"},{"title":"Preview studio offer margin","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/offers/{offer_id}/margin-preview","href":"/api-reference/studio-offers/preview-studio-offer-margin"},{"title":"Pause a studio offer","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/offers/{offer_id}/pause","href":"/api-reference/studio-offers/pause-a-studio-offer"},{"title":"List offer redemptions","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/offers/{offer_id}/redemptions","href":"/api-reference/studio-offers/list-offer-redemptions"},{"title":"Resume a studio offer","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/offers/{offer_id}/resume","href":"/api-reference/studio-offers/resume-a-studio-offer"},{"title":"Revoke a studio offer","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/offers/{offer_id}/revoke","href":"/api-reference/studio-offers/revoke-a-studio-offer"},{"title":"Schedule a studio offer","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/offers/{offer_id}/schedule","href":"/api-reference/studio-offers/schedule-a-studio-offer"}]},{"group":"Studio catalog","pages":[{"title":"List studio packages","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/packages","href":"/api-reference/studio-catalog/list-studio-packages"},{"title":"Create a draft package","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/packages","href":"/api-reference/studio-catalog/create-a-draft-package"},{"title":"Get a package","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/packages/{package_id}","href":"/api-reference/studio-catalog/get-a-package"},{"title":"Update a package draft","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json patch /v1/studios/{studio_id}/packages/{package_id}","href":"/api-reference/studio-catalog/update-a-package-draft"},{"title":"Archive a package","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/packages/{package_id}/archive","href":"/api-reference/studio-catalog/archive-a-package"},{"title":"Get the published baseline for a draft","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/packages/{package_id}/publication-baseline","href":"/api-reference/studio-catalog/get-the-published-baseline-for-a-draft"},{"title":"Publish a package","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/packages/{package_id}/publish","href":"/api-reference/studio-catalog/publish-a-package"},{"title":"Restore a package","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/packages/{package_id}/restore","href":"/api-reference/studio-catalog/restore-a-package"},{"title":"List a studio's retail products","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/products","href":"/api-reference/studio-catalog/list-a-studios-retail-products"},{"title":"Create a draft studio product","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/products","href":"/api-reference/studio-catalog/create-a-draft-studio-product"},{"title":"Get a studio product","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/products/{product_id}","href":"/api-reference/studio-catalog/get-a-studio-product"},{"title":"Update a product draft","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json patch /v1/studios/{studio_id}/products/{product_id}","href":"/api-reference/studio-catalog/update-a-product-draft"},{"title":"Archive a product","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/products/{product_id}/archive","href":"/api-reference/studio-catalog/archive-a-product"},{"title":"Get the published baseline for a draft","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/products/{product_id}/publication-baseline","href":"/api-reference/studio-catalog/get-the-published-baseline-for-a-draft-1"},{"title":"Publish a product","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/products/{product_id}/publish","href":"/api-reference/studio-catalog/publish-a-product"},{"title":"Restore a product","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/products/{product_id}/restore","href":"/api-reference/studio-catalog/restore-a-product"},{"title":"List product variants","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/products/{product_id}/variants","href":"/api-reference/studio-catalog/list-product-variants"},{"title":"Create a product variant","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/products/{product_id}/variants","href":"/api-reference/studio-catalog/create-a-product-variant"}]},{"group":"Sandbox promotions","pages":[{"title":"Create an immutable sandbox-to-Live promotion plan","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/sandbox-promotions","href":"/api-reference/sandbox-promotions/create-an-immutable-sandbox-to-live-promotion-plan"},{"title":"Get a bounded sandbox-to-Live promotion plan","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/sandbox-promotions/{promotion_id}","href":"/api-reference/sandbox-promotions/get-a-bounded-sandbox-to-live-promotion-plan"},{"title":"Apply one reviewed sandbox-to-Live promotion plan","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/sandbox-promotions/{promotion_id}/apply","href":"/api-reference/sandbox-promotions/apply-one-reviewed-sandbox-to-live-promotion-plan"},{"title":"Roll back one applied sandbox-to-Live promotion","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json post /v1/studios/{studio_id}/sandbox-promotions/{promotion_id}/rollback","href":"/api-reference/sandbox-promotions/roll-back-one-applied-sandbox-to-live-promotion"}]},{"group":"Storefront","pages":[{"title":"Get a studio storefront assortment","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/storefront","href":"/api-reference/storefront/get-a-studio-storefront-assortment"},{"title":"Atomically replace a studio storefront assortment","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json patch /v1/studios/{studio_id}/storefront","href":"/api-reference/storefront/atomically-replace-a-studio-storefront-assortment"}]},{"group":"Templates","pages":[{"title":"List published studio templates","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/templates","href":"/api-reference/templates/list-published-studio-templates"},{"title":"Get one studio template","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/templates/{template_id}","href":"/api-reference/templates/get-one-studio-template"},{"title":"List a template's compatible canonical products","deprecated":null,"version":null,"openapi":"https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/templates/{template_id}/outputs","href":"/api-reference/templates/list-a-templates-compatible-canonical-products"}]}]}]},"basePath":"","title":"Validate a non-authorizing prepared-media print order - Batch Relay API","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-BAvA99GL.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}