A valid request URL is required to generate request examples
{ "redemptionId": "<string>"}
{
"code": "<string>"
}
{
"code": "<string>"
}
Rotas do operador
Synchronous balance debit
The authoritative debit, called as the LAST step inside DeliveryVip’s order-creation transaction. A non-201 answer (or timeout) rolls the whole order back — the order is never born and the customer keeps shopping. Idempotency key is relatedOrderId (the order UUID): replaying the same relatedOrderId with the same amount must answer 201 with the SAME redemptionId; the same relatedOrderId with a DIFFERENT amount must be rejected with 422 code idempotency_conflict. amount is a JSON number (natural serialization, e.g. 25.0) and is always the value actually discounted on the order — it may be lower than what the customer originally reserved if the cart shrank. It also already honours the operator’s own capabilities.redemptionLimits: never below the declared minimum, never above the declared maximum. Percentage ceilings are computed over the order’s items (subtotal minus other cart discounts) — shipping and fees are never redeemable — so for operators whose own rule applies to the order total this amount can be lower than their ceiling, never higher. A 201 without redemptionId is treated as malformed and rolls the order back.
POST
/
v1
/
loyalty
/
redemptions
Error
A valid request URL is required to generate request examples
Hex HMAC-SHA256 of the raw request body (empty string when there is no body), keyed with the app's OAuth secret. Verify against the exact bytes received.
The operator's identifier for this debit (needed for reversal).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"DeliveryVip Developers","description":"Documentação das APIs da DeliveryVip: Merchant API, Open Delivery, Fidelidade e Partner API, com guias, tutoriais e referência.","colors":{"primary":"#EC681B","light":"#F4A476","dark":"#EC681B"},"logo":{"light":"https://mintcdn.com/deliveryvip-a4256422/ELxpcniK2_BP8zxT/logo/light.svg?fit=max\u0026auto=format\u0026n=ELxpcniK2_BP8zxT\u0026q=85\u0026s=b5cd347a6fb8b88418ecffa2cecba5ca","dark":"https://mintcdn.com/deliveryvip-a4256422/ELxpcniK2_BP8zxT/logo/dark.svg?fit=max\u0026auto=format\u0026n=ELxpcniK2_BP8zxT\u0026q=85\u0026s=c4d4b4b52656b650a0faa7dcc736c1a4"},"favicon":"https://mintcdn.com/deliveryvip-a4256422/ELxpcniK2_BP8zxT/favicon.png?fit=max\u0026auto=format\u0026n=ELxpcniK2_BP8zxT\u0026q=85\u0026s=f7fca2ed2e2a42c04178d079778d86f7","appearance":{"default":"system","strict":true},"navbar":{"primary":{"type":"button","label":"Painel do developer","href":"https://developer.deliveryvip.com.br"}},"footer":{"socials":{"website":"https://deliveryvip.com.br","github":"https://github.com/DeliveryVip","discord":"https://discord.gg/AJF8Yha4"},"links":[{"header":"Plataforma","items":[{"label":"Painel do lojista","href":"https://app.deliveryvip.com.br"},{"label":"Painel do developer","href":"https://developer.deliveryvip.com.br"},{"label":"Status","href":"https://status.deliveryvip.com.br"},{"label":"Central de ajuda","href":"https://ajuda.deliveryvip.com.br"}]},{"header":"Desenvolvedores","items":[{"label":"Jornada do Developer","href":"/docs/inicio/primeiros-passos/jornada-do-developer"},{"label":"Postman","href":"/docs/inicio/conceitos/postman"},{"label":"Use com IA","href":"/docs/inicio/conceitos/usando-com-ia"},{"label":"Cofrinho (exemplo de fidelidade)","href":"https://github.com/DeliveryVip/cofrinho"},{"label":"Changelog","href":"/docs/changelog"}]},{"header":"Suporte","items":[{"label":"Discord","href":"https://discord.gg/AJF8Yha4"},{"label":"Agendar uma reunião","href":"https://calendar.app.google/EchaXk57y7xp8Hyx6"}]}]},"search":{"prompt":"Pesquisar na documentação..."},"seo":{"metatags":{"og:site_name":"DeliveryVip Developers","og:locale":"pt_BR","twitter:card":"summary_large_image"}},"fonts":{"family":"Geist"},"errors":{"404":{"redirect":false,"title":"Página não encontrada","description":"Volte para a [página inicial](/) ou use a busca."}},"contextual":{"options":["copy","view","chatgpt","claude","cursor","vscode","mcp"],"display":"header"},"markdown":{"instructions":"Documentação das APIs da DeliveryVip, em português. Regras que mais quebram integrações: (1) Merchant API: faça polling em GET /merchant/v3/events:polling no máximo a cada 30 s por token; confirme todo evento recebido com POST /merchant/v3/events/acknowledgment e corpo [{\"id\": \"\u003ceventId>\"}] (o campo lido é id, não eventId), inclusive eventos repetidos ou que o sistema não trata; deduplique por eventId; o evento é só um aviso, busque o pedido na orderURL. (2) Tokens client_credentials valem 24 h e não têm refresh_token: peça outro ao receber 401. (3) Webhooks: valide a assinatura HMAC sobre o corpo bruto e responda 2xx rápido; o polling é a reconciliação. (4) Open Delivery: host od.deliveryvip.com.br, um client_secret por loja, datas em UTC. (5) Fidelidade: o operador implementa 5 rotas assinadas com HMAC e chama o config push; o estorno precisa ser idempotente. (6) Partner API: scope dv.partner. Não invente endpoints: use a referência gerada das specs OpenAPI."},"styling":{"latex":false},"navigation":{"languages":[{"language":"pt-BR","href":""}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"deliveryvip-a4256422","hasAudioNarration":false,"actualSubdomain":"deliveryvip-a4256422","customDomains":[],"gitSource":{"type":"github","owner":"deliveryvip","repo":"developerdocs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":"","_id":"6ae4c831d9cc4cd9a0a2acf8"},"chroma":{"latestBuiltDeploymentHistoryId":"6ae4cc91981729a4c39866ff","collectionId":"b87548ca-f6e4-4b97-b2a3-975659825db2","liveDeploymentHistoryId":"6ae4cc91981729a4c39866ff","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae4cc91981729a4c39866ff","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"pt-BR","tag":"Referência","count":120},{"language":"pt-BR","tag":"Merchant API","count":88},{"language":"pt-BR","tag":"Partner API","count":87},{"language":"pt-BR","tag":"Indoor","count":35},{"language":"pt-BR","tag":"Lojas","count":34},{"language":"pt-BR","tag":"Revendas","count":29},{"language":"pt-BR","tag":"Open Delivery","count":27},{"language":"pt-BR","tag":"Pedidos","count":25},{"language":"pt-BR","tag":"Endpoints","count":25},{"language":"pt-BR","tag":"Início","count":20}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"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":"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":"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":"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}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"#localization-select-trigger,[data-component-part=localization-select-trigger]{display:none!important}"}],"page":{"pagePath":"api-reference/redemptions/synchronous-balance-debit","slug":"/api-reference/redemptions/synchronous-balance-debit","pageMetadata":{"title":"Synchronous balance debit","description":"The authoritative debit, called as the LAST step inside DeliveryVip's order-creation transaction. A non-201 answer (or timeout) rolls the whole order back — the order is never born and the customer keeps shopping. Idempotency key is relatedOrderId (the order UUID): replaying the same relatedOrderId with the same amount must answer 201 with the SAME redemptionId; the same relatedOrderId with a DIFFERENT amount must be rejected with 422 code idempotency_conflict. amount is a JSON number (natural serialization, e.g. 25.0) and is always the value actually discounted on the order — it may be lower than what the customer originally reserved if the cart shrank. It also already honours the operator's own capabilities.redemptionLimits: never below the declared minimum, never above the declared maximum. Percentage ceilings are computed over the order's items (subtotal minus other cart discounts) — shipping and fees are never redeemable — so for operators whose own rule applies to the order total this amount can be lower than their ceiling, never higher. A 201 without redemptionId is treated as malformed and rolls the order back.","deprecated":null,"version":null,"openapi":"https://app.deliveryvip.com.br/swaggers/loyalty_operator.yaml post /v1/loyalty/redemptions","href":"/api-reference/redemptions/synchronous-balance-debit","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: \"The authoritative debit, called as the LAST step inside DeliveryVip’s order-creation transaction. A non-201 answer (or timeout) rolls the whole order back — the order is never born and the customer keeps shopping. Idempotency key is relatedOrderId (the order UUID): replaying the same relatedOrderId with the same amount must answer 201 with the SAME redemptionId; the same relatedOrderId with a DIFFERENT amount must be rejected with 422 code idempotency_conflict. amount is a JSON number (natural serialization, e.g. 25.0) and is always the value actually discounted on the order — it may be lower than what the customer originally reserved if the cart shrank. It also already honours the operator’s own capabilities.redemptionLimits: never below the declared minimum, never above the declared maximum. Percentage ceilings are computed over the order’s items (subtotal minus other cart discounts) — shipping and fees are never redeemable — so for operators whose own rule applies to the order total this amount can be lower than their ceiling, never higher. A 201 without redemptionId is treated as malformed and rolls the order back.\"\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":"Synchronous balance debit","description":"The authoritative debit, called as the LAST step inside DeliveryVip's order-creation transaction. A non-201 answer (or timeout) rolls the whole order back — the order is never born and the customer keeps shopping. Idempotency key is relatedOrderId (the order UUID): replaying the same relatedOrderId with the same amount must answer 201 with the SAME redemptionId; the same relatedOrderId with a DIFFERENT amount must be rejected with 422 code idempotency_conflict. amount is a JSON number (natural serialization, e.g. 25.0) and is always the value actually discounted on the order — it may be lower than what the customer originally reserved if the cart shrank. It also already honours the operator's own capabilities.redemptionLimits: never below the declared minimum, never above the declared maximum. Percentage ceilings are computed over the order's items (subtotal minus other cart discounts) — shipping and fees are never redeemable — so for operators whose own rule applies to the order total this amount can be lower than their ceiling, never higher. A 201 without redemptionId is treated as malformed and rolls the order back.","deprecated":null,"version":null,"openapi":"https://app.deliveryvip.com.br/swaggers/loyalty_operator.yaml post /v1/loyalty/redemptions","href":"/api-reference/redemptions/synchronous-balance-debit","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Redemptions"],"summary":"Synchronous balance debit","description":"The authoritative debit, called as the LAST step inside DeliveryVip's order-creation transaction. A non-201 answer (or timeout) rolls the whole order back — the order is never born and the customer keeps shopping. Idempotency key is relatedOrderId (the order UUID): replaying the same relatedOrderId with the same amount must answer 201 with the SAME redemptionId; the same relatedOrderId with a DIFFERENT amount must be rejected with 422 code idempotency_conflict. amount is a JSON number (natural serialization, e.g. 25.0) and is always the value actually discounted on the order — it may be lower than what the customer originally reserved if the cart shrank. It also already honours the operator's own capabilities.redemptionLimits: never below the declared minimum, never above the declared maximum. Percentage ceilings are computed over the order's items (subtotal minus other cart discounts) — shipping and fees are never redeemable — so for operators whose own rule applies to the order total this amount can be lower than their ceiling, never higher. A 201 without redemptionId is treated as malformed and rolls the order back.","requestBody":"f863ed91-c01b-456a-b766-fa4a6d56edc8","responses":{"201":"859408af-599a-42f8-8074-49e557ce546d","409":"8b7df2d3-d83c-42fa-a056-3eb470bd35df","422":"2d2c39bf-6959-425b-9a93-5600889b5d75"},"method":"post","type":"path","servers":["cfe626c9-bcd3-4ea8-b786-bcfa1588ed7d"],"security":["bece94ee-6d31-4b66-ad14-0f0948d5fa85"],"path":"/v1/loyalty/redemptions","baseUrlOptions":["{api_base_url}"],"title":"Synchronous balance debit","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["accountId","relatedOrderId","kind","amount","order"],"properties":{"accountId":{"type":"string","isRequired":true,"uniqueKey":"accountId","typeLabel":"string"},"relatedOrderId":{"type":"string","format":"uuid","description":"The DeliveryVip order UUID — the idempotency key (one debit per order).","isRequired":true,"uniqueKey":"relatedOrderId","typeLabel":"string\u003cuuid>"},"kind":{"type":"string","enum":["balance"],"isRequired":true,"uniqueKey":"kind","typeLabel":"enum\u003cstring>"},"amount":{"type":"number","description":"Value to debit, up to 2 decimal places, as a JSON number.","isRequired":true,"uniqueKey":"amount","typeLabel":"number"},"order":{"type":"object","required":["subtotal","total","items"],"properties":{"subtotal":{"type":"number","isRequired":true,"uniqueKey":"order.subtotal","typeLabel":"number"},"total":{"type":"number","isRequired":true,"uniqueKey":"order.total","typeLabel":"number"},"items":{"type":"array","items":{"type":"object","required":["name","quantity","totalPrice"],"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"order.\\items.items.[INDEX].name","typeLabel":"string"},"quantity":{"type":"integer","isRequired":true,"uniqueKey":"order.\\items.items.[INDEX].quantity","typeLabel":"integer"},"totalPrice":{"type":"number","isRequired":true,"uniqueKey":"order.\\items.items.[INDEX].totalPrice","typeLabel":"number"},"externalCode":{"type":"string","description":"The merchant's PDV/ERP code for the item; omitted when the product has none.","uniqueKey":"order.\\items.items.[INDEX].externalCode","typeLabel":"string"}},"uniqueKey":"order.\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"order.\\items","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"order","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"accountId":"\u003cstring>","relatedOrderId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","kind":"balance","amount":123,"order":{"subtotal":123,"total":123,"items":[{"name":"\u003cstring>","quantity":123,"totalPrice":123,"externalCode":"\u003cstring>"}]}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"859408af-599a-42f8-8074-49e557ce546d":{"description":"Balance debited.","content":{"application/json":{"schema":{"type":"object","required":["redemptionId"],"properties":{"redemptionId":{"type":"string","description":"The operator's identifier for this debit (needed for reversal).","isRequired":true,"uniqueKey":"redemptionId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"redemptionId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"8b7df2d3-d83c-42fa-a056-3eb470bd35df":{"description":"Insufficient balance. The order is rolled back and the customer keeps shopping.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable reason (e.g. insufficient_balance, below_minimum_order, idempotency_conflict).","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"2d2c39bf-6959-425b-9a93-5600889b5d75":{"description":"Business rejection (e.g. below_minimum_order, idempotency_conflict). The order is rolled back with a generic message to the customer.","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable reason (e.g. insufficient_balance, below_minimum_order, idempotency_conflict).","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"bece94ee-6d31-4b66-ad14-0f0948d5fa85":{"appId":{"type":"apiKey","in":"header","name":"X-App-Id","description":"The uid of the operator's OAuth application on DeliveryVip.","scopes":[],"schemeName":"appId"},"appMerchantId":{"type":"apiKey","in":"header","name":"X-App-MerchantId","description":"The UUID of the merchant (company) the call concerns.","scopes":[],"schemeName":"appMerchantId"},"appSignature":{"type":"apiKey","in":"header","name":"X-App-Signature","description":"Hex HMAC-SHA256 of the raw request body (empty string when there is no body), keyed with the app's OAuth secret. Verify against the exact bytes received.","scopes":[],"schemeName":"appSignature"}}},"servers":{"cfe626c9-bcd3-4ea8-b786-bcfa1588ed7d":{"url":"{api_base_url}","description":"The base URL the operator declares on the loyalty extension (https only; may include a path prefix).","variables":{"api_base_url":{"default":"https://operator.example.com/dv/v1"}}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-App-Id","description":"The uid of the operator's OAuth application on DeliveryVip.","scopes":[],"schemeName":"appId"},"schema":{"title":"X-App-Id","type":"string","description":"The uid of the operator's OAuth application on DeliveryVip.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"appId","name":"X-App-Id"},{"scheme":{"type":"apiKey","in":"header","name":"X-App-MerchantId","description":"The UUID of the merchant (company) the call concerns.","scopes":[],"schemeName":"appMerchantId"},"schema":{"title":"X-App-MerchantId","type":"string","description":"The UUID of the merchant (company) the call concerns.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"appMerchantId","name":"X-App-MerchantId"},{"scheme":{"type":"apiKey","in":"header","name":"X-App-Signature","description":"Hex HMAC-SHA256 of the raw request body (empty string when there is no body), keyed with the app's OAuth secret. Verify against the exact bytes received.","scopes":[],"schemeName":"appSignature"},"schema":{"title":"X-App-Signature","type":"string","description":"Hex HMAC-SHA256 of the raw request body (empty string when there is no body), keyed with the app's OAuth secret. Verify against the exact bytes received.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"appSignature","name":"X-App-Signature"}],"title":"appId \u0026 appMerchantId \u0026 appSignature"}]},"originalFileLocation":"https://app.deliveryvip.com.br/swaggers/loyalty_operator.yaml"},"subdomain":"deliveryvip-a4256422","siteName":"DeliveryVip Developers","title":"Synchronous balance debit - DeliveryVip Developers","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"pt-BR":{"href":"/api-reference/redemptions/synchronous-balance-debit","matchLevel":0}}},"lastModified":"2026-10-30T16:41:32.848Z","originalFileLocation":"api-reference/redemptions/synchronous-balance-debit.mdx","locale":"pt-BR"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"system\";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=\"The authoritative debit, called as the LAST step inside DeliveryVip\u0026#x27;s order-creation transaction. A non-201 answer (or timeout) rolls the whole order back — the order is never born and the customer keeps shopping. Idempotency key is relatedOrderId (the order UUID): replaying the same relatedOrderId with the same amount must answer 201 with the SAME redemptionId; the same relatedOrderId with a DIFFERENT amount must be rejected with 422 code idempotency_conflict. amount is a JSON number (natural serialization, e.g. 25.0) and is always the value actually discounted on the order — it may be lower than what the customer originally reserved if the cart shrank. It also already honours the operator\u0026#x27;s own capabilities.redemptionLimits: never below the declared minimum, never above the declared maximum. Percentage ceilings are computed over the order\u0026#x27;s items (subtotal minus other cart discounts) — shipping and fees are never redeemable — so for operators whose own rule applies to the order total this amount can be lower than their ceiling, never higher. A 201 without redemptionId is treated as malformed and rolls the order back.\">\u003cmeta data-mint-head name=\"application-name\" content=\"DeliveryVip Developers\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/deliveryvip-a4256422/lIzAoDMYv08osHDW/_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=\"/docs/mintlify-assets/_mintlify/favicons/deliveryvip-a4256422/lIzAoDMYv08osHDW/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/deliveryvip-a4256422/lIzAoDMYv08osHDW/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/deliveryvip-a4256422/lIzAoDMYv08osHDW/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/deliveryvip-a4256422/lIzAoDMYv08osHDW/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/deliveryvip-a4256422/lIzAoDMYv08osHDW/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/deliveryvip-a4256422/lIzAoDMYv08osHDW/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/deliveryvip-a4256422/lIzAoDMYv08osHDW/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/deliveryvip-a4256422/lIzAoDMYv08osHDW/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Synchronous balance debit - DeliveryVip Developers\">\u003cmeta data-mint-head property=\"og:description\" content=\"The authoritative debit, called as the LAST step inside DeliveryVip\u0026#x27;s order-creation transaction. A non-201 answer (or timeout) rolls the whole order back — the order is never born and the customer keeps shopping. Idempotency key is relatedOrderId (the order UUID): replaying the same relatedOrderId with the same amount must answer 201 with the SAME redemptionId; the same relatedOrderId with a DIFFERENT amount must be rejected with 422 code idempotency_conflict. amount is a JSON number (natural serialization, e.g. 25.0) and is always the value actually discounted on the order — it may be lower than what the customer originally reserved if the cart shrank. It also already honours the operator\u0026#x27;s own capabilities.redemptionLimits: never below the declared minimum, never above the declared maximum. Percentage ceilings are computed over the order\u0026#x27;s items (subtotal minus other cart discounts) — shipping and fees are never redeemable — so for operators whose own rule applies to the order total this amount can be lower than their ceiling, never higher. A 201 without redemptionId is treated as malformed and rolls the order back.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"DeliveryVip Developers\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://deliveryvip-a4256422.mintlify.dev/docs/api-reference/redemptions/synchronous-balance-debit\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://deliveryvip-a4256422.mintlify.app/_mintlify/api/og/v2?division=Rotas+do+operador\u0026amp;title=Synchronous+balance+debit\u0026amp;description=The+authoritative+debit%2C+called+as+the+LAST+step+inside+DeliveryVip%27s+order-creation+transaction.+A+non-201+answer+%28or+timeout%29+rolls+the+whole+order+back+%E2%80%94+the\u0026amp;theme=3b22322ae3bbae2651505377\u0026amp;signature=80ddb87428a168bcd5dc7d64aceb0fd1d90b8b59fe865220fd730d758702ae76\">\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=\"Synchronous balance debit - DeliveryVip Developers\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The authoritative debit, called as the LAST step inside DeliveryVip\u0026#x27;s order-creation transaction. A non-201 answer (or timeout) rolls the whole order back — the order is never born and the customer keeps shopping. Idempotency key is relatedOrderId (the order UUID): replaying the same relatedOrderId with the same amount must answer 201 with the SAME redemptionId; the same relatedOrderId with a DIFFERENT amount must be rejected with 422 code idempotency_conflict. amount is a JSON number (natural serialization, e.g. 25.0) and is always the value actually discounted on the order — it may be lower than what the customer originally reserved if the cart shrank. It also already honours the operator\u0026#x27;s own capabilities.redemptionLimits: never below the declared minimum, never above the declared maximum. Percentage ceilings are computed over the order\u0026#x27;s items (subtotal minus other cart discounts) — shipping and fees are never redeemable — so for operators whose own rule applies to the order total this amount can be lower than their ceiling, never higher. A 201 without redemptionId is treated as malformed and rolls the order back.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://deliveryvip-a4256422.mintlify.app/_mintlify/api/og/v2?division=Rotas+do+operador\u0026amp;title=Synchronous+balance+debit\u0026amp;description=The+authoritative+debit%2C+called+as+the+LAST+step+inside+DeliveryVip%27s+order-creation+transaction.+A+non-201+answer+%28or+timeout%29+rolls+the+whole+order+back+%E2%80%94+the\u0026amp;theme=3b22322ae3bbae2651505377\u0026amp;signature=80ddb87428a168bcd5dc7d64aceb0fd1d90b8b59fe865220fd730d758702ae76\">\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=\"/docs/mintlify-assets/_mintlify/favicons/deliveryvip-a4256422/lIzAoDMYv08osHDW/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"DeliveryVip Developers\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#EC681B\">\u003cmeta data-mint-head name=\"og:locale\" content=\"pt_BR\">\u003clink data-mint-head rel=\"canonical\" href=\"https://deliveryvip-a4256422.mintlify.dev/docs/api-reference/redemptions/synchronous-balance-debit\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/redemptions/synchronous-balance-debit.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://deliveryvip-a4256422.mintlify.dev/#organization\",\"name\":\"DeliveryVip Developers\",\"url\":\"https://deliveryvip-a4256422.mintlify.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/deliveryvip-a4256422/ELxpcniK2_BP8zxT/logo/light.svg?fit=max\u0026auto=format\u0026n=ELxpcniK2_BP8zxT\u0026q=85\u0026s=b5cd347a6fb8b88418ecffa2cecba5ca\"}},{\"@type\":\"WebSite\",\"@id\":\"https://deliveryvip-a4256422.mintlify.dev/docs#website\",\"name\":\"DeliveryVip Developers\",\"url\":\"https://deliveryvip-a4256422.mintlify.dev/docs\",\"publisher\":{\"@id\":\"https://deliveryvip-a4256422.mintlify.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://deliveryvip-a4256422.mintlify.dev/docs/api-reference/redemptions/synchronous-balance-debit#webpage\",\"url\":\"https://deliveryvip-a4256422.mintlify.dev/docs/api-reference/redemptions/synchronous-balance-debit\",\"name\":\"Synchronous balance debit\",\"description\":\"The authoritative debit, called as the LAST step inside DeliveryVip's order-creation transaction. A non-201 answer (or timeout) rolls the whole order back — the order is never born and the customer keeps shopping. Idempotency key is relatedOrderId (the order UUID): replaying the same relatedOrderId with the same amount must answer 201 with the SAME redemptionId; the same relatedOrderId with a DIFFERENT amount must be rejected with 422 code idempotency_conflict. amount is a JSON number (natural serialization, e.g. 25.0) and is always the value actually discounted on the order — it may be lower than what the customer originally reserved if the cart shrank. It also already honours the operator's own capabilities.redemptionLimits: never below the declared minimum, never above the declared maximum. Percentage ceilings are computed over the order's items (subtotal minus other cart discounts) — shipping and fees are never redeemable — so for operators whose own rule applies to the order total this amount can be lower than their ceiling, never higher. A 201 without redemptionId is treated as malformed and rolls the order back.\",\"dateModified\":\"2026-10-30T16:41:32.848Z\",\"isPartOf\":{\"@id\":\"https://deliveryvip-a4256422.mintlify.dev/docs#website\"},\"breadcrumb\":{\"@id\":\"https://deliveryvip-a4256422.mintlify.dev/docs/api-reference/redemptions/synchronous-balance-debit#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://deliveryvip-a4256422.mintlify.dev/docs/api-reference/redemptions/synchronous-balance-debit#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Referência\",\"item\":\"https://deliveryvip-a4256422.mintlify.dev/docs/guides/merchant/loyalty/referencia-rapida\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rotas do operador\",\"item\":\"https://deliveryvip-a4256422.mintlify.dev/docs/api-reference/handshake/signed-reachability-check\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Synchronous balance debit\",\"item\":\"https://deliveryvip-a4256422.mintlify.dev/docs/api-reference/redemptions/synchronous-balance-debit\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://deliveryvip-a4256422.mintlify.dev/docs/api-reference/redemptions/synchronous-balance-debit#apireference\",\"headline\":\"Synchronous balance debit\",\"name\":\"Synchronous balance debit\",\"description\":\"The authoritative debit, called as the LAST step inside DeliveryVip's order-creation transaction. A non-201 answer (or timeout) rolls the whole order back — the order is never born and the customer keeps shopping. Idempotency key is relatedOrderId (the order UUID): replaying the same relatedOrderId with the same amount must answer 201 with the SAME redemptionId; the same relatedOrderId with a DIFFERENT amount must be rejected with 422 code idempotency_conflict. amount is a JSON number (natural serialization, e.g. 25.0) and is always the value actually discounted on the order — it may be lower than what the customer originally reserved if the cart shrank. It also already honours the operator's own capabilities.redemptionLimits: never below the declared minimum, never above the declared maximum. Percentage ceilings are computed over the order's items (subtotal minus other cart discounts) — shipping and fees are never redeemable — so for operators whose own rule applies to the order total this amount can be lower than their ceiling, never higher. A 201 without redemptionId is treated as malformed and rolls the order back.\",\"url\":\"https://deliveryvip-a4256422.mintlify.dev/docs/api-reference/redemptions/synchronous-balance-debit\",\"mainEntityOfPage\":{\"@id\":\"https://deliveryvip-a4256422.mintlify.dev/docs/api-reference/redemptions/synchronous-balance-debit#webpage\"},\"dateModified\":\"2026-10-30T16:41:32.848Z\",\"publisher\":{\"@id\":\"https://deliveryvip-a4256422.mintlify.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://deliveryvip-a4256422.mintlify.dev/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"DeliveryVip Developers\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"DeliveryVip Developers","nav":{"global":null,"languages":[{"language":"pt-BR","tabs":[{"tab":"Início","icon":"house","pages":[{"title":"Início","href":""}]},{"tab":"Merchant API","icon":"store","pages":[{"title":"Merchant API","href":"/guides/merchant"}]},{"tab":"Open Delivery","icon":"right-left","pages":[{"title":"Open Delivery","href":"/guides/open-delivery"}]},{"tab":"Fidelidade","icon":"gift","groups":[{"group":"Visão geral","icon":"compass","pages":[{"title":"Fidelidade","sidebarTitle":"Introdução","icon":"gift","href":"/guides/merchant/loyalty"},{"title":"Primeiros passos","icon":"rocket","href":"/guides/merchant/loyalty/primeiros-passos"},{"title":"Monte um operador de fidelidade mínimo","sidebarTitle":"Operador mínimo","icon":"rocket","href":"/guides/merchant/loyalty/operador-minimo"}]},{"group":"Guias","icon":"map","pages":[{"title":"Ativando o programa","icon":"toggle-on","href":"/guides/merchant/loyalty/ativando-o-programa"},{"title":"Acúmulo","icon":"coins","href":"/guides/merchant/loyalty/acumulo"}]},{"group":"Contrato do operador","icon":"file-contract","pages":[{"title":"Contrato do operador","sidebarTitle":"Visão geral do contrato","icon":"file-signature","href":"/guides/merchant/loyalty/contrato-do-operador/index"},{"title":"Vínculo e PIN","icon":"link","href":"/guides/merchant/loyalty/contrato-do-operador/vinculo-e-pin"},{"title":"Resgate e estorno","icon":"money-bill-transfer","href":"/guides/merchant/loyalty/contrato-do-operador/resgate-e-estorno"}]},{"group":"Referência","icon":"code","pages":[{"title":"Referência rápida","icon":"list","href":"/guides/merchant/loyalty/referencia-rapida"},{"group":"Configuração do programa","icon":"sliders","pages":[{"title":"Fidelidade","icon":"gift","href":"/reference/merchant/v3/loyalty"},{"group":"Push da configuração","pages":[{"title":"Enviar configuração de fidelidade","deprecated":null,"version":null,"openapi":"https://app.deliveryvip.com.br/swaggers/merchant.yaml put /merchant/v3/{merchantId}/loyalty/config","href":"/api-reference/loyalty/enviar-configuração-de-fidelidade"}]},{"group":"Remoção da configuração","pages":[{"title":"Remover configuração de fidelidade","deprecated":null,"version":null,"openapi":"https://app.deliveryvip.com.br/swaggers/merchant.yaml delete /merchant/v3/{merchantId}/loyalty/config","href":"/api-reference/loyalty/remover-configuração-de-fidelidade"}]}]},{"group":"Rotas do operador","icon":"server","pages":[{"title":"Signed reachability check","deprecated":null,"version":null,"openapi":"https://app.deliveryvip.com.br/swaggers/loyalty_operator.yaml get /v1/loyalty/ping","href":"/api-reference/handshake/signed-reachability-check"},{"title":"Locate-or-enroll the customer (opt-in)","deprecated":null,"version":null,"openapi":"https://app.deliveryvip.com.br/swaggers/loyalty_operator.yaml post /v1/loyalty/accounts:link","href":"/api-reference/accounts/locate-or-enroll-the-customer-opt-in"},{"title":"Account balance","description":"Balance read for the checkout surface. DeliveryVip caches the answer for 60 seconds per account. The request carries only the opaque account id — never the CPF. Unknown fields in the response are ignored (emitting extras such as expiresAt or metadata is safe). The optional redemptionLimits object pins per-customer boundaries that override the program's for this customer — it rides the same 60-second cache as the balance, so a change to a customer's rules takes up to a minute to reach checkout.","deprecated":null,"version":null,"openapi":"https://app.deliveryvip.com.br/swaggers/loyalty_operator.yaml get /v1/loyalty/accounts/{accountId}","href":"/api-reference/accounts/account-balance"},{"title":"Synchronous balance debit","deprecated":null,"version":null,"openapi":"https://app.deliveryvip.com.br/swaggers/loyalty_operator.yaml post /v1/loyalty/redemptions","href":"/api-reference/redemptions/synchronous-balance-debit"},{"title":"Explicit idempotent reversal","description":"Undoes a debit after order cancellation, rejection, payment expiry or payment failure. Fire-and-forget from DeliveryVip's perspective (asynchronous with retries). Must be idempotent: reversing an already-reversed redemption answers 2xx again. 404 means the redemption is unknown — DeliveryVip stops retrying (terminal with an internal alert). Transport failures and 5xx are retried up to 5 times, then flagged for manual reconciliation. The request has no body (signature = HMAC of the empty string).","deprecated":null,"version":null,"openapi":"https://app.deliveryvip.com.br/swaggers/loyalty_operator.yaml post /v1/loyalty/redemptions/{redemptionId}/reversal","href":"/api-reference/redemptions/explicit-idempotent-reversal"}]}]}]},{"tab":"Partner API","icon":"handshake","pages":[{"title":"Partner API","href":"/guides/partner"}]},{"tab":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/changelog"}]}]}]},"basePath":"","title":"Synchronous balance debit - DeliveryVip Developers","buildId":"dpl_4RHMRqtvdHvKgaEfTTjFqjzja3B6","deploymentId":"dpl_4RHMRqtvdHvKgaEfTTjFqjzja3B6","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-D_4Sesi0.js","utils-DRHeK26p.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C6d-DUc2.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dex7slho.js","snippetPresets-BcCEBp0Z.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CufowNTX.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-A4lJSCIe.js","shallow-DqoHP7zn.js","getApiPlaygroundDisplay-Cku8AmtL.js","CodeSnippet-CtHQbNqc.js","CodeSnippets-CGo5Cslf.js","Page-BoJxk0m8.js","getPastedJson-M-bKdue4.js","icon-DEqCU4st.js","MethodPill-DnfSSXiJ.js","DuplicateIcon-BHu2PE8M.js","createIcon-BPsE5X7c.js","DynamicMarkdown-Dnt6YhtR.js","SectionHeading-6CtFWqMQ.js","axios-vUo_bRtp.js","Markdown-BoKe_1fI.js","clsx-DM5-sUNJ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CkIdkovK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-B3e6Nh_r.js"]}