Skip to content

docs(api): SEO metadata + all-corridor updates for AI-agent page and integration skill#1266

Open
ebma wants to merge 2 commits into
stagingfrom
docs/api-seo-and-all-corridor-updates
Open

docs(api): SEO metadata + all-corridor updates for AI-agent page and integration skill#1266
ebma wants to merge 2 commits into
stagingfrom
docs/api-seo-and-all-corridor-updates

Conversation

@ebma

@ebma ebma commented Jul 10, 2026

Copy link
Copy Markdown
Member

Summary

Brings the partner docs and the vortex-integration skill in line with what the SDK actually supports today (all six fiat corridors), and adds SEO metadata for the Apidog docs site.

SEO

  • Each page entry in docs/api/apidog/page-manifest.json now carries an seo block (metaTitle, metaDescription, keywords) targeting integrator search intent. Apidog has no API for SEO settings, so these are the repo source of truth to be applied manually in the Apidog UI (Page → SEO Settings).
  • Convention documented in docs/api/README.md (§ SEO Settings).

AI Agent Integration page (12-ai-agent-integration.md)

  • States explicitly that every integration path supports all live corridors: BRL (PIX), EUR (SEPA), USD (ACH), MXN (SPEI), COP, ARS (CBU).
  • Rewrote the BRL-only fiat-settlement section (§ D.5) to cover all corridors: PIX QR at register (BRL), ibanPaymentData at register (EUR), achPaymentData after start (USD/MXN/COP/ARS), plus per-corridor payout rails on sells.

vortex-integration skill

Verified against the SDK source before rewriting:

  • Corridor reality updated — the skill still claimed "BRL only, EUR handlers throw at runtime"; EUR (Mykobo) and the Alfredpay corridors are fully implemented in both directions.
  • New recipes: start-ramp-eur-sepa and start-ramp-bank-transfer (incl. listAlfredpayFiatAccounts, achPaymentData, user-linked sk_* key requirement, FiatToken.EURC gotcha).
  • BRL recipes updated for the taxId deprecation (derived server-side from the user-linked key) and the submitUserTransactions helper.
  • Error-recovery table extended with InsufficientBalanceError, MykoboKycRequiredError, AlfredpayOnrampKycRequiredError, and the ephemeral-freshness errors.
  • Fixed the sandbox base URL: api.sandbox.vortexfinance.co does not resolve; the live host is api-sandbox.vortexfinance.co (matches the OpenAPI servers entry; confirmed with an HTTP probe).

Notes for reviewers

  • ARS is type-wired in the SDK but has no worked example; documented as live per code — worth a sandbox run before promoting it.
  • EUR can be gated off server-side per environment; the skill now says to verify with a quote.
  • After merge, the SEO values and the updated page 12 need to be applied/re-imported in Apidog manually.

Verification

  • bun run docs:api:check passes for the changed files (the known pre-existing sandbox-page finding is untouched).
  • bun lint clean.

…orridors

- Record per-page Apidog SEO settings (metaTitle, metaDescription,
  keywords) in page-manifest.json and document the convention in the
  docs README; values are applied manually in the Apidog UI.
- De-BRL the AI Agent Integration page: state that all live corridors
  (BRL, EUR, USD, MXN, COP, ARS) are supported on every integration
  path and rewrite the fiat-settlement section per corridor.
- Bring the vortex-integration skill up to date with the SDK: EUR/SEPA
  and USD/MXN/COP/ARS recipes, taxId deprecation, submitUserTransactions
  and listAlfredpayFiatAccounts, new error classes, and fix the sandbox
  base URL (api-sandbox.vortexfinance.co).
@netlify

netlify Bot commented Jul 10, 2026

Copy link
Copy Markdown

Deploy Preview for vortex-sandbox ready!

Name Link
🔨 Latest commit f512696
🔍 Latest deploy log https://app.netlify.com/projects/vortex-sandbox/deploys/6a50bf7f925bd900083a80bc
😎 Deploy Preview https://deploy-preview-1266--vortex-sandbox.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify

netlify Bot commented Jul 10, 2026

Copy link
Copy Markdown

Deploy Preview for vortexfi ready!

Name Link
🔨 Latest commit f512696
🔍 Latest deploy log https://app.netlify.com/projects/vortexfi/deploys/6a50bf7f8072fd0008069eab
😎 Deploy Preview https://deploy-preview-1266--vortexfi.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

…iming

Verified against the API backend (staging and main):

- Ramp registration requires a user-linked sk_* key in every corridor;
  partner keys without a user binding are rejected. Fix the auth page,
  corridors page, and quick start, which still claimed partner-scoped
  keys suffice for BRL/EUR with taxId identifying the user.
- BRL taxId is an optional cross-check against the account's derived
  tax ID; drop it from the quick-start examples.
- Quote response uses flattened fee fields (networkFeeFiat,
  totalFeeFiat, feeCurrency, *Usd twins), not a nested fee object;
  rewrite the sample on the quotes page.
