Find-or-create customer + enrolment (no transaction)
Same identifier resolution + create-on-miss as
/marketplace/accrue, but without posting a transaction.
Used by checkout-time signup flows (Shopify customers/create,
Toast guest-create) where the partner wants the customer on
the loyalty programme but doesn’t have a purchase to credit
yet. Idempotent on (customer, card) — repeating the call
returns the same enrolment at HTTP 200.
This endpoint changes live customer data and therefore rejects test
credentials with 403.
POST
https://dashboard.perkstar.co.uk/api/v1
/
marketplace
/
enroll
Find-or-create customer + enrolment (no transaction)
Customer identifier block. At least ONE field must be present.
Resolution order is fixed: customer_id → card_serial → external_ref → email
→ phone. First match wins.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Perkstar Developers","description":"Build reliable loyalty, POS, CRM, and commerce integrations with the Perkstar API.","colors":{"primary":"#016aff","light":"#4d9cff","dark":"#0057cc"},"logo":{"light":"https://mintcdn.com/perkstar/cSs38e1N7hKdOyBb/assets/perkstar-black.png?fit=max\u0026auto=format\u0026n=cSs38e1N7hKdOyBb\u0026q=85\u0026s=9009fe116cd8146719a3c0368f5a4299","dark":"https://mintcdn.com/perkstar/cSs38e1N7hKdOyBb/assets/perkstar-white.png?fit=max\u0026auto=format\u0026n=cSs38e1N7hKdOyBb\u0026q=85\u0026s=8a71101c6fec8f57730a974146eaf51c","href":"/"},"favicon":"https://mintcdn.com/perkstar/cSs38e1N7hKdOyBb/assets/icon-192.png?fit=max\u0026auto=format\u0026n=cSs38e1N7hKdOyBb\u0026q=85\u0026s=1b1d0c7df8f8f21ff3826225b420f55b","api":{"params":{"expanded":"closed"},"playground":{"display":"interactive","proxy":false,"credentials":false},"examples":{"defaults":"required","languages":["curl","javascript","python","php"],"prefill":true,"autogenerate":true},"url":"full"},"appearance":{"default":"light"},"navbar":{"primary":{"type":"button","label":"Open dashboard","href":"https://dashboard.perkstar.co.uk"}},"search":{"prompt":"Search guides and API reference"},"seo":{"organization":{"name":"Perkstar","url":"https://perkstar.co.uk","logo":"https://dashboard.perkstar.co.uk/brand/perkstar-black.png"},"indexing":"navigable"},"contextual":{"options":["copy","download-spec","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"perkstar","hasAudioNarration":false,"actualSubdomain":"perkstar","customDomains":["developers.perkstar.co.uk"],"gitSource":{"type":"github","owner":"themecartel","repo":"perkstar-platform","deployBranch":"main","contentDirectory":"developer-docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ad034ced3e1fa76c9a9243d","collectionId":"c4e61674-2704-4447-84da-3599dd25c8a8","liveDeploymentHistoryId":"6ad034ced3e1fa76c9a9243d","schemaVersion":"v3"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ad034ced3e1fa76c9a9243d","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"Integrations","count":56},{"language":"default","tag":"API reference","count":28},{"language":"default","tag":"Guides","count":21},{"language":"default","tag":"Availability and existing connections","count":16},{"language":"default","tag":"Limited and planned providers","count":16},{"language":"default","tag":"Automation","count":14},{"language":"default","tag":"Point of sale","count":10},{"language":"default","tag":"Integration recipes","count":7},{"language":"default","tag":"Make","count":7},{"language":"default","tag":"Zapier","count":7}]},"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":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction","slug":"/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction","pageMetadata":{"title":"Find-or-create customer + enrolment (no transaction)","description":"Same identifier resolution + create-on-miss as\n`/marketplace/accrue`, but without posting a transaction.\n\nUsed by checkout-time signup flows (Shopify customers/create,\nToast guest-create) where the partner wants the customer on\nthe loyalty programme but doesn't have a purchase to credit\nyet. Idempotent on `(customer, card)` — repeating the call\nreturns the same enrolment at HTTP 200.\n\nThis endpoint changes live customer data and therefore rejects test\ncredentials with 403.\n","deprecated":null,"version":null,"openapi":"/api/openapi.yaml post /marketplace/enroll","href":"/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Same identifier resolution + create-on-miss as\\n\", _jsx(_components.code, {\n children: \"/marketplace/accrue\"\n }), \", but without posting a transaction.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Used by checkout-time signup flows (Shopify customers/create,\\nToast guest-create) where the partner wants the customer on\\nthe loyalty programme but doesn’t have a purchase to credit\\nyet. Idempotent on \", _jsx(_components.code, {\n children: \"(customer, card)\"\n }), \" — repeating the call\\nreturns the same enrolment at HTTP 200.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"This endpoint changes live customer data and therefore rejects test\\ncredentials with 403.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=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":"Find-or-create customer + enrolment (no transaction)","description":"Same identifier resolution + create-on-miss as\n`/marketplace/accrue`, but without posting a transaction.\n\nUsed by checkout-time signup flows (Shopify customers/create,\nToast guest-create) where the partner wants the customer on\nthe loyalty programme but doesn't have a purchase to credit\nyet. Idempotent on `(customer, card)` — repeating the call\nreturns the same enrolment at HTTP 200.\n\nThis endpoint changes live customer data and therefore rejects test\ncredentials with 403.\n","deprecated":null,"version":null,"openapi":"/api/openapi.yaml post /marketplace/enroll","href":"/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Find-or-create customer + enrolment (no transaction)","operationId":"marketplaceEnroll","tags":["Marketplace"],"description":"Same identifier resolution + create-on-miss as\n`/marketplace/accrue`, but without posting a transaction.\n\nUsed by checkout-time signup flows (Shopify customers/create,\nToast guest-create) where the partner wants the customer on\nthe loyalty programme but doesn't have a purchase to credit\nyet. Idempotent on `(customer, card)` — repeating the call\nreturns the same enrolment at HTTP 200.\n\nThis endpoint changes live customer data and therefore rejects test\ncredentials with 403.\n","security":["5d407c6e-33b5-49c4-aa1c-bb2f86a7b3dc"],"parameters":["46d882b9-01fd-4879-8683-09f659779b4e"],"requestBody":"05f24bd7-e147-4a74-80b7-fba42b30120d","responses":{"200":"d605403c-4237-4fcb-8d59-1a83ab5f267e","201":"3655ee38-8bc9-4771-bfcc-caba779b8acb","400":"e772c605-54e0-4e71-a103-f1340816b3ff","401":"18a35d00-bdc1-427e-ae78-5b9ccb4d4cd5","403":"b0becf19-fd75-42b1-9595-79fc21759165","404":"77b3e79e-7b87-446f-b821-52d803d159f4","429":"ac1649b4-25ba-49d4-bddc-596a3c6afa23"},"method":"post","type":"path","servers":["b5c9d190-583a-4d83-b1a3-29580ce30ee1"],"path":"/marketplace/enroll","baseUrlOptions":["https://dashboard.perkstar.co.uk/api/v1"],"title":"Find-or-create customer + enrolment (no transaction)","codeSamples":[],"requestExampleLanguages":["bash","javascript","python","php"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.identifier.customer_id":"\u003cstring>","body.identifier.phone":"\u003cstring>","body.identifier.email":"jsmith@example.com","body.identifier.external_ref":"\u003cstring>","body.identifier.card_serial":"\u003cstring>","body.card_id":"\u003cstring>","body.create_customer_if_missing":true,"body.customer_fields.name":"\u003cstring>","body.customer_fields.first_name":"\u003cstring>","body.customer_fields.last_name":"\u003cstring>","body.customer_fields.email":"jsmith@example.com","body.customer_fields.phone":"\u003cstring>","body.source":"\u003cstring>"}],"disableProxy":true,"urlDisplay":"full"},"dependencies":{"parameters":{"46d882b9-01fd-4879-8683-09f659779b4e":{"in":"header","name":"Idempotency-Key","schema":{"type":"string","maxLength":255,"description":"Replay-safe request key. Repeated requests with the same value\nwithin 24h return the original response unchanged.\n","uniqueKey":"","typeLabel":"string"},"description":"Replay-safe request key. Repeated requests with the same value\nwithin 24h return the original response unchanged.\n"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["identifier"],"properties":{"identifier":{"type":"object","description":"Customer identifier block. At least ONE field must be present.\nResolution order is fixed: customer_id → card_serial → external_ref → email\n→ phone. First match wins.\n","properties":{"customer_id":{"type":"string","description":"Opaque Perkstar Customer ID. It is always scoped to the connected\nbusiness and cannot create a replacement customer when missing.\n","uniqueKey":"identifier.customer_id","typeLabel":"string"},"phone":{"type":"string","uniqueKey":"identifier.phone","typeLabel":"string"},"email":{"type":"string","format":"email","uniqueKey":"identifier.email","typeLabel":"string\u003cemail>"},"external_ref":{"type":"string","description":"Partner-supplied id (Shopify customer GID, Toast guest\nUUID). Resolves via the unique `(orgId, externalRef)`\ncustomer index.\n","uniqueKey":"identifier.external_ref","typeLabel":"string"},"card_serial":{"type":"string","description":"Stable POS barcode or legacy wallet-pass serial scanned at\nthe till. Resolves to the customer who owns the active pass.\n","uniqueKey":"identifier.card_serial","typeLabel":"string"}},"isRequired":true,"uniqueKey":"identifier","typeLabel":"object"},"card_id":{"type":"string","uniqueKey":"card_id","typeLabel":"string"},"create_customer_if_missing":{"type":"boolean","default":true,"uniqueKey":"create_customer_if_missing","typeLabel":"boolean"},"customer_fields":{"type":"object","description":"Fields used when create_customer_if_missing is true and no\nexisting customer matches the identifier.\n","properties":{"name":{"type":"string","description":"First-whitespace-split into first_name / last_name.","uniqueKey":"customer_fields.name","typeLabel":"string"},"first_name":{"type":"string","uniqueKey":"customer_fields.first_name","typeLabel":"string"},"last_name":{"type":"string","uniqueKey":"customer_fields.last_name","typeLabel":"string"},"email":{"type":"string","format":"email","uniqueKey":"customer_fields.email","typeLabel":"string\u003cemail>"},"phone":{"type":"string","uniqueKey":"customer_fields.phone","typeLabel":"string"}},"uniqueKey":"customer_fields","typeLabel":"object"},"source":{"type":"string","maxLength":60,"description":"Free-text marketing source (\"shopify_checkout\",\n\"toast_guest_create\"). Surfaced on the\nCUSTOMER_ENROLLED webhook payload.\n","uniqueKey":"source","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"identifier":{"customer_id":"\u003cstring>","phone":"\u003cstring>","email":"jsmith@example.com","external_ref":"\u003cstring>","card_serial":"\u003cstring>"},"card_id":"\u003cstring>","create_customer_if_missing":true,"customer_fields":{"name":"\u003cstring>","first_name":"\u003cstring>","last_name":"\u003cstring>","email":"jsmith@example.com","phone":"\u003cstring>"},"source":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"d605403c-4237-4fcb-8d59-1a83ab5f267e":{"description":"Existing enrolment returned","content":{"application/json":{"schema":{"type":"object","properties":{"customer":{"type":"object","properties":{"id":{"type":"string","uniqueKey":"customer.id","typeLabel":"string"},"customer_number":{"type":"integer","uniqueKey":"customer.customer_number","typeLabel":"integer"},"email":{"oneOf":[{"type":"string","uniqueKey":"customer.email.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.email.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.email","typeLabel":"string | null"},"phone":{"oneOf":[{"type":"string","uniqueKey":"customer.phone.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.phone.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.phone","typeLabel":"string | null"},"first_name":{"oneOf":[{"type":"string","uniqueKey":"customer.first_name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.first_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.first_name","typeLabel":"string | null"},"last_name":{"oneOf":[{"type":"string","uniqueKey":"customer.last_name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.last_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.last_name","typeLabel":"string | null"},"date_of_birth":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"customer.date_of_birth.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"customer.date_of_birth.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.date_of_birth","typeLabel":"string\u003cdate-time> | null"},"consent_marketing":{"type":"boolean","uniqueKey":"customer.consent_marketing","typeLabel":"boolean"},"consent_ad_tracking":{"type":"boolean","uniqueKey":"customer.consent_ad_tracking","typeLabel":"boolean"},"external_ref":{"oneOf":[{"type":"string","description":"Partner-supplied identifier (Shopify customer GID, Toast\nguest UUID, Square customer id, …). Unique per org. POST\n`/customers` upserts on this when supplied.\n","uniqueKey":"customer.external_ref.oneOf.0","typeLabel":"string"},{"type":"null","description":"Partner-supplied identifier (Shopify customer GID, Toast\nguest UUID, Square customer id, …). Unique per org. POST\n`/customers` upserts on this when supplied.\n","uniqueKey":"customer.external_ref.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.external_ref","typeLabel":"string | null"},"anonymized_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"customer.anonymized_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"customer.anonymized_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.anonymized_at","typeLabel":"string\u003cdate-time> | null"},"deleted_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"customer.deleted_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"customer.deleted_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.deleted_at","typeLabel":"string\u003cdate-time> | null"},"created_at":{"type":"string","format":"date-time","uniqueKey":"customer.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","uniqueKey":"customer.updated_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"customer","typeLabel":"object"},"enrollment":{"type":"object","properties":{"id":{"type":"string","uniqueKey":"enrollment.id","typeLabel":"string"},"customer_id":{"type":"string","uniqueKey":"enrollment.customer_id","typeLabel":"string"},"card_id":{"type":"string","uniqueKey":"enrollment.card_id","typeLabel":"string"},"status":{"type":"string","enum":["ACTIVE","INACTIVE","REVOKED"],"uniqueKey":"enrollment.status","typeLabel":"enum\u003cstring>"},"balance":{"type":"number","multipleOf":0.01,"uniqueKey":"enrollment.balance","typeLabel":"number"},"redemptions_count":{"type":"integer","uniqueKey":"enrollment.redemptions_count","typeLabel":"integer"},"cumulative_spend_pence":{"type":"integer","uniqueKey":"enrollment.cumulative_spend_pence","typeLabel":"integer"},"bonus_points_balance":{"type":"integer","uniqueKey":"enrollment.bonus_points_balance","typeLabel":"integer"},"enrolled_at":{"type":"string","format":"date-time","uniqueKey":"enrollment.enrolled_at","typeLabel":"string\u003cdate-time>"},"last_activity_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"enrollment.last_activity_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"enrollment.last_activity_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"enrollment.last_activity_at","typeLabel":"string\u003cdate-time> | null"},"wallet_passes":{"oneOf":[{"description":"Install URLs for the Apple / Google wallet passes\nattached to this enrollment. Null when no passes have\nbeen issued yet (poll `GET /enrollments/{id}` to pick\nthem up later). Per-platform values may be null when\nthat platform's credentials aren't configured for the\norg. Always reuse these URLs — never reconstruct them.\n","type":"object","properties":{"apple":{"oneOf":[{"type":"string","description":"pkpass download URL.","uniqueKey":"enrollment.wallet_passes.oneOf.0.apple.oneOf.0","typeLabel":"string"},{"type":"null","description":"pkpass download URL.","uniqueKey":"enrollment.wallet_passes.oneOf.0.apple.oneOf.1","typeLabel":"null"}],"uniqueKey":"enrollment.wallet_passes.oneOf.0.apple","typeLabel":"string | null"},"google":{"oneOf":[{"type":"string","description":"Freshly-signed Add-to-Wallet save link\n(`https://pay.google.com/gp/v/save/\u003cjwt>`).\n","uniqueKey":"enrollment.wallet_passes.oneOf.0.google.oneOf.0","typeLabel":"string"},{"type":"null","description":"Freshly-signed Add-to-Wallet save link\n(`https://pay.google.com/gp/v/save/\u003cjwt>`).\n","uniqueKey":"enrollment.wallet_passes.oneOf.0.google.oneOf.1","typeLabel":"null"}],"uniqueKey":"enrollment.wallet_passes.oneOf.0.google","typeLabel":"string | null"}},"uniqueKey":"enrollment.wallet_passes.oneOf.0","typeLabel":"object"},{"description":"Install URLs for the Apple / Google wallet passes\nattached to this enrollment. Null when no passes have\nbeen issued yet (poll `GET /enrollments/{id}` to pick\nthem up later). Per-platform values may be null when\nthat platform's credentials aren't configured for the\norg. Always reuse these URLs — never reconstruct them.\n","type":"null","properties":{"apple":{"oneOf":[{"type":"string","description":"pkpass download URL."},{"type":"null","description":"pkpass download URL."}]},"google":{"oneOf":[{"type":"string","description":"Freshly-signed Add-to-Wallet save link\n(`https://pay.google.com/gp/v/save/\u003cjwt>`).\n"},{"type":"null","description":"Freshly-signed Add-to-Wallet save link\n(`https://pay.google.com/gp/v/save/\u003cjwt>`).\n"}]}},"uniqueKey":"enrollment.wallet_passes.oneOf.1","typeLabel":"null"}],"uniqueKey":"enrollment.wallet_passes","typeLabel":"object | null"}},"uniqueKey":"enrollment","typeLabel":"object"},"wallet_passes":{"oneOf":[{"type":"object","properties":{"apple":{"oneOf":[{"type":"string","uniqueKey":"wallet_passes.oneOf.0.apple.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"wallet_passes.oneOf.0.apple.oneOf.1","typeLabel":"null"}],"uniqueKey":"wallet_passes.oneOf.0.apple","typeLabel":"string | null"},"google":{"oneOf":[{"type":"string","uniqueKey":"wallet_passes.oneOf.0.google.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"wallet_passes.oneOf.0.google.oneOf.1","typeLabel":"null"}],"uniqueKey":"wallet_passes.oneOf.0.google","typeLabel":"string | null"}},"uniqueKey":"wallet_passes.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"apple":{"oneOf":[{"type":"string"},{"type":"null"}]},"google":{"oneOf":[{"type":"string"},{"type":"null"}]}},"uniqueKey":"wallet_passes.oneOf.1","typeLabel":"null"}],"uniqueKey":"wallet_passes","typeLabel":"object | null"},"customer_created":{"type":"boolean","uniqueKey":"customer_created","typeLabel":"boolean"},"enrollment_created":{"type":"boolean","uniqueKey":"enrollment_created","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"customer":{"id":"\u003cstring>","customer_number":123,"email":"\u003cstring>","phone":"\u003cstring>","first_name":"\u003cstring>","last_name":"\u003cstring>","date_of_birth":"2023-11-07T05:31:56Z","consent_marketing":true,"consent_ad_tracking":true,"external_ref":"\u003cstring>","anonymized_at":"2023-11-07T05:31:56Z","deleted_at":"2023-11-07T05:31:56Z","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z"},"enrollment":{"id":"\u003cstring>","customer_id":"\u003cstring>","card_id":"\u003cstring>","status":"ACTIVE","balance":123,"redemptions_count":123,"cumulative_spend_pence":123,"bonus_points_balance":123,"enrolled_at":"2023-11-07T05:31:56Z","last_activity_at":"2023-11-07T05:31:56Z","wallet_passes":{"apple":"\u003cstring>","google":"\u003cstring>"}},"wallet_passes":{"apple":"\u003cstring>","google":"\u003cstring>"},"customer_created":true,"enrollment_created":true}}},"exampleType":"generated"}},"exampleType":"generated"},"3655ee38-8bc9-4771-bfcc-caba779b8acb":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"customer":{"type":"object","properties":{"id":{"type":"string","uniqueKey":"customer.id","typeLabel":"string"},"customer_number":{"type":"integer","uniqueKey":"customer.customer_number","typeLabel":"integer"},"email":{"oneOf":[{"type":"string","uniqueKey":"customer.email.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.email.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.email","typeLabel":"string | null"},"phone":{"oneOf":[{"type":"string","uniqueKey":"customer.phone.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.phone.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.phone","typeLabel":"string | null"},"first_name":{"oneOf":[{"type":"string","uniqueKey":"customer.first_name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.first_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.first_name","typeLabel":"string | null"},"last_name":{"oneOf":[{"type":"string","uniqueKey":"customer.last_name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.last_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.last_name","typeLabel":"string | null"},"date_of_birth":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"customer.date_of_birth.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"customer.date_of_birth.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.date_of_birth","typeLabel":"string\u003cdate-time> | null"},"consent_marketing":{"type":"boolean","uniqueKey":"customer.consent_marketing","typeLabel":"boolean"},"consent_ad_tracking":{"type":"boolean","uniqueKey":"customer.consent_ad_tracking","typeLabel":"boolean"},"external_ref":{"oneOf":[{"type":"string","description":"Partner-supplied identifier (Shopify customer GID, Toast\nguest UUID, Square customer id, …). Unique per org. POST\n`/customers` upserts on this when supplied.\n","uniqueKey":"customer.external_ref.oneOf.0","typeLabel":"string"},{"type":"null","description":"Partner-supplied identifier (Shopify customer GID, Toast\nguest UUID, Square customer id, …). Unique per org. POST\n`/customers` upserts on this when supplied.\n","uniqueKey":"customer.external_ref.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.external_ref","typeLabel":"string | null"},"anonymized_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"customer.anonymized_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"customer.anonymized_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.anonymized_at","typeLabel":"string\u003cdate-time> | null"},"deleted_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"customer.deleted_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"customer.deleted_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.deleted_at","typeLabel":"string\u003cdate-time> | null"},"created_at":{"type":"string","format":"date-time","uniqueKey":"customer.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","uniqueKey":"customer.updated_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"customer","typeLabel":"object"},"enrollment":{"type":"object","properties":{"id":{"type":"string","uniqueKey":"enrollment.id","typeLabel":"string"},"customer_id":{"type":"string","uniqueKey":"enrollment.customer_id","typeLabel":"string"},"card_id":{"type":"string","uniqueKey":"enrollment.card_id","typeLabel":"string"},"status":{"type":"string","enum":["ACTIVE","INACTIVE","REVOKED"],"uniqueKey":"enrollment.status","typeLabel":"enum\u003cstring>"},"balance":{"type":"number","multipleOf":0.01,"uniqueKey":"enrollment.balance","typeLabel":"number"},"redemptions_count":{"type":"integer","uniqueKey":"enrollment.redemptions_count","typeLabel":"integer"},"cumulative_spend_pence":{"type":"integer","uniqueKey":"enrollment.cumulative_spend_pence","typeLabel":"integer"},"bonus_points_balance":{"type":"integer","uniqueKey":"enrollment.bonus_points_balance","typeLabel":"integer"},"enrolled_at":{"type":"string","format":"date-time","uniqueKey":"enrollment.enrolled_at","typeLabel":"string\u003cdate-time>"},"last_activity_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"enrollment.last_activity_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"enrollment.last_activity_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"enrollment.last_activity_at","typeLabel":"string\u003cdate-time> | null"},"wallet_passes":{"oneOf":[{"description":"Install URLs for the Apple / Google wallet passes\nattached to this enrollment. Null when no passes have\nbeen issued yet (poll `GET /enrollments/{id}` to pick\nthem up later). Per-platform values may be null when\nthat platform's credentials aren't configured for the\norg. Always reuse these URLs — never reconstruct them.\n","type":"object","properties":{"apple":{"oneOf":[{"type":"string","description":"pkpass download URL.","uniqueKey":"enrollment.wallet_passes.oneOf.0.apple.oneOf.0","typeLabel":"string"},{"type":"null","description":"pkpass download URL.","uniqueKey":"enrollment.wallet_passes.oneOf.0.apple.oneOf.1","typeLabel":"null"}],"uniqueKey":"enrollment.wallet_passes.oneOf.0.apple","typeLabel":"string | null"},"google":{"oneOf":[{"type":"string","description":"Freshly-signed Add-to-Wallet save link\n(`https://pay.google.com/gp/v/save/\u003cjwt>`).\n","uniqueKey":"enrollment.wallet_passes.oneOf.0.google.oneOf.0","typeLabel":"string"},{"type":"null","description":"Freshly-signed Add-to-Wallet save link\n(`https://pay.google.com/gp/v/save/\u003cjwt>`).\n","uniqueKey":"enrollment.wallet_passes.oneOf.0.google.oneOf.1","typeLabel":"null"}],"uniqueKey":"enrollment.wallet_passes.oneOf.0.google","typeLabel":"string | null"}},"uniqueKey":"enrollment.wallet_passes.oneOf.0","typeLabel":"object"},{"description":"Install URLs for the Apple / Google wallet passes\nattached to this enrollment. Null when no passes have\nbeen issued yet (poll `GET /enrollments/{id}` to pick\nthem up later). Per-platform values may be null when\nthat platform's credentials aren't configured for the\norg. Always reuse these URLs — never reconstruct them.\n","type":"null","properties":{"apple":{"oneOf":[{"type":"string","description":"pkpass download URL."},{"type":"null","description":"pkpass download URL."}]},"google":{"oneOf":[{"type":"string","description":"Freshly-signed Add-to-Wallet save link\n(`https://pay.google.com/gp/v/save/\u003cjwt>`).\n"},{"type":"null","description":"Freshly-signed Add-to-Wallet save link\n(`https://pay.google.com/gp/v/save/\u003cjwt>`).\n"}]}},"uniqueKey":"enrollment.wallet_passes.oneOf.1","typeLabel":"null"}],"uniqueKey":"enrollment.wallet_passes","typeLabel":"object | null"}},"uniqueKey":"enrollment","typeLabel":"object"},"wallet_passes":{"oneOf":[{"type":"object","properties":{"apple":{"oneOf":[{"type":"string","uniqueKey":"wallet_passes.oneOf.0.apple.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"wallet_passes.oneOf.0.apple.oneOf.1","typeLabel":"null"}],"uniqueKey":"wallet_passes.oneOf.0.apple","typeLabel":"string | null"},"google":{"oneOf":[{"type":"string","uniqueKey":"wallet_passes.oneOf.0.google.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"wallet_passes.oneOf.0.google.oneOf.1","typeLabel":"null"}],"uniqueKey":"wallet_passes.oneOf.0.google","typeLabel":"string | null"}},"uniqueKey":"wallet_passes.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"apple":{"oneOf":[{"type":"string"},{"type":"null"}]},"google":{"oneOf":[{"type":"string"},{"type":"null"}]}},"uniqueKey":"wallet_passes.oneOf.1","typeLabel":"null"}],"uniqueKey":"wallet_passes","typeLabel":"object | null"},"customer_created":{"type":"boolean","uniqueKey":"customer_created","typeLabel":"boolean"},"enrollment_created":{"type":"boolean","uniqueKey":"enrollment_created","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"customer":{"id":"\u003cstring>","customer_number":123,"email":"\u003cstring>","phone":"\u003cstring>","first_name":"\u003cstring>","last_name":"\u003cstring>","date_of_birth":"2023-11-07T05:31:56Z","consent_marketing":true,"consent_ad_tracking":true,"external_ref":"\u003cstring>","anonymized_at":"2023-11-07T05:31:56Z","deleted_at":"2023-11-07T05:31:56Z","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z"},"enrollment":{"id":"\u003cstring>","customer_id":"\u003cstring>","card_id":"\u003cstring>","status":"ACTIVE","balance":123,"redemptions_count":123,"cumulative_spend_pence":123,"bonus_points_balance":123,"enrolled_at":"2023-11-07T05:31:56Z","last_activity_at":"2023-11-07T05:31:56Z","wallet_passes":{"apple":"\u003cstring>","google":"\u003cstring>"}},"wallet_passes":{"apple":"\u003cstring>","google":"\u003cstring>"},"customer_created":true,"enrollment_created":true}}},"exampleType":"generated"}},"exampleType":"generated"},"e772c605-54e0-4e71-a103-f1340816b3ff":{"description":"Validation failed","headers":{"X-Request-Id":{"description":"Unique id for this request. Echo this in your support tickets\nand we can trace the exact call in the audit log on the API key\ndetail page.\n","schema":{"type":"string"}},"X-API-Version":{"description":"Date-versioned schema marker. The current value is `2026-05-04`.\nBumps follow the 12-month deprecation policy documented in the\nin-dashboard docs page.\n","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Total requests permitted per minute for this credential.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current 60s window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix-seconds timestamp when the current window refills.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","required":["type","message","code"],"properties":{"type":{"type":"string","enum":["authentication_error","permission_error","rate_limit_error","validation_error","not_found","idempotency_error","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"authentication_error","message":"\u003cstring>","code":"\u003cstring>","param":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"18a35d00-bdc1-427e-ae78-5b9ccb4d4cd5":{"description":"Missing / invalid / expired API key","headers":{"X-Request-Id":{"description":"Unique id for this request. Echo this in your support tickets\nand we can trace the exact call in the audit log on the API key\ndetail page.\n","schema":{"type":"string"}},"X-API-Version":{"description":"Date-versioned schema marker. The current value is `2026-05-04`.\nBumps follow the 12-month deprecation policy documented in the\nin-dashboard docs page.\n","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Total requests permitted per minute for this credential.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current 60s window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix-seconds timestamp when the current window refills.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","required":["type","message","code"],"properties":{"type":{"type":"string","enum":["authentication_error","permission_error","rate_limit_error","validation_error","not_found","idempotency_error","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"authentication_error","message":"\u003cstring>","code":"\u003cstring>","param":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b0becf19-fd75-42b1-9595-79fc21759165":{"description":"API key is missing the required scope","headers":{"X-Request-Id":{"description":"Unique id for this request. Echo this in your support tickets\nand we can trace the exact call in the audit log on the API key\ndetail page.\n","schema":{"type":"string"}},"X-API-Version":{"description":"Date-versioned schema marker. The current value is `2026-05-04`.\nBumps follow the 12-month deprecation policy documented in the\nin-dashboard docs page.\n","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Total requests permitted per minute for this credential.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current 60s window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix-seconds timestamp when the current window refills.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","required":["type","message","code"],"properties":{"type":{"type":"string","enum":["authentication_error","permission_error","rate_limit_error","validation_error","not_found","idempotency_error","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"authentication_error","message":"\u003cstring>","code":"\u003cstring>","param":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"77b3e79e-7b87-446f-b821-52d803d159f4":{"description":"Resource not found","headers":{"X-Request-Id":{"description":"Unique id for this request. Echo this in your support tickets\nand we can trace the exact call in the audit log on the API key\ndetail page.\n","schema":{"type":"string"}},"X-API-Version":{"description":"Date-versioned schema marker. The current value is `2026-05-04`.\nBumps follow the 12-month deprecation policy documented in the\nin-dashboard docs page.\n","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Total requests permitted per minute for this credential.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current 60s window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix-seconds timestamp when the current window refills.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","required":["type","message","code"],"properties":{"type":{"type":"string","enum":["authentication_error","permission_error","rate_limit_error","validation_error","not_found","idempotency_error","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"authentication_error","message":"\u003cstring>","code":"\u003cstring>","param":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"ac1649b4-25ba-49d4-bddc-596a3c6afa23":{"description":"Per-key rate limit exceeded","headers":{"X-Request-Id":{"description":"Unique id for this request. Echo this in your support tickets\nand we can trace the exact call in the audit log on the API key\ndetail page.\n","schema":{"type":"string"}},"X-API-Version":{"description":"Date-versioned schema marker. The current value is `2026-05-04`.\nBumps follow the 12-month deprecation policy documented in the\nin-dashboard docs page.\n","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Total requests permitted per minute for this credential.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current 60s window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix-seconds timestamp when the current window refills.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying. Only emitted on 429 responses.\n","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","required":["type","message","code"],"properties":{"type":{"type":"string","enum":["authentication_error","permission_error","rate_limit_error","validation_error","not_found","idempotency_error","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"param":{"type":"string","uniqueKey":"error.param","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"authentication_error","message":"\u003cstring>","code":"\u003cstring>","param":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"5d407c6e-33b5-49c4-aa1c-bb2f86a7b3dc":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"pk_live_… / pk_test_… or perk_at_…","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"b5c9d190-583a-4d83-b1a3-29580ce30ee1":{"url":"https://dashboard.perkstar.co.uk/api/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"pk_live_… / pk_test_… or perk_at_…","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api/openapi.yaml"},"subdomain":"perkstar","siteName":"Perkstar Developers","title":"Find-or-create customer + enrolment (no transaction) - Perkstar Developers","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-15T02:05:07.797Z","originalFileLocation":"api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction.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=\"light\"}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=\"Same identifier resolution + create-on-miss as /marketplace/accrue, but without posting a transaction. Used by checkout-time signup flows (Shopify customers/create, Toast guest-create) where the partner wants the customer on the loyalty programme but doesn\u0026#x27;t have a purchase to credit yet. Idempotent on (customer, card) — repeating the call returns the same enrolment at HTTP 200. This endpoint changes live customer data and therefore rejects test credentials with 403.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Perkstar Developers\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/perkstar/qZOD7HSUxLh47RbK/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/perkstar/qZOD7HSUxLh47RbK/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/perkstar/qZOD7HSUxLh47RbK/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/perkstar/qZOD7HSUxLh47RbK/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/perkstar/qZOD7HSUxLh47RbK/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/perkstar/qZOD7HSUxLh47RbK/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/perkstar/qZOD7HSUxLh47RbK/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/perkstar/qZOD7HSUxLh47RbK/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/perkstar/qZOD7HSUxLh47RbK/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Find-or-create customer + enrolment (no transaction) - Perkstar Developers\">\u003cmeta data-mint-head property=\"og:description\" content=\"Same identifier resolution + create-on-miss as /marketplace/accrue, but without posting a transaction. Used by checkout-time signup flows (Shopify customers/create, Toast guest-create) where the partner wants the customer on the loyalty programme but doesn\u0026#x27;t have a purchase to credit yet. Idempotent on (customer, card) — repeating the call returns the same enrolment at HTTP 200. This endpoint changes live customer data and therefore rejects test credentials with 403.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Perkstar Developers\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.perkstar.co.uk/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://perkstar.mintlify.app/_mintlify/api/og/v2?division=Marketplace\u0026amp;title=Find-or-create+customer+%2B+enrolment+%28no+transaction%29\u0026amp;description=Same+identifier+resolution+%2B+create-on-miss+as%0A%60%2Fmarketplace%2Faccrue%60%2C+but+without+posting+a+transaction.%0A%0AUsed+by+checkout-time+signup+flows+%28Shopify+customers%2F\u0026amp;theme=1bd47a425785e661028d3e8d\u0026amp;signature=cffb7fea6a8d216e7e89b952851a094d31da13bd1697db680246a4b548da86a8\">\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=\"Find-or-create customer + enrolment (no transaction) - Perkstar Developers\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Same identifier resolution + create-on-miss as /marketplace/accrue, but without posting a transaction. Used by checkout-time signup flows (Shopify customers/create, Toast guest-create) where the partner wants the customer on the loyalty programme but doesn\u0026#x27;t have a purchase to credit yet. Idempotent on (customer, card) — repeating the call returns the same enrolment at HTTP 200. This endpoint changes live customer data and therefore rejects test credentials with 403.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://perkstar.mintlify.app/_mintlify/api/og/v2?division=Marketplace\u0026amp;title=Find-or-create+customer+%2B+enrolment+%28no+transaction%29\u0026amp;description=Same+identifier+resolution+%2B+create-on-miss+as%0A%60%2Fmarketplace%2Faccrue%60%2C+but+without+posting+a+transaction.%0A%0AUsed+by+checkout-time+signup+flows+%28Shopify+customers%2F\u0026amp;theme=1bd47a425785e661028d3e8d\u0026amp;signature=cffb7fea6a8d216e7e89b952851a094d31da13bd1697db680246a4b548da86a8\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/perkstar/qZOD7HSUxLh47RbK/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Perkstar Developers\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#016aff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.perkstar.co.uk/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/marketplace/find-or-create-customer-%2B-enrolment-no-transaction.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://perkstar.co.uk/#organization\",\"name\":\"Perkstar\",\"url\":\"https://perkstar.co.uk\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://dashboard.perkstar.co.uk/brand/perkstar-black.png\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developers.perkstar.co.uk#website\",\"name\":\"Perkstar Developers\",\"url\":\"https://developers.perkstar.co.uk\",\"publisher\":{\"@id\":\"https://perkstar.co.uk/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.perkstar.co.uk/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction#webpage\",\"url\":\"https://developers.perkstar.co.uk/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction\",\"name\":\"Find-or-create customer + enrolment (no transaction)\",\"description\":\"Same identifier resolution + create-on-miss as /marketplace/accrue, but without posting a transaction. Used by checkout-time signup flows (Shopify customers/create, Toast guest-create) where the partner wants the customer on the loyalty programme but doesn't have a purchase to credit yet. Idempotent on (customer, card) — repeating the call returns the same enrolment at HTTP 200. This endpoint changes live customer data and therefore rejects test credentials with 403.\",\"dateModified\":\"2026-10-15T02:05:07.797Z\",\"isPartOf\":{\"@id\":\"https://developers.perkstar.co.uk#website\"},\"breadcrumb\":{\"@id\":\"https://developers.perkstar.co.uk/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.perkstar.co.uk/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Marketplace\",\"item\":\"https://developers.perkstar.co.uk/api-reference/marketplace/auth-check-+-org-context\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Find-or-create customer + enrolment (no transaction)\",\"item\":\"https://developers.perkstar.co.uk/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.perkstar.co.uk/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction#apireference\",\"headline\":\"Find-or-create customer + enrolment (no transaction)\",\"name\":\"Find-or-create customer + enrolment (no transaction)\",\"description\":\"Same identifier resolution + create-on-miss as /marketplace/accrue, but without posting a transaction. Used by checkout-time signup flows (Shopify customers/create, Toast guest-create) where the partner wants the customer on the loyalty programme but doesn't have a purchase to credit yet. Idempotent on (customer, card) — repeating the call returns the same enrolment at HTTP 200. This endpoint changes live customer data and therefore rejects test credentials with 403.\",\"url\":\"https://developers.perkstar.co.uk/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction\",\"mainEntityOfPage\":{\"@id\":\"https://developers.perkstar.co.uk/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction#webpage\"},\"dateModified\":\"2026-10-15T02:05:07.797Z\",\"publisher\":{\"@id\":\"https://perkstar.co.uk/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.perkstar.co.uk#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Perkstar Developers\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Perkstar Developers","nav":{"global":null,"tabs":[{"tab":"Integrations","icon":"plug","pages":[{"title":"Integrations","href":"/integrations"}]},{"tab":"Guides","icon":"book-open","pages":[{"title":"Guides","href":""}]},{"tab":"API reference","icon":"brackets-curly","groups":[{"group":"Customers","pages":[{"title":"List customers","deprecated":null,"version":null,"openapi":"/api/openapi.yaml get /customers","href":"/api-reference/customers/list-customers"},{"title":"Create or upsert a customer","deprecated":null,"version":null,"openapi":"/api/openapi.yaml post /customers","href":"/api-reference/customers/create-or-upsert-a-customer"},{"title":"Get a customer","deprecated":null,"version":null,"openapi":"/api/openapi.yaml get /customers/{id}","href":"/api-reference/customers/get-a-customer"},{"title":"Anonymize (GDPR Article 17 erasure) a customer","deprecated":null,"version":null,"openapi":"/api/openapi.yaml delete /customers/{id}","href":"/api-reference/customers/anonymize-gdpr-article-17-erasure-a-customer"},{"title":"Update a customer","deprecated":null,"version":null,"openapi":"/api/openapi.yaml patch /customers/{id}","href":"/api-reference/customers/update-a-customer"}]},{"group":"Enrollments","pages":[{"title":"List enrollments","deprecated":null,"version":null,"openapi":"/api/openapi.yaml get /enrollments","href":"/api-reference/enrollments/list-enrollments"},{"title":"Create an enrollment","deprecated":null,"version":null,"openapi":"/api/openapi.yaml post /enrollments","href":"/api-reference/enrollments/create-an-enrollment"},{"title":"Get an enrollment","deprecated":null,"version":null,"openapi":"/api/openapi.yaml get /enrollments/{id}","href":"/api-reference/enrollments/get-an-enrollment"},{"title":"Update an enrollment","deprecated":null,"version":null,"openapi":"/api/openapi.yaml patch /enrollments/{id}","href":"/api-reference/enrollments/update-an-enrollment"}]},{"group":"Transactions","pages":[{"title":"List transactions","deprecated":null,"version":null,"openapi":"/api/openapi.yaml get /transactions","href":"/api-reference/transactions/list-transactions"},{"title":"Post a transaction (stamp / redeem / adjust)","deprecated":null,"version":null,"openapi":"/api/openapi.yaml post /transactions","href":"/api-reference/transactions/post-a-transaction-stamp-redeem-adjust"},{"title":"Bulk-delete every test-mode transaction for the org","deprecated":null,"version":null,"openapi":"/api/openapi.yaml delete /transactions/test","href":"/api-reference/transactions/bulk-delete-every-test-mode-transaction-for-the-org"}]},{"group":"Cards","pages":[{"title":"List cards","deprecated":null,"version":null,"openapi":"/api/openapi.yaml get /cards","href":"/api-reference/cards/list-cards"},{"title":"Get a card","deprecated":null,"version":null,"openapi":"/api/openapi.yaml get /cards/{id}","href":"/api-reference/cards/get-a-card"}]},{"group":"Webhooks","pages":[{"title":"List recent outbound events","deprecated":null,"version":null,"openapi":"/api/openapi.yaml get /events","href":"/api-reference/webhooks/list-recent-outbound-events"},{"title":"List webhooks","deprecated":null,"version":null,"openapi":"/api/openapi.yaml get /webhooks","href":"/api-reference/webhooks/list-webhooks"},{"title":"Create a webhook","deprecated":null,"version":null,"openapi":"/api/openapi.yaml post /webhooks","href":"/api-reference/webhooks/create-a-webhook"},{"title":"Get a webhook","deprecated":null,"version":null,"openapi":"/api/openapi.yaml get /webhooks/{id}","href":"/api-reference/webhooks/get-a-webhook"},{"title":"Delete a webhook","deprecated":null,"version":null,"openapi":"/api/openapi.yaml delete /webhooks/{id}","href":"/api-reference/webhooks/delete-a-webhook"},{"title":"Update a webhook","deprecated":null,"version":null,"openapi":"/api/openapi.yaml patch /webhooks/{id}","href":"/api-reference/webhooks/update-a-webhook"},{"title":"Verify a server-attested webhook delivery","deprecated":null,"version":null,"openapi":"/api/openapi.yaml post /webhooks/deliveries/verify","href":"/api-reference/webhooks/verify-a-server-attested-webhook-delivery"}]},{"group":"Locations","pages":[{"title":"List locations","deprecated":null,"version":null,"openapi":"/api/openapi.yaml get /locations","href":"/api-reference/locations/list-locations"}]},{"group":"Pushes","pages":[{"title":"Send a wallet push","deprecated":null,"version":null,"openapi":"/api/openapi.yaml post /pushes","href":"/api-reference/pushes/send-a-wallet-push"}]},{"group":"Marketplace","pages":[{"title":"Auth check + org context","deprecated":null,"version":null,"openapi":"/api/openapi.yaml get /marketplace/ping","href":"/api-reference/marketplace/auth-check-+-org-context"},{"title":"Find-or-create customer + post transaction in one call","description":"Resolves the customer in this fixed priority order:\n 1. customer_id → tenant-scoped Perkstar customer\n 2. card_serial → POS barcode or legacy pass serial → customer\n 3. external_ref → (orgId, externalRef) lookup\n 4. email (case-insensitive)\n 5. phone (normalised E.164 with a legacy raw-value fallback)\n\nFirst match wins. On miss, creates a customer when\n`create_customer_if_missing` is true (the default). A missing\n`customer_id` alone returns 404 instead of creating a replacement.\n\nThe `transaction.external_transaction_id` field is enforced as\npermanently unique per `(orgId, externalTransactionId)`. An exact\nretry with the same canonical target, type, amount, and request fields\nreturns the existing transaction at HTTP 200 instead of\ndouble-crediting, no matter how long has passed. Reusing the id for a\ndifferent request returns `409 external_transaction_id_conflict`. Use\nthis for POS-side stable ids (Toast order #s, Shopify checkout ids,\nSquare payment ids). Test and live transactions cannot share the same\nvalue; a cross-environment replay is rejected with 422. Provider-owned\nprefixes such as `sq_payment_` are reserved for managed integrations;\nuse a namespace owned by your app.\n\n`Idempotency-Key` (24h replay cache) and\n`external_transaction_id` (permanent dedupe) coexist — use\nboth for full robustness.\n\nWith a test credential this endpoint never creates a customer or\nenrolment. Resolve an existing record and card first, then post the\nisolated transaction. A missing customer or enrolment returns 404.\n","deprecated":null,"version":null,"openapi":"/api/openapi.yaml post /marketplace/accrue","href":"/api-reference/marketplace/find-or-create-customer-+-post-transaction-in-one-call"},{"title":"Find-or-create customer + enrolment (no transaction)","deprecated":null,"version":null,"openapi":"/api/openapi.yaml post /marketplace/enroll","href":"/api-reference/marketplace/find-or-create-customer-+-enrolment-no-transaction"},{"title":"Reverse a previously-posted transaction","description":"Creates a compensating Transaction row whose `delta` is the\nnegation of the original's, linked via\n`reverses_transaction_id`. Fires `TRANSACTION_CREATED` so\npartner webhooks notice the reversal end-to-end.\n\nIdempotent: reversing the same transaction twice returns the\nexisting reversal at HTTP 200 (enforced by the unique\nconstraint on `Transaction.reversesTransactionId` + a P2002\nfallback).\n\nCannot reverse:\n • An already-reversed transaction's reversal (post a new\n accrue instead).\n • A transaction in the opposite mode — live keys can't\n reverse test rows and vice versa.\n\nPass either `transaction_id` (Perkstar's id) OR\n`external_transaction_id` (your POS-side id). Both forms\nresolve to the same underlying row.\n","deprecated":null,"version":null,"openapi":"/api/openapi.yaml post /marketplace/reverse","href":"/api-reference/marketplace/reverse-a-previously-posted-transaction"}]},{"group":"Outbound webhooks","pages":[{"title":"Receive a perkstar outbound event","version":null,"deprecated":null,"openapi":"/api/openapi.yaml webhook perkstarEvent","href":"/api-reference/outbound-webhooks/receive-a-perkstar-outbound-event"}]}]},{"tab":"SDKs","icon":"code","pages":[{"title":"SDKs","href":"/sdks/typescript"}]},{"tab":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/changelog"}]}]},"title":"Find-or-create customer + enrolment (no transaction) - Perkstar Developers","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-R3M_BF4L.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}