[{"data":1,"prerenderedAt":1737},["ShallowReactive",2],{"navigation":3,"external-navigation":214,"external_core:\u002Fcore\u002Fprocessors\u002Fvananam":443},[4,8,201],{"title":5,"path":6,"stem":7},"Documentation","\u002F","README",{"title":9,"path":10,"stem":11,"children":12},"EOS","\u002Feos","eos\u002FREADME",[13,44,121,181],{"title":14,"collapsed":15,"path":16,"stem":17,"children":18,"page":43},"Adrs",true,"\u002Feos\u002Fadrs","eos\u002Fadrs",[19,23,27,31,35,39],{"title":20,"path":21,"stem":22},"Use Turborepo for the EOS monorepo","\u002Feos\u002Fadrs\u002F0001-use-turborepo-for-eos","eos\u002Fadrs\u002F0001-use-turborepo-for-eos",{"title":24,"path":25,"stem":26},"Use Oxc for linting and formatting","\u002Feos\u002Fadrs\u002F0003-use-oxc-for-linting-and-formatting","eos\u002Fadrs\u002F0003-use-oxc-for-linting-and-formatting",{"title":28,"path":29,"stem":30},"Lint Markdown and validate links in CI","\u002Feos\u002Fadrs\u002F0004-lint-markdown-in-ci","eos\u002Fadrs\u002F0004-lint-markdown-in-ci",{"title":32,"path":33,"stem":34},"Use Lefthook for repository-managed Git hooks","\u002Feos\u002Fadrs\u002F0005-use-lefthook-for-repository-git-hooks","eos\u002Fadrs\u002F0005-use-lefthook-for-repository-git-hooks",{"title":36,"path":37,"stem":38},"Use Commitlint's conventional configuration","\u002Feos\u002Fadrs\u002F0006-use-commitlint-conventional-configuration","eos\u002Fadrs\u002F0006-use-commitlint-conventional-configuration",{"title":40,"path":41,"stem":42},"Use Nx for EOS task execution","\u002Feos\u002Fadrs\u002F0007-use-nx-for-eos","eos\u002Fadrs\u002F0007-use-nx-for-eos",false,{"title":45,"path":46,"stem":47,"children":48},"Harbourmaster","\u002Feos\u002Fharbourmaster","eos\u002Fharbourmaster\u002FREADME",[49,58,71,96],{"title":50,"path":51,"stem":52,"children":53,"page":43},"Decisions","\u002Feos\u002Fharbourmaster\u002Fdecisions","eos\u002Fharbourmaster\u002Fdecisions",[54],{"title":55,"path":56,"stem":57},"AI-50: GitHub auth and fork pull request policy","\u002Feos\u002Fharbourmaster\u002Fdecisions\u002Fai-50-auth-and-fork-policy","eos\u002Fharbourmaster\u002Fdecisions\u002Fai-50-auth-and-fork-policy",{"title":59,"path":60,"stem":61,"children":62,"page":43},"Explanation","\u002Feos\u002Fharbourmaster\u002Fexplanation","eos\u002Fharbourmaster\u002Fexplanation",[63,67],{"title":64,"path":65,"stem":66},"The Harbourmaster review pipeline","\u002Feos\u002Fharbourmaster\u002Fexplanation\u002Freview-pipeline","eos\u002Fharbourmaster\u002Fexplanation\u002Freview-pipeline",{"title":68,"path":69,"stem":70},"The Harbourmaster shared-action trust boundary","\u002Feos\u002Fharbourmaster\u002Fexplanation\u002Fshared-action-trust-boundary","eos\u002Fharbourmaster\u002Fexplanation\u002Fshared-action-trust-boundary",{"title":72,"path":73,"stem":74,"children":75,"page":43},"How To","\u002Feos\u002Fharbourmaster\u002Fhow-to","eos\u002Fharbourmaster\u002Fhow-to",[76,80,84,88,92],{"title":77,"path":78,"stem":79},"How to add Harbourmaster reviews to a repository","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Fadd-harbourmaster-to-a-repository","eos\u002Fharbourmaster\u002Fhow-to\u002Fadd-harbourmaster-to-a-repository",{"title":81,"path":82,"stem":83},"How to build a pilot dashboard","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Fbuild-pilot-dashboard","eos\u002Fharbourmaster\u002Fhow-to\u002Fbuild-pilot-dashboard",{"title":85,"path":86,"stem":87},"How to configure model routing","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Fconfigure-model-routing","eos\u002Fharbourmaster\u002Fhow-to\u002Fconfigure-model-routing",{"title":89,"path":90,"stem":91},"How to request a Harbourmaster review","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Frequest-a-review","eos\u002Fharbourmaster\u002Fhow-to\u002Frequest-a-review",{"title":93,"path":94,"stem":95},"How to diagnose a Harbourmaster review failure","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Ftroubleshoot-a-review","eos\u002Fharbourmaster\u002Fhow-to\u002Ftroubleshoot-a-review",{"title":97,"path":98,"stem":99,"children":100,"page":43},"Reference","\u002Feos\u002Fharbourmaster\u002Freference","eos\u002Fharbourmaster\u002Freference",[101,105,109,113,117],{"title":102,"path":103,"stem":104},"Harbourmaster command-line interface","\u002Feos\u002Fharbourmaster\u002Freference\u002Fcli","eos\u002Fharbourmaster\u002Freference\u002Fcli",{"title":106,"path":107,"stem":108},"Harbourmaster configuration","\u002Feos\u002Fharbourmaster\u002Freference\u002Fconfiguration","eos\u002Fharbourmaster\u002Freference\u002Fconfiguration",{"title":110,"path":111,"stem":112},"Harbourmaster GitHub Action","\u002Feos\u002Fharbourmaster\u002Freference\u002Fgithub-action","eos\u002Fharbourmaster\u002Freference\u002Fgithub-action",{"title":114,"path":115,"stem":116},"Harbourmaster review behavior","\u002Feos\u002Fharbourmaster\u002Freference\u002Freview-behavior","eos\u002Fharbourmaster\u002Freference\u002Freview-behavior",{"title":118,"path":119,"stem":120},"Harbourmaster telemetry","\u002Feos\u002Fharbourmaster\u002Freference\u002Ftelemetry","eos\u002Fharbourmaster\u002Freference\u002Ftelemetry",{"title":72,"path":122,"stem":123,"children":124,"page":43},"\u002Feos\u002Fhow-to","eos\u002Fhow-to",[125,129,133,137,141,145,149,153,157,161,165,169,173,177],{"title":126,"path":127,"stem":128},"How to add an external documentation source","\u002Feos\u002Fhow-to\u002Fadd-external-documentation-source","eos\u002Fhow-to\u002Fadd-external-documentation-source",{"title":130,"path":131,"stem":132},"How to connect SDLC integrations","\u002Feos\u002Fhow-to\u002Fconnect-sdlc-integrations","eos\u002Fhow-to\u002Fconnect-sdlc-integrations",{"title":134,"path":135,"stem":136},"How to consume the EOS plugin marketplace","\u002Feos\u002Fhow-to\u002Fconsume-eos-marketplace","eos\u002Fhow-to\u002Fconsume-eos-marketplace",{"title":138,"path":139,"stem":140},"How to create a spike ticket","\u002Feos\u002Fhow-to\u002Fcreate-spike-ticket","eos\u002Fhow-to\u002Fcreate-spike-ticket",{"title":142,"path":143,"stem":144},"How to finalise a repository change","\u002Feos\u002Fhow-to\u002Ffinalise-change","eos\u002Fhow-to\u002Ffinalise-change",{"title":146,"path":147,"stem":148},"How to install the EOS Docs MCP server","\u002Feos\u002Fhow-to\u002Finstall-eos-docs-mcp","eos\u002Fhow-to\u002Finstall-eos-docs-mcp",{"title":150,"path":151,"stem":152},"How to resolve a spike ticket","\u002Feos\u002Fhow-to\u002Fresolve-spike-ticket","eos\u002Fhow-to\u002Fresolve-spike-ticket",{"title":154,"path":155,"stem":156},"How to run Git hook checks","\u002Feos\u002Fhow-to\u002Frun-git-hook-checks","eos\u002Fhow-to\u002Frun-git-hook-checks",{"title":158,"path":159,"stem":160},"How to use the AI-enabled SDLC","\u002Feos\u002Fhow-to\u002Fuse-ai-enabled-sdlc","eos\u002Fhow-to\u002Fuse-ai-enabled-sdlc",{"title":162,"path":163,"stem":164},"Use the Aikido plugin","\u002Feos\u002Fhow-to\u002Fuse-aikido-plugin","eos\u002Fhow-to\u002Fuse-aikido-plugin",{"title":166,"path":167,"stem":168},"How to use Compass","\u002Feos\u002Fhow-to\u002Fuse-compass","eos\u002Fhow-to\u002Fuse-compass",{"title":170,"path":171,"stem":172},"How to use Fallow","\u002Feos\u002Fhow-to\u002Fuse-fallow","eos\u002Fhow-to\u002Fuse-fallow",{"title":174,"path":175,"stem":176},"How to use incremental mutation tests","\u002Feos\u002Fhow-to\u002Fuse-incremental-mutation-tests","eos\u002Fhow-to\u002Fuse-incremental-mutation-tests",{"title":178,"path":179,"stem":180},"How to use Scout","\u002Feos\u002Fhow-to\u002Fuse-scout","eos\u002Fhow-to\u002Fuse-scout",{"title":97,"path":182,"stem":183,"children":184,"page":43},"\u002Feos\u002Freference","eos\u002Freference",[185,189,193,197],{"title":186,"path":187,"stem":188},"Compass CLI","\u002Feos\u002Freference\u002Fcompass-cli","eos\u002Freference\u002Fcompass-cli",{"title":190,"path":191,"stem":192},"EOS marketplace skills","\u002Feos\u002Freference\u002Fmarketplace-skills","eos\u002Freference\u002Fmarketplace-skills",{"title":194,"path":195,"stem":196},"Nx task execution and cache","\u002Feos\u002Freference\u002Fnx-task-execution","eos\u002Freference\u002Fnx-task-execution",{"title":198,"path":199,"stem":200},"Scout CLI","\u002Feos\u002Freference\u002Fscout-cli","eos\u002Freference\u002Fscout-cli",{"title":202,"path":203,"stem":204,"children":205},"Product engineering","\u002Fproduct-engineering","product-engineering\u002FREADME",[206],{"title":14,"collapsed":15,"path":207,"stem":208,"children":209,"page":43},"\u002Fproduct-engineering\u002Fadrs","product-engineering\u002Fadrs",[210],{"title":211,"path":212,"stem":213},"Codify Engineering Standards as Skills","\u002Fproduct-engineering\u002Fadrs\u002F0002-codify-engineering-standards-as-skills","product-engineering\u002Fadrs\u002F0002-codify-engineering-standards-as-skills",[215,268],{"nav":216,"source":265},[217],{"title":218,"path":219,"stem":220,"children":221},"Ember","\u002Fember","ember",[222,225,257,261],{"title":223,"path":219,"stem":224},"StoreFront Documentation","ember\u002Findex",{"title":14,"path":226,"stem":227,"children":228,"page":43},"\u002Fember\u002Fadrs","ember\u002Fadrs",[229,233,237,241,245,249,253],{"title":230,"path":231,"stem":232},"Add Infection as a non-blocking mutation testing tool for Ember","\u002Fember\u002Fadrs\u002F0001-infection-mutation-testing","ember\u002Fadrs\u002F0001-infection-mutation-testing",{"title":234,"path":235,"stem":236},"Process DELETE scheduled changes before CREATE_UPDATE at the same instant","\u002Fember\u002Fadrs\u002F0002-scheduled-change-processing-order","ember\u002Fadrs\u002F0002-scheduled-change-processing-order",{"title":238,"path":239,"stem":240},"Standard rate scheduling is permanent until overridden","\u002Fember\u002Fadrs\u002F0003-standard-rate-scheduling-is-permanent","ember\u002Fadrs\u002F0003-standard-rate-scheduling-is-permanent",{"title":242,"path":243,"stem":244},"Promotions require an existing standard rate","\u002Fember\u002Fadrs\u002F0004-promotions-require-existing-standard-rate","ember\u002Fadrs\u002F0004-promotions-require-existing-standard-rate",{"title":246,"path":247,"stem":248},"UTC datetime contract between Storefront and Hub","\u002Fember\u002Fadrs\u002F0005-utc-datetime-contract-between-storefront-and-hub","ember\u002Fadrs\u002F0005-utc-datetime-contract-between-storefront-and-hub",{"title":250,"path":251,"stem":252},"Elapsed unprocessed scheduled changes do not block rate changes","\u002Fember\u002Fadrs\u002F0006-stale-scheduler-rows-do-not-block-rate-changes","ember\u002Fadrs\u002F0006-stale-scheduler-rows-do-not-block-rate-changes",{"title":254,"path":255,"stem":256},"ADR-0007: Delete ConfigureTenantAuth routing command once OIDC setup migrates to Hub","\u002Fember\u002Fadrs\u002F0007-delete-configure-tenant-auth-routing-command","ember\u002Fadrs\u002F0007-delete-configure-tenant-auth-routing-command",{"title":258,"path":259,"stem":260},"Domain Overview","\u002Fember\u002Fdomain_overview","ember\u002Fdomain_overview",{"title":262,"path":263,"stem":264},"Main Flows","\u002Fember\u002Fkey_flows","ember\u002Fkey_flows",{"collectionName":266,"label":267,"prefix":220},"external_ember","StoreFront (Ember)",{"nav":269,"source":441},[270],{"title":271,"path":272,"stem":273,"children":274},"Core","\u002Fcore","core",[275,278,306,310,332,336,346,363,420,424],{"title":276,"path":272,"stem":277},"Documentation Index","core\u002Findex",{"title":14,"path":279,"stem":280,"children":281,"page":43},"\u002Fcore\u002Fadrs","core\u002Fadrs",[282,286,290,294,298,302],{"title":283,"path":284,"stem":285},"ADR-XXXX: Short, descriptive title","\u002Fcore\u002Fadrs\u002F0000-template","core\u002Fadrs\u002F0000-template",{"title":287,"path":288,"stem":289},"ADR-1: Promotions endpoint","\u002Fcore\u002Fadrs\u002F0001-add-promotions-endpoint","core\u002Fadrs\u002F0001-add-promotions-endpoint",{"title":291,"path":292,"stem":293},"ADR-2: EOM partner report job dispatch","\u002Fcore\u002Fadrs\u002F0002-eom-report-job-dispatch","core\u002Fadrs\u002F0002-eom-report-job-dispatch",{"title":295,"path":296,"stem":297},"ADR-3: Replace PB fee waive flag with a Zero scheme override","\u002Fcore\u002Fadrs\u002F0003-replace-pb-fee-waive-with-zero-scheme","core\u002Fadrs\u002F0003-replace-pb-fee-waive-with-zero-scheme",{"title":299,"path":300,"stem":301},"ADR-4: No processor Digital Top-up capability gate in Reloadable Commercials","\u002Fcore\u002Fadrs\u002F0004-no-processor-top-up-capability-gate","core\u002Fadrs\u002F0004-no-processor-top-up-capability-gate",{"title":303,"path":304,"stem":305},"ADR-5: Sparse polymorphic sale fee override reason stamp","\u002Fcore\u002Fadrs\u002F0005-sale-fee-override-reason-stamp","core\u002Fadrs\u002F0005-sale-fee-override-reason-stamp",{"title":307,"path":308,"stem":309},"Agent Workflow","\u002Fcore\u002Fai-workflow","core\u002Fai-workflow",{"title":311,"path":312,"stem":313,"children":314},"Backend Guide","\u002Fcore\u002Fbackend","core\u002Fbackend\u002Findex",[315,316,320,324,328],{"title":311,"path":312,"stem":313},{"title":317,"path":318,"stem":319},"Backend AI Tooling","\u002Fcore\u002Fbackend\u002Fai-tooling","core\u002Fbackend\u002Fai-tooling",{"title":321,"path":322,"stem":323},"Backend Linting and Formatting","\u002Fcore\u002Fbackend\u002Flinting-and-formatting","core\u002Fbackend\u002Flinting-and-formatting",{"title":325,"path":326,"stem":327},"Backend Setup","\u002Fcore\u002Fbackend\u002Fsetup","core\u002Fbackend\u002Fsetup",{"title":329,"path":330,"stem":331},"Backend Testing","\u002Fcore\u002Fbackend\u002Ftesting","core\u002Fbackend\u002Ftesting",{"title":333,"path":334,"stem":335},"Documentation Health","\u002Fcore\u002Fdoc-health","core\u002Fdoc-health",{"title":337,"path":338,"stem":339,"children":340},"Frontend Guide","\u002Fcore\u002Ffrontend","core\u002Ffrontend\u002Findex",[341,342],{"title":337,"path":338,"stem":339},{"title":343,"path":344,"stem":345},"Frontend Development","\u002Fcore\u002Ffrontend\u002Fdevelopment","core\u002Ffrontend\u002Fdevelopment",{"title":347,"path":348,"stem":349,"children":350,"page":43},"Modules","\u002Fcore\u002Fmodules","core\u002Fmodules",[351,355],{"title":352,"path":353,"stem":354},"Connect API","\u002Fcore\u002Fmodules\u002Fconnect-api","core\u002Fmodules\u002Fconnect-api",{"title":356,"path":357,"stem":358,"children":359,"page":43},"Secure Links","\u002Fcore\u002Fmodules\u002Fsecure-links","core\u002Fmodules\u002Fsecure-links",[360],{"title":356,"path":361,"stem":362},"\u002Fcore\u002Fmodules\u002Fsecure-links\u002Fsecure-links","core\u002Fmodules\u002Fsecure-links\u002Fsecure-links",{"title":364,"path":365,"stem":366,"children":367,"page":43},"Processors","\u002Fcore\u002Fprocessors","core\u002Fprocessors",[368,372,376,380,384,388,392,396,400,404,408,412,416],{"title":369,"path":370,"stem":371},"Amazon Processor and API","\u002Fcore\u002Fprocessors\u002Famazon","core\u002Fprocessors\u002Famazon",{"title":373,"path":374,"stem":375},"Amilon Processor and API","\u002Fcore\u002Fprocessors\u002Familon","core\u002Fprocessors\u002Familon",{"title":377,"path":378,"stem":379},"Cadooz Processor and API","\u002Fcore\u002Fprocessors\u002Fcadooz","core\u002Fprocessors\u002Fcadooz",{"title":381,"path":382,"stem":383},"Choice Digital Processor and API","\u002Fcore\u002Fprocessors\u002Fchoice-digital","core\u002Fprocessors\u002Fchoice-digital",{"title":385,"path":386,"stem":387},"Diggecard processor reference","\u002Fcore\u002Fprocessors\u002Fdiggecard","core\u002Fprocessors\u002Fdiggecard",{"title":389,"path":390,"stem":391},"ePay Processor and API","\u002Fcore\u002Fprocessors\u002Fepay","core\u002Fprocessors\u002Fepay",{"title":393,"path":394,"stem":395},"GoGift v2 Processor and API","\u002Fcore\u002Fprocessors\u002Fgo-gift-v2","core\u002Fprocessors\u002Fgo-gift-v2",{"title":397,"path":398,"stem":399},"InComm Processor and API","\u002Fcore\u002Fprocessors\u002Fincomm","core\u002Fprocessors\u002Fincomm",{"title":401,"path":402,"stem":403},"Ogloba Processor and API","\u002Fcore\u002Fprocessors\u002Fogloba","core\u002Fprocessors\u002Fogloba",{"title":405,"path":406,"stem":407},"SVSECard Processor and API","\u002Fcore\u002Fprocessors\u002Fsvs-ecard","core\u002Fprocessors\u002Fsvs-ecard",{"title":409,"path":410,"stem":411},"Vananam Processor and API","\u002Fcore\u002Fprocessors\u002Fvananam","core\u002Fprocessors\u002Fvananam",{"title":413,"path":414,"stem":415},"Vouchers Depot processor reference","\u002Fcore\u002Fprocessors\u002Fvouchers-depot","core\u002Fprocessors\u002Fvouchers-depot",{"title":417,"path":418,"stem":419},"You Got a Gift Processor and API","\u002Fcore\u002Fprocessors\u002Fyou-got-a-gift","core\u002Fprocessors\u002Fyou-got-a-gift",{"title":421,"path":422,"stem":423},"Development Quickstart","\u002Fcore\u002Fsetup","core\u002Fsetup",{"title":425,"path":426,"stem":427,"children":428,"page":43},"Workflows","\u002Fcore\u002Fworkflows","core\u002Fworkflows",[429,433,437],{"title":430,"path":431,"stem":432},"Hub Endpoint Workflow","\u002Fcore\u002Fworkflows\u002Fhub-endpoints","core\u002Fworkflows\u002Fhub-endpoints",{"title":434,"path":435,"stem":436},"OpenAPI Tooling","\u002Fcore\u002Fworkflows\u002Fopenapi-tooling","core\u002Fworkflows\u002Fopenapi-tooling",{"title":438,"path":439,"stem":440},"Processor Integration Workflow","\u002Fcore\u002Fworkflows\u002Fprocessors","core\u002Fworkflows\u002Fprocessors",{"collectionName":442,"label":271,"prefix":273},"external_core",{"page":444,"surround":1734},{"id":445,"title":409,"body":446,"config":1729,"description":452,"extension":1730,"meta":1731,"navigation":15,"path":410,"seo":1732,"stem":411,"__hash__":1733},"external_core\u002Fcore\u002Fprocessors\u002Fvananam.md",{"type":447,"value":448,"toc":1710},"minimark",[449,453,458,466,564,568,631,635,638,643,720,723,821,825,843,846,980,984,999,1083,1092,1096,1205,1208,1231,1235,1242,1309,1318,1322,1326,1333,1452,1462,1466,1479,1494,1498,1556,1561,1565,1568,1630,1634,1637,1640,1644,1706],[450,451,452],"p",{},"This page describes the Vananam integration for operations and customer-service teams. It explains asynchronous URL fulfilment, the provider calls, the states that control retry, and the records to compare when an order is delayed or fails.",[454,455,457],"h2",{"id":456},"what-vananam-does","What Vananam does",[450,459,460,461,465],{},"Vananam is an asynchronous, SKU-per-product processor. The application submits an order, stores the Vananam order ",[462,463,464],"code",{},"id",", and retrieves the order until a voucher claim URL is available. The integration is configured for third-party URL delivery; the processor test documentation explicitly notes that code delivery is not supported.",[467,468,469,482],"table",{},[470,471,472],"thead",{},[473,474,475,479],"tr",{},[476,477,478],"th",{},"Property",[476,480,481],{},"Behaviour",[483,484,485,494,502,510,518,526,541],"tbody",{},[473,486,487,491],{},[488,489,490],"td",{},"Processor type",[488,492,493],{},"SKU per product",[473,495,496,499],{},[488,497,498],{},"Processing",[488,500,501],{},"Asynchronous order creation followed by order retrieval",[473,503,504,507],{},[488,505,506],{},"Delivery",[488,508,509],{},"Third-party gift-card URL; application URL handling can then expose it to the buyer",[473,511,512,515],{},[488,513,514],{},"Balance lookup",[488,516,517],{},"No Vananam-specific balance operation is implemented",[473,519,520,523],{},[488,521,522],{},"Cancellation",[488,524,525],{},"No Vananam-specific cancellation operation is implemented",[473,527,528,531],{},[488,529,530],{},"Immediate order result",[488,532,533,536,537,540],{},[462,534,535],{},"PENDING"," leaves the sale requested; ",[462,538,539],{},"DELIVERED"," can complete the sale",[473,542,543,546],{},[488,544,545],{},"Completion rule",[488,547,548,549,551,552,555,556,559,560,563],{},"Valid JSON with an ",[462,550,464],{},", a ",[462,553,554],{},"status",", and, for delivery, a first voucher with ",[462,557,558],{},"claim_url"," and an ",[462,561,562],{},"expire_date"," key",[454,565,567],{"id":566},"order-lifecycle","Order lifecycle",[569,570,571,575,582,597,606,619,628],"ol",{},[572,573,574],"li",{},"A partner requests a digital URL gift card for a Vananam brand and denomination.",[572,576,577,578,581],{},"The processor reads the brand's ",[462,579,580],{},"vananam-sku"," attribute.",[572,583,584,585,588,589,592,593,596],{},"The application sends ",[462,586,587],{},"POST orders"," with the product ID, denomination, sale UUID as ",[462,590,591],{},"reference_code",", and ",[462,594,595],{},"quantity: 1",".",[572,598,599,600,602,603,605],{},"The response ",[462,601,464],{}," becomes the processor reference. A ",[462,604,535],{}," response leaves the card in the requested state and requires a later retrieval.",[572,607,608,609,612,613,615,616,618],{},"Retrieval sends ",[462,610,611],{},"GET orders\u002F{id}",". A ",[462,614,535],{}," response is retryable; a ",[462,617,539],{}," response is checked for voucher data.",[572,620,621,622,624,625,627],{},"The first voucher's ",[462,623,558],{}," becomes the card's third-party URL. A non-empty ",[462,626,562],{}," is converted to the card expiration date.",[572,629,630],{},"The application completes the card only after the delivered response passes validation. The existing application URL is retained or generated according to the asynchronous sale flow.",[454,632,634],{"id":633},"example-api-order-flow","Example API order flow",[450,636,637],{},"The client uses the configured base URI, HTTP basic authentication, and JSON headers. The values below are illustrative and contain no credentials or live claim URL.",[639,640,642],"h3",{"id":641},"create-an-order","Create an order",[644,645,650],"pre",{"className":646,"code":647,"language":648,"meta":649,"style":649},"language-http shiki shiki-themes github-dark github-light","POST ${VANANAM_BASE_URI}\u002Forders\nAuthorization: Basic [REDACTED]\nContent-Type: application\u002Fjson\nAccept: application\u002Fjson\n\n{\n  \"product_id\": \"product-sku-example\",\n  \"denomination\": 100.00,\n  \"reference_code\": \"sale-uuid-example\",\n  \"quantity\": 1\n}\n","http","",[462,651,652,660,666,672,678,684,690,696,702,708,714],{"__ignoreMap":649},[653,654,657],"span",{"class":655,"line":656},"line",1,[653,658,659],{},"POST ${VANANAM_BASE_URI}\u002Forders\n",[653,661,663],{"class":655,"line":662},2,[653,664,665],{},"Authorization: Basic [REDACTED]\n",[653,667,669],{"class":655,"line":668},3,[653,670,671],{},"Content-Type: application\u002Fjson\n",[653,673,675],{"class":655,"line":674},4,[653,676,677],{},"Accept: application\u002Fjson\n",[653,679,681],{"class":655,"line":680},5,[653,682,683],{"emptyLinePlaceholder":15},"\n",[653,685,687],{"class":655,"line":686},6,[653,688,689],{},"{\n",[653,691,693],{"class":655,"line":692},7,[653,694,695],{},"  \"product_id\": \"product-sku-example\",\n",[653,697,699],{"class":655,"line":698},8,[653,700,701],{},"  \"denomination\": 100.00,\n",[653,703,705],{"class":655,"line":704},9,[653,706,707],{},"  \"reference_code\": \"sale-uuid-example\",\n",[653,709,711],{"class":655,"line":710},10,[653,712,713],{},"  \"quantity\": 1\n",[653,715,717],{"class":655,"line":716},11,[653,718,719],{},"}\n",[450,721,722],{},"An accepted order can return a pending response:",[644,724,728],{"className":725,"code":726,"language":727,"meta":649,"style":649},"language-json shiki shiki-themes github-dark github-light","{\n  \"id\": 12345,\n  \"reference_number\": \"sale-uuid-example\",\n  \"product_id\": \"product-sku-example\",\n  \"status\": \"PENDING\",\n  \"amount\": 100.00,\n  \"vouchers\": [],\n  \"message\": \"Order accepted; vouchers will be available later.\"\n}\n","json",[462,729,730,735,750,763,775,787,799,807,817],{"__ignoreMap":649},[653,731,732],{"class":655,"line":656},[653,733,689],{"class":734},"sQ3_J",[653,736,737,741,744,747],{"class":655,"line":662},[653,738,740],{"class":739},"s0DvM","  \"id\"",[653,742,743],{"class":734},": ",[653,745,746],{"class":739},"12345",[653,748,749],{"class":734},",\n",[653,751,752,755,757,761],{"class":655,"line":668},[653,753,754],{"class":739},"  \"reference_number\"",[653,756,743],{"class":734},[653,758,760],{"class":759},"sg6BJ","\"sale-uuid-example\"",[653,762,749],{"class":734},[653,764,765,768,770,773],{"class":655,"line":674},[653,766,767],{"class":739},"  \"product_id\"",[653,769,743],{"class":734},[653,771,772],{"class":759},"\"product-sku-example\"",[653,774,749],{"class":734},[653,776,777,780,782,785],{"class":655,"line":680},[653,778,779],{"class":739},"  \"status\"",[653,781,743],{"class":734},[653,783,784],{"class":759},"\"PENDING\"",[653,786,749],{"class":734},[653,788,789,792,794,797],{"class":655,"line":686},[653,790,791],{"class":739},"  \"amount\"",[653,793,743],{"class":734},[653,795,796],{"class":739},"100.00",[653,798,749],{"class":734},[653,800,801,804],{"class":655,"line":692},[653,802,803],{"class":739},"  \"vouchers\"",[653,805,806],{"class":734},": [],\n",[653,808,809,812,814],{"class":655,"line":698},[653,810,811],{"class":739},"  \"message\"",[653,813,743],{"class":734},[653,815,816],{"class":759},"\"Order accepted; vouchers will be available later.\"\n",[653,818,819],{"class":655,"line":704},[653,820,719],{"class":734},[639,822,824],{"id":823},"retrieve-an-order","Retrieve an order",[644,826,828],{"className":646,"code":827,"language":648,"meta":649,"style":649},"GET ${VANANAM_BASE_URI}\u002Forders\u002F12345\nAuthorization: Basic [REDACTED]\nAccept: application\u002Fjson\n",[462,829,830,835,839],{"__ignoreMap":649},[653,831,832],{"class":655,"line":656},[653,833,834],{},"GET ${VANANAM_BASE_URI}\u002Forders\u002F12345\n",[653,836,837],{"class":655,"line":662},[653,838,665],{},[653,840,841],{"class":655,"line":668},[653,842,677],{},[450,844,845],{},"A completed response has the shape used by the response mapper:",[644,847,849],{"className":725,"code":848,"language":727,"meta":649,"style":649},"{\n  \"id\": 12345,\n  \"reference_number\": \"sale-uuid-example\",\n  \"product_id\": \"product-sku-example\",\n  \"status\": \"DELIVERED\",\n  \"vouchers\": [\n    {\n      \"card_number\": null,\n      \"pin_code\": null,\n      \"claim_url\": \"https:\u002F\u002F[REDACTED]\u002Fclaim\u002F[REDACTED]\",\n      \"expire_date\": \"2027-10-01T12:00:00.000Z\"\n    }\n  ],\n  \"message\": \"Order successfully placed.\"\n}\n",[462,850,851,855,865,875,885,896,903,908,920,931,943,953,959,965,975],{"__ignoreMap":649},[653,852,853],{"class":655,"line":656},[653,854,689],{"class":734},[653,856,857,859,861,863],{"class":655,"line":662},[653,858,740],{"class":739},[653,860,743],{"class":734},[653,862,746],{"class":739},[653,864,749],{"class":734},[653,866,867,869,871,873],{"class":655,"line":668},[653,868,754],{"class":739},[653,870,743],{"class":734},[653,872,760],{"class":759},[653,874,749],{"class":734},[653,876,877,879,881,883],{"class":655,"line":674},[653,878,767],{"class":739},[653,880,743],{"class":734},[653,882,772],{"class":759},[653,884,749],{"class":734},[653,886,887,889,891,894],{"class":655,"line":680},[653,888,779],{"class":739},[653,890,743],{"class":734},[653,892,893],{"class":759},"\"DELIVERED\"",[653,895,749],{"class":734},[653,897,898,900],{"class":655,"line":686},[653,899,803],{"class":739},[653,901,902],{"class":734},": [\n",[653,904,905],{"class":655,"line":692},[653,906,907],{"class":734},"    {\n",[653,909,910,913,915,918],{"class":655,"line":698},[653,911,912],{"class":739},"      \"card_number\"",[653,914,743],{"class":734},[653,916,917],{"class":739},"null",[653,919,749],{"class":734},[653,921,922,925,927,929],{"class":655,"line":704},[653,923,924],{"class":739},"      \"pin_code\"",[653,926,743],{"class":734},[653,928,917],{"class":739},[653,930,749],{"class":734},[653,932,933,936,938,941],{"class":655,"line":710},[653,934,935],{"class":739},"      \"claim_url\"",[653,937,743],{"class":734},[653,939,940],{"class":759},"\"https:\u002F\u002F[REDACTED]\u002Fclaim\u002F[REDACTED]\"",[653,942,749],{"class":734},[653,944,945,948,950],{"class":655,"line":716},[653,946,947],{"class":739},"      \"expire_date\"",[653,949,743],{"class":734},[653,951,952],{"class":759},"\"2027-10-01T12:00:00.000Z\"\n",[653,954,956],{"class":655,"line":955},12,[653,957,958],{"class":734},"    }\n",[653,960,962],{"class":655,"line":961},13,[653,963,964],{"class":734},"  ],\n",[653,966,968,970,972],{"class":655,"line":967},14,[653,969,811],{"class":739},[653,971,743],{"class":734},[653,973,974],{"class":759},"\"Order successfully placed.\"\n",[653,976,978],{"class":655,"line":977},15,[653,979,719],{"class":734},[454,981,983],{"id":982},"response-mapping-and-validation","Response mapping and validation",[450,985,986,987,989,990,992,993,995,996,596],{},"The processor first requires a valid JSON response, a non-empty ",[462,988,464],{},", and a non-empty ",[462,991,554],{},". It stores the ",[462,994,464],{}," as ",[462,997,998],{},"processor_reference",[467,1000,1001,1011],{},[470,1002,1003],{},[473,1004,1005,1008],{},[476,1006,1007],{},"Provider data",[476,1009,1010],{},"Application result",[483,1012,1013,1023,1033,1046,1060,1075],{},[473,1014,1015,1020],{},[488,1016,1017],{},[462,1018,1019],{},"status: PENDING",[488,1021,1022],{},"Card remains requested; create-order handling waits for retrieval",[473,1024,1025,1030],{},[488,1026,1027],{},[462,1028,1029],{},"status: DELIVERED",[488,1031,1032],{},"First voucher is validated and can complete the card",[473,1034,1035,1040],{},[488,1036,1037],{},[462,1038,1039],{},"vouchers[0].claim_url",[488,1041,1042,1043],{},"Required for a delivered card and mapped to ",[462,1044,1045],{},"third_party_url",[473,1047,1048,1054],{},[488,1049,1050,1051],{},"Presence of ",[462,1052,1053],{},"vouchers[0].expire_date",[488,1055,1056,1057,1059],{},"Required for a delivered card; ",[462,1058,917],{}," or empty means no expiration is set",[473,1061,1062,1072],{},[488,1063,1064,1067,1068,1071],{},[462,1065,1066],{},"card_number",", ",[462,1069,1070],{},"pin_code",", and other product fields",[488,1073,1074],{},"Not used by the response mapper",[473,1076,1077,1080],{},[488,1078,1079],{},"Any other status",[488,1081,1082],{},"Fails with an unusable-status error; it is not treated as successful delivery",[450,1084,1085,1086,1088,1089,1091],{},"The ",[462,1087,562],{}," property must exist even when its value is ",[462,1090,917],{},". A missing property is a validation failure, not an indication of a card without an expiry date.",[454,1093,1095],{"id":1094},"provider-states-and-retry-behaviour","Provider states and retry behaviour",[467,1097,1098,1111],{},[470,1099,1100],{},[473,1101,1102,1105,1108],{},[476,1103,1104],{},"Condition",[476,1106,1107],{},"Processor result",[476,1109,1110],{},"Operational consequence",[483,1112,1113,1126,1142,1158,1173,1184],{},[473,1114,1115,1120,1123],{},[488,1116,1117,1118],{},"Create response is ",[462,1119,535],{},[488,1121,1122],{},"Requested card, no retry exception",[488,1124,1125],{},"Keep the original provider reference and allow retrieval to run",[473,1127,1128,1133,1139],{},[488,1129,1130,1131],{},"Retrieve response is ",[462,1132,535],{},[488,1134,1135,1136],{},"Repeat-request error ",[462,1137,1138],{},"606060",[488,1140,1141],{},"Retrieval is retried automatically",[473,1143,1144,1151,1155],{},[488,1145,1146,1147,1150],{},"Provider returns a server-side ",[462,1148,1149],{},"5xx"," error",[488,1152,1135,1153],{},[462,1154,1138],{},[488,1156,1157],{},"Retry the same workflow; do not create a replacement manually",[473,1159,1160,1166,1170],{},[488,1161,1162,1163],{},"Provider error message is exactly ",[462,1164,1165],{},"Too many requests",[488,1167,1135,1168],{},[462,1169,1138],{},[488,1171,1172],{},"Wait for throttling to clear and retry",[473,1174,1175,1178,1181],{},[488,1176,1177],{},"Other client or transport error",[488,1179,1180],{},"Processor error without the repeat code",[488,1182,1183],{},"Investigate the audit before deciding on a further action",[473,1185,1186,1199,1202],{},[488,1187,1188,1189,6,1191,1193,1194,1196,1197,563],{},"Invalid JSON, missing ",[462,1190,464],{},[462,1192,554],{},", missing ",[462,1195,558],{},", or missing ",[462,1198,562],{},[488,1200,1201],{},"Processor validation error",[488,1203,1204],{},"Do not treat the order as fulfilled",[450,1206,1207],{},"The create call is a POST. If a server error occurs after Vananam has accepted the order but before the response is observed, an automatic retry can risk a duplicate order. Check the original sale UUID and interaction audit before any manual re-order.",[450,1209,1210,1211,1214,1215,1217,1218,1067,1221,592,1224,1227,1228,1230],{},"The configured client throttling defaults to enabled, with ",[462,1212,1213],{},"60"," requests per ",[462,1216,1213],{}," seconds. The values come from ",[462,1219,1220],{},"VANANAM_THROTTLING_ENABLED",[462,1222,1223],{},"VANANAM_THROTTLING_RATE_LIMIT",[462,1225,1226],{},"VANANAM_THROTTLING_RATE_PERIOD","; the application also classifies the provider's exact ",[462,1229,1165],{}," message as retryable.",[454,1232,1234],{"id":1233},"audit-comparison-fields","Audit comparison fields",[450,1236,1237,1238,1241],{},"Vananam uses the shared ",[462,1239,1240],{},"AuditProcessor"," record for the sale and enables request\u002Fresponse interaction auditing on the Vananam client. Compare the following evidence in order:",[569,1243,1244,1247,1261,1271,1280,1289,1306],{},[572,1245,1246],{},"The sale UUID, client request ID, brand, denomination, and request version.",[572,1248,1249,1250,1067,1253,1067,1256,592,1258,596],{},"The create request payload: ",[462,1251,1252],{},"product_id",[462,1254,1255],{},"denomination",[462,1257,591],{},[462,1259,1260],{},"quantity",[572,1262,1263,1264,1067,1266,592,1269,596],{},"The create response ",[462,1265,464],{},[462,1267,1268],{},"reference_number",[462,1270,554],{},[572,1272,1273,1274,1277,1278,596],{},"Any retrieval request path, especially ",[462,1275,1276],{},"orders\u002F{id}",", and its returned ",[462,1279,554],{},[572,1281,1282,1283,1285,1286,1288],{},"For delivery, the presence of ",[462,1284,1039],{}," and ",[462,1287,562],{}," without copying the claim URL into an escalation.",[572,1290,1085,1291,1293,1294,1297,1298,1301,1302,1305],{},[462,1292,1240],{}," status: ",[462,1295,1296],{},"REQUESTED"," for an accepted or pending order, ",[462,1299,1300],{},"SUCCESS"," only after a delivered voucher is mapped, or ",[462,1303,1304],{},"ERROR"," for validation\u002Fprovider failures.",[572,1307,1308],{},"The processor interaction audit entries for the ordered request\u002Fresponse sequence. These entries are keyed by the sale UUID and are redacted by the application audit model when a redactor is supplied.",[450,1310,1311,1312,1314,1315,1317],{},"The provider ",[462,1313,464],{}," is the primary Vananam reference. The sale UUID is also sent as ",[462,1316,591],{},", so the two values should be compared rather than treated as interchangeable.",[454,1319,1321],{"id":1320},"settings","Settings",[639,1323,1325],{"id":1324},"processor-settings","Processor settings",[450,1327,1328,1329,1332],{},"The settings are read from ",[462,1330,1331],{},"config\u002Fvananam.php",":",[467,1334,1335,1348],{},[470,1336,1337],{},[473,1338,1339,1342,1345],{},[476,1340,1341],{},"Setting",[476,1343,1344],{},"Environment variable",[476,1346,1347],{},"Purpose",[483,1349,1350,1370,1383,1396,1409,1424,1438],{},[473,1351,1352,1355,1360],{},[488,1353,1354],{},"Base URI",[488,1356,1357],{},[462,1358,1359],{},"VANANAM_BASE_URI",[488,1361,1362,1363,1285,1366,1369],{},"Base URL for ",[462,1364,1365],{},"orders",[462,1367,1368],{},"products"," calls",[473,1371,1372,1375,1380],{},[488,1373,1374],{},"API username",[488,1376,1377],{},[462,1378,1379],{},"VANANAM_API_USER_NAME",[488,1381,1382],{},"First HTTP basic-auth value",[473,1384,1385,1388,1393],{},[488,1386,1387],{},"API secret",[488,1389,1390],{},[462,1391,1392],{},"VANANAM_API_SECRET",[488,1394,1395],{},"Second HTTP basic-auth value",[473,1397,1398,1401,1406],{},[488,1399,1400],{},"Request timeout",[488,1402,1403],{},[462,1404,1405],{},"VANANAM_REQUEST_TIMEOUT",[488,1407,1408],{},"Guzzle request timeout",[473,1410,1411,1414,1418],{},[488,1412,1413],{},"Throttling enabled",[488,1415,1416],{},[462,1417,1220],{},[488,1419,1420,1421],{},"Enables processor request throttling; default ",[462,1422,1423],{},"true",[473,1425,1426,1429,1433],{},[488,1427,1428],{},"Throttling limit",[488,1430,1431],{},[462,1432,1223],{},[488,1434,1435,1436],{},"Request count in the configured period; default ",[462,1437,1213],{},[473,1439,1440,1443,1447],{},[488,1441,1442],{},"Throttling period",[488,1444,1445],{},[462,1446,1226],{},[488,1448,1449,1450],{},"Period in seconds; default ",[462,1451,1213],{},[450,1453,1454,1455,1285,1458,1461],{},"The client sends ",[462,1456,1457],{},"Content-Type: application\u002Fjson",[462,1459,1460],{},"Accept: application\u002Fjson"," on each provider request.",[639,1463,1465],{"id":1464},"brand-settings","Brand settings",[450,1467,1468,1469,1471,1472,1474,1475,1478],{},"Each enabled brand needs the ",[462,1470,580],{}," brand attribute. The value is sent as ",[462,1473,1252],{},"; it is not derived from the face value. The provider catalogue collector stores product IDs as catalogue ",[462,1476,1477],{},"product_sku"," values and exposes URL delivery only.",[450,1480,1481,1482,1485,1486,1489,1490,1493],{},"The collector maps only products whose ",[462,1483,1484],{},"delivery_type"," is ",[462,1487,1488],{},"REALTIME",". It maps provider country, category, currency, denominations, discount, redemption type, description, terms, validity, and image data into the cached Vananam catalogue. Fixed denominations use the provider ",[462,1491,1492],{},"min"," values; a single range becomes an open-value product.",[454,1495,1497],{"id":1496},"api-operations","API operations",[467,1499,1500,1513],{},[470,1501,1502],{},[473,1503,1504,1507,1510],{},[476,1505,1506],{},"Operation",[476,1508,1509],{},"Method and path",[476,1511,1512],{},"Use",[483,1514,1515,1527,1540],{},[473,1516,1517,1520,1524],{},[488,1518,1519],{},"Create order",[488,1521,1522],{},[462,1523,587],{},[488,1525,1526],{},"Submit one product and denomination for a sale",[473,1528,1529,1532,1537],{},[488,1530,1531],{},"Retrieve order",[488,1533,1534],{},[462,1535,1536],{},"GET orders\u002F{order_id}",[488,1538,1539],{},"Check a pending order and obtain the delivered voucher URL",[473,1541,1542,1545,1550],{},[488,1543,1544],{},"Products",[488,1546,1547],{},[462,1548,1549],{},"GET products?limit=10000",[488,1551,1552,1553],{},"Retrieve the provider catalogue for ",[462,1554,1555],{},"VananamCollector",[450,1557,1558,1560],{},[462,1559,1555],{}," is a queued job with one attempt. It keeps the previous cached catalogue when the provider response is invalid, empty, or produces no valid products. No Vananam-specific console command is defined in the inspected application tree.",[454,1562,1564],{"id":1563},"customer-service-investigation","Customer-service investigation",[450,1566,1567],{},"For a pending or failed order:",[569,1569,1570,1573,1582,1588,1599,1614,1624],{},[572,1571,1572],{},"Confirm the sale UUID, client request ID, brand, currency, denomination, and delivery method.",[572,1574,1575,1576,1578,1579,1581],{},"Confirm the brand's ",[462,1577,580],{}," value and compare it with ",[462,1580,1252],{}," in the create request.",[572,1583,1584,1585,1587],{},"Find the provider ",[462,1586,464],{}," from the create response or the stored card processor reference. Use that ID for retrieval; do not submit a new order first.",[572,1589,1590,1591,1593,1594,6,1596,1598],{},"Compare the create and retrieve interaction audits. Check the HTTP outcome, response JSON validity, ",[462,1592,554],{},", and the ",[462,1595,1268],{},[462,1597,591],{}," values.",[572,1600,1601,1602,1604,1605,1607,1608,1610,1611,1613],{},"For ",[462,1603,535],{},", allow the retry path to retrieve the original order. For ",[462,1606,1165],{}," or ",[462,1609,1149],{},", note the repeat code ",[462,1612,1138],{}," and avoid parallel manual retries.",[572,1615,1601,1616,1618,1619,1285,1621,1623],{},[462,1617,539],{},", verify that the response contains the first voucher's ",[462,1620,558],{},[462,1622,562],{}," key. Do not paste a claim URL or any voucher data into a ticket.",[572,1625,1626,1627,1629],{},"If the order is marked ",[462,1628,1304],{},", compare the exact validation or provider message with the request\u002Fresponse audit before escalation.",[454,1631,1633],{"id":1632},"limitations-and-support-contacts","Limitations and support contacts",[450,1635,1636],{},"The Vananam processor does not implement a provider balance lookup or cancellation call. It also does not map card numbers or PIN codes into the returned card; the tested integration is for third-party URL delivery.",[450,1638,1639],{},"Escalations should include the internal sale UUID, client request ID, provider order ID, timestamps, status, and redacted audit evidence. Do not include credentials, claim URLs, card numbers, or PINs.",[454,1641,1643],{"id":1642},"related-code","Related code",[1645,1646,1647,1653,1659,1665,1671,1677,1683,1688,1694,1700],"ul",{},[572,1648,1649,1652],{},[462,1650,1651],{},"app\u002FProcessors\u002FVananam\u002FVananamProcessor.php"," — asynchronous request creation, retrieval, response validation, mapping, and retry classification.",[572,1654,1655,1658],{},[462,1656,1657],{},"app\u002FHttp\u002FClients\u002FVananam\u002FVananamApi.php"," — authenticated HTTP client and provider paths.",[572,1660,1661,1664],{},[462,1662,1663],{},"app\u002FHttp\u002FClients\u002FVananam\u002FRequests\u002FOrderRequestData.php"," — create-order payload.",[572,1666,1667,1670],{},[462,1668,1669],{},"app\u002FHttp\u002FClients\u002FVananam\u002FRequests\u002FRetrieveOrderRequestData.php"," — retrieval order ID.",[572,1672,1673,1676],{},[462,1674,1675],{},"app\u002FHttp\u002FClients\u002FVananam\u002FResponses\u002FRawVananamResponseData.php"," — raw response wrapper.",[572,1678,1679,1682],{},[462,1680,1681],{},"app\u002FCatalogueService\u002FJobs\u002FVananamCollector.php"," — catalogue retrieval and mapping.",[572,1684,1685,1687],{},[462,1686,1331],{}," — URI, authentication, timeout, and throttling settings.",[572,1689,1690,1693],{},[462,1691,1692],{},"database\u002Fmigrations\u002F2024_05_03_133334_r_c_c-14248-create-vananam-data-issuer-record.php"," — issuer type and onboarding contacts.",[572,1695,1696,1699],{},[462,1697,1698],{},"tests\u002FUnit\u002FProcessors\u002FVananamProcessorTest.php"," — pending, delivered, validation, retry, throttling, and URL-delivery scenarios.",[572,1701,1702,1705],{},[462,1703,1704],{},"tests\u002FUnit\u002FApp\u002FHttp\u002FClients\u002FVananam\u002FVananamApiTest.php"," — client paths, headers, payload, and transport failures.",[1707,1708,1709],"style",{},"html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sQ3_J, html code.shiki .sQ3_J{--shiki-dark:#E1E4E8;--shiki-default:#24292E}html pre.shiki code .s0DvM, html code.shiki .s0DvM{--shiki-dark:#79B8FF;--shiki-default:#005CC5}html pre.shiki code .sg6BJ, html code.shiki .sg6BJ{--shiki-dark:#9ECBFF;--shiki-default:#032F62}",{"title":649,"searchDepth":668,"depth":668,"links":1711},[1712,1713,1714,1718,1719,1720,1721,1725,1726,1727,1728],{"id":456,"depth":662,"text":457},{"id":566,"depth":662,"text":567},{"id":633,"depth":662,"text":634,"children":1715},[1716,1717],{"id":641,"depth":668,"text":642},{"id":823,"depth":668,"text":824},{"id":982,"depth":662,"text":983},{"id":1094,"depth":662,"text":1095},{"id":1233,"depth":662,"text":1234},{"id":1320,"depth":662,"text":1321,"children":1722},[1723,1724],{"id":1324,"depth":668,"text":1325},{"id":1464,"depth":668,"text":1465},{"id":1496,"depth":662,"text":1497},{"id":1563,"depth":662,"text":1564},{"id":1632,"depth":662,"text":1633},{"id":1642,"depth":662,"text":1643},{},"md",{},{"title":409,"description":452},"eBn3cjbtc-hRJiNYkzvp5RV-vSz1LEHftzzfjaYnhF4",[1735,1736],{"title":405,"path":406,"stem":407,"children":-1},{"title":413,"path":414,"stem":415,"children":-1},1789777549171]