- depositQrCode/ibanPaymentData are released after presigned txs
  validate (update response / GET ramp), not on register; document on
  the lifecycle and AI-agent pages.
- Generalize remaining BRL-only wording on the overview and lifecycle
  pages; whitelabel provider names on the KYB page.
- Skill: EUR register gate returns 503 while quotes still succeed;
  webhook transactionType values are BUY/SELL; partner-scoped keys
  cannot register ramps.
@ebma

ebma commented Jul 10, 2026

Copy link
Copy Markdown
Member Author

Second commit: swept the remaining doc pages against the API backend code (staging and main) and fixed everything that had drifted from actual behavior:

  • Auth model (pages 02, 03, 09): ramp registration requires a user-linked sk_* key in every corridor — ramp.service.ts rejects registration when the key resolves to no user. The docs still said partner-scoped keys suffice for BRL/EUR with taxId identifying the user; the taxId is actually derived from the account and any provided value is only cross-checked (resolveAveniaAccountForRamp).
  • Quote response shape (page 06): the sample showed a nested fee object; the real QuoteResponse has flattened networkFeeFiat/totalFeeFiat/feeCurrency fields plus *Usd twins.
  • Payment-instruction timing (pages 04, 12): depositQrCode/ibanPaymentData are released only after presigned txs validate (update response / GET /v1/ramp/{id}), not on register.
  • Whitelabel (page 13): provider names removed from KYB prose.
  • Skill: EUR register gate returns 503 while EURC quotes still succeed; webhook transactionType values are BUY/SELL (not onramp/offramp).

⚠️ Needs a product decision, not changed here: pages 01/09 present EUR/SEPA as live, but be52569e4 ("disable euro flows") is on main — EUR registration currently 503s in production. If EUR enablement isn't imminent, the overview and corridors pages should say "temporarily unavailable".

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the API docs and the vortex-integration agent skill to reflect current multi-corridor support (BRL/EUR/USD/MXN/COP/ARS) and the user-linked sk_* requirement for ramp registration, and adds an SEO metadata source-of-truth for Apidog pages.

Changes:

  • Adds per-page seo metadata to docs/api/apidog/page-manifest.json and documents the manual Apidog SEO workflow in docs/api/README.md.
  • Updates corridor and lifecycle documentation to describe per-corridor fiat settlement timing (PIX/SEPA released after update; bank-transfer corridors provide instructions after start).
  • Rewrites the vortex-integration skill to reflect all live corridors, updated sandbox host, and new EUR/bank-transfer recipes.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
docs/api/README.md Documents the new SEO manifest convention and manual Apidog application process.
docs/api/pages/13-kyb-deep-link.md Updates Brazil KYB wording and clarifies BRL onboarding reference.
docs/api/pages/12-ai-agent-integration.md States all corridors are supported and updates fiat settlement/start sequencing guidance.
docs/api/pages/09-fiat-corridors.md Clarifies BRL user identity derivation and taxId deprecation/cross-check behavior.
docs/api/pages/06-quotes-and-pricing.md Updates quote response example to flattened fee fields + USD-denominated fee components.
docs/api/pages/04-ramp-lifecycle.md Documents buy-side payment-instruction release timing and corridor-dependent start ordering.
docs/api/pages/03-authentication-and-partner-keys.md Simplifies key-scope guidance: ramp registration requires user-linked sk_* in all corridors.
docs/api/pages/02-quick-start-with-the-sdk.md Removes taxId from SDK examples and clarifies PIX payout recipient behavior.
docs/api/pages/01-overview.md Updates step overview to describe fiat settlement across all corridors.
docs/api/apidog/page-manifest.json Adds seo blocks (metaTitle/metaDescription/keywords) for each Apidog page entry.
.agents/skills/vortex-integration/SKILL.md Updates corridor reality, adds EUR/bank-transfer recipes, fixes sandbox URL, and revises error guidance.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 156 to 160
"quoteId": "QUOTE_ID",
"ephemeralAccounts": [
{ "type": "EVM", "address": "0x..." },
{ "type": "Substrate", "address": "5..." },
{ "type": "Stellar", "address": "G..." }
Comment on lines 182 to 185
- `KycInvalidError` — KYC exists but is not approved.
- `AmountExceedsLimitError` — quote amount above the user's KYC tier limit.
- `MissingBrlParametersError` — `destinationAddress` or `taxId` missing.
- `MissingBrlParametersError` — `destinationAddress` missing.
- `QuoteExpiredError` — re-quote and call `registerRamp` again.
Comment on lines 242 to 244
## Common failures
- `MissingBrlOfframpParametersError` — `receiverTaxId`, `pixDestination`, or `taxId` missing.
- `MissingBrlOfframpParametersError` — `pixDestination` or `walletAddress` missing.
- `InvalidPixKeyError` — PIX key format invalid or unreachable. Validate beforehand with `GET /v1/brla/validatePixKey`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants