CLAUDE.md
This file guides Claude Code (claude.ai/code) when working in this repository.Project Overview
orqex/orchestrate-docs is the public documentation for Orqex Orchestrate, built with
Mintlify and published at docs.orqex.com. It is English only.
The documentation has one job: give an integrator everything needed to integrate, and
nothing that helps a competitor understand or rebuild the product.
Disclosure policy (read this before writing anything)
Orchestrate is a strategic asset. These rules are not stylistic — they are the reason this documentation was rewritten from scratch.- Never list supported countries, currencies or payment methods. Coverage is discovered
at runtime (
/payment/intents/{id}/countries,.../countries/{cc}/methods) or looked up in the dashboard. No catalogues, no matrices, no counts. - Never name a payment provider, with one deliberate exception: the
gateway_optionsreference on/payments/custom-checkout, which documentsstripe,pawapayandtestbecause integrators need those keys. Nowhere else. - Never explain internals: routing rules, failover decisions, gateway selection,
scoring, orchestration strategies, DCC.
failoveron an attempt is documented as an informational field with no value list, and readers are told not to branch on it. - Never use coverage-implying examples. Use
US/DEandUSD/EUR, and the sandbox method codetest. No African country codes, no real mobile-money or wallet method codes. - Never describe dashboard screens. Point to the dashboard as the place where configuration and coverage live, and stop there.
Structure
Local commands
Conventions
- Style: minimalist and integration-focused, in the spirit of ProcessOut and Stripe. Short prose, then the concrete thing. A page should be scannable in under a minute and complete enough to integrate from. Prefer a table or a code block over three paragraphs.
- Theme: Orqex brand colours (
#144419/#cdf546) and the Axazara fonts. Logo and icon inimages/are used as-is. Do not change branding. - Code samples: cURL and PHP (the official SDK). Placeholders
sk_live_.../sk_sandbox_.... - Navigation: create the
.mdx, then list its path without the extension indocs.json. Internal links are absolute, e.g./payments/refunds. - Redirects: the old bilingual URLs (
/en/...,/fr/...) are mapped indocs.json.redirects. Wildcard rules must stay last so specific rules win.
API reference
- Generated from
api-reference/openapi.json. Edit the spec, not per-endpoint pages. - The spec covers only the public API under
/v1, and must matchorqex/orchestrate-apiroutes/api/public/v1.phponmainexactly — currently 25 operations. Never invent a field, path, enum value or response shape. - Mintlify only supports internal
$refwithin a single document. - Sanitisation carried by the spec:
method_codeandmethodare plain strings with no enum;failover.decisionis an unenumerated object;gateway_optionsis a free-form object; examples use neutral data.
Accuracy rules
- Mirror the backend. Verify against
orqex/orchestrate-apionmainbefore writing — Form Requests for parameters, API Resources for response shapes,app/Listeners/Pulses/for webhook events and payloads,app/Enums/for values. - Do not fabricate. Two traps that have already bitten:
- Deliveries to a
webhook_urlare unsigned (doNotSign). Project endpoints are signed. Keep that distinction. payment.attempt.action_requiredandpayout.pendingexist as identifiers but are not dispatched. Do not document them. Every other event goes to both channels.- Trigger names are not event names:
payment.completedis subscribed to aspayment_captured, and both refund events sharepayment_refunded.
- Deliveries to a
- Amounts are in major units on every resource, payouts included.
fee_amounton a payout is the exception: a plain integer in minor units. - The sandbox test gateway outcome is driven by the last two digits of the payer’s phone number, not the amount. For payouts it is the last two digits of the destination (phone number, account number or wallet address).
Validation before a PR
docs.jsonis valid JSON and every referenced page resolves to a file../node_modules/.bin/mintlify broken-linkspasses.- Leak scan returns nothing outside the
gateway_optionstable:
mainis protected (PR required); never push to it directly.