application · active
Topolo Pay
Payment worker handling orders, webhooks, admin APIs, and static-asset-backed application behavior.
Documentation map
- TopoloCommerce — Public overview of the multi-vertical commerce platform for venue operations, guest runtimes, and staff execution.
- Topolo Pay — Public overview of the payment worker that handles orders, refunds, and payment operations.
Authority and runtime
- System ID
topolo-pay- App IDs
- app_topolo_pay
- Owners
- commerce
- Repositories
- apps/TopoloPay
- Hosts
- https://pay.topolo.app, https://pay.topolo.app, https://pay.stg.topolo.us
- Dependencies
- topolo-auth, topolo-nexus, topolo-p2p, applications-packages
Security and data ownership
- Risk tier
- critical
- Tenant isolation
- organization_scoped
- Privacy classification
- restricted
- Storage
- d1, durable_object, external_provider, kv, r2
- Export and deletion
- planned
- Enterprise ready
- no
Source-derived capability inventory
Source revisions: apps/TopoloPay@f7f8d29b3072c92900c77c0b64022b013d1e02f8
Declared actions: 58 · API routes: 32 · UI routes: 9
{
"id": "topolo-pay",
"name": "Topolo Pay",
"slug": "topolo-pay",
"kind": "application",
"visibility": "public",
"repo_paths": [
"apps/TopoloPay"
],
"source_revisions": [
{
"source_path": "apps/TopoloPay",
"repository": "apps/TopoloPay",
"revision": "f7f8d29b3072c92900c77c0b64022b013d1e02f8",
"ref": "origin/staging"
}
],
"source_counts": {
"source_files": 102,
"test_files": 52,
"test_cases": 0,
"migration_files": 0,
"database_tables": 0,
"manifests": 1,
"deploy_targets": 2,
"actions": 58,
"mobile_contracts": 1,
"notifications": 17,
"package_manifests": 2,
"deployment_configs": 0
},
"manifests": [
{
"source_path": "apps/TopoloPay/topolo.app.json",
"service_slug": "topolo-pay",
"name": "topolo-pay",
"app_id": "app_topolo_pay",
"compatibility_date": "2026-05-01",
"primary_target": "web",
"environments": [
"development",
"production",
"staging"
],
"targets": [
{
"name": "api",
"kind": "worker",
"directory": "apps/api",
"main": "src/index.ts",
"worker_name": "topolo-pay-api",
"subdomain": null,
"healthcheck_path": "/health",
"variable_names": [
"API_VERSION",
"AUTH_API_URL",
"ENVIRONMENT",
"NEXUS_GATEWAY_URL",
"NODE_ENV",
"PAY_APP_URL",
"TOPOLO_NOTIFY_URL",
"TOPOLO_P2P_URL"
],
"secret_names": [],
"bindings": [
{
"kind": "d1",
"binding": "PAY_CORE_DB",
"target": null
},
{
"kind": "d1",
"binding": "PAY_LEDGER_DB",
"target": null
},
{
"kind": "d1",
"binding": "PAY_P2P_DB",
"target": null
},
{
"kind": "d1",
"binding": "PAY_WEBHOOK_DB",
"target": null
},
{
"kind": "d1",
"binding": "PAY_ANALYTICS_DB",
"target": null
},
{
"kind": "d1",
"binding": "PAY_USAGE_DB",
"target": null
},
{
"kind": "d1",
"binding": "PAY_AUDIT_DB",
"target": null
},
{
"kind": "secretsStore",
"binding": "PLATFORM_AT_REST_MASTER_ENCRYPTION_KEY_STORE",
"target": null
},
{
"kind": "secretsStore",
"binding": "PLATFORM_AT_REST_MASTER_ENCRYPTION_KEY_PREVIOUS_STORE",
"target": null
}
]
},
{
"name": "web",
"kind": "worker",
"directory": "apps/web",
"main": "src/worker.ts",
"worker_name": "topolo-pay",
"subdomain": "pay",
"healthcheck_path": "/health",
"variable_names": [
"INSIGHTS_SITE_KEY"
],
"secret_names": [],
"bindings": [
{
"kind": "services",
"binding": "API",
"target": null
},
{
"kind": "services",
"binding": "API",
"target": null
},
{
"kind": "services",
"binding": "API",
"target": null
}
]
}
],
"notifications": [
"billing.dunning.day14",
"billing.dunning.day3",
"billing.dunning.day7",
"billing.invoice.created",
"billing.invoice.paid",
"billing.payment.failed",
"billing.payment.succeeded",
"billing.subscription.cancel_requested",
"billing.subscription.cancelled",
"billing.subscription.reactivated",
"billing.subscription.renewal_upcoming",
"billing.subscription.renewed",
"billing.trial.ended",
"billing.trial.ending_soon",
"billing.winback.followup",
"pay.payout.failed",
"pay.settlement.completed"
],
"notification_contract": {
"source_path": "topolo.notification-contracts.json",
"role": "producer",
"schema_version": 1,
"owner_app_id": "app_topolo_pay",
"events": [
{
"type": "billing.dunning.day14",
"version": 1,
"description": "Invoice unpaid for 14 days",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "high"
},
"severity": {
"const": "warning"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "invoice"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Invoice unpaid for 14 days",
"body": "Invoice unpaid for 14 days.",
"surface": "notification",
"priority": "high",
"severity": "warning",
"category": "billing",
"object_type": "invoice",
"object_id": "invoice_123",
"thread_key": "billing:invoice:invoice_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:dunning-day14):"
}
},
{
"type": "billing.dunning.day3",
"version": 1,
"description": "Invoice unpaid for 3 days",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "high"
},
"severity": {
"const": "warning"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "invoice"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Invoice unpaid for 3 days",
"body": "Invoice unpaid for 3 days.",
"surface": "notification",
"priority": "high",
"severity": "warning",
"category": "billing",
"object_type": "invoice",
"object_id": "invoice_123",
"thread_key": "billing:invoice:invoice_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:dunning-day3):"
}
},
{
"type": "billing.dunning.day7",
"version": 1,
"description": "Invoice unpaid for 7 days",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "high"
},
"severity": {
"const": "warning"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "invoice"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Invoice unpaid for 7 days",
"body": "Invoice unpaid for 7 days.",
"surface": "notification",
"priority": "high",
"severity": "warning",
"category": "billing",
"object_type": "invoice",
"object_id": "invoice_123",
"thread_key": "billing:invoice:invoice_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:dunning-day7):"
}
},
{
"type": "billing.invoice.created",
"version": 1,
"description": "Subscription invoice created",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "normal"
},
"severity": {
"const": "info"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "invoice"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Subscription invoice created",
"body": "Subscription invoice created.",
"surface": "notification",
"priority": "normal",
"severity": "info",
"category": "billing",
"object_type": "invoice",
"object_id": "invoice_123",
"thread_key": "billing:invoice:invoice_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:invoice-created):"
}
},
{
"type": "billing.invoice.paid",
"version": 1,
"description": "Subscription invoice paid",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "normal"
},
"severity": {
"const": "success"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "invoice"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Subscription invoice paid",
"body": "Subscription invoice paid.",
"surface": "notification",
"priority": "normal",
"severity": "success",
"category": "billing",
"object_type": "invoice",
"object_id": "invoice_123",
"thread_key": "billing:invoice:invoice_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:invoice-paid):"
}
},
{
"type": "billing.payment.failed",
"version": 1,
"description": "Payment failed",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "high"
},
"severity": {
"const": "critical"
},
"category": {
"const": "payments"
},
"object_type": {
"const": "payment"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Payment failed",
"body": "Payment failed.",
"surface": "notification",
"priority": "high",
"severity": "critical",
"category": "payments",
"object_type": "payment",
"object_id": "payment_123",
"thread_key": "payments:payment:payment_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:(?:invoice-)?payment-failed|payment-failed):"
}
},
{
"type": "billing.payment.succeeded",
"version": 1,
"description": "Payment succeeded",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "normal"
},
"severity": {
"const": "success"
},
"category": {
"const": "payments"
},
"object_type": {
"const": "payment"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Payment succeeded",
"body": "Payment succeeded.",
"surface": "notification",
"priority": "normal",
"severity": "success",
"category": "payments",
"object_type": "payment",
"object_id": "payment_123",
"thread_key": "payments:payment:payment_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:payment-succeeded):"
}
},
{
"type": "billing.subscription.cancel_requested",
"version": 1,
"description": "Subscription cancellation requested",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "normal"
},
"severity": {
"const": "warning"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "subscription"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Subscription cancellation requested",
"body": "Subscription cancellation requested.",
"surface": "notification",
"priority": "normal",
"severity": "warning",
"category": "billing",
"object_type": "subscription",
"object_id": "subscription_123",
"thread_key": "billing:subscription:subscription_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:cancel-requested):"
}
},
{
"type": "billing.subscription.cancelled",
"version": 1,
"description": "Subscription cancelled",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "normal"
},
"severity": {
"const": "warning"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "subscription"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Subscription cancelled",
"body": "Subscription cancelled.",
"surface": "notification",
"priority": "normal",
"severity": "warning",
"category": "billing",
"object_type": "subscription",
"object_id": "subscription_123",
"thread_key": "billing:subscription:subscription_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:cancelled):"
}
},
{
"type": "billing.subscription.reactivated",
"version": 1,
"description": "Subscription reactivated",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "normal"
},
"severity": {
"const": "success"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "subscription"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Subscription reactivated",
"body": "Subscription reactivated.",
"surface": "notification",
"priority": "normal",
"severity": "success",
"category": "billing",
"object_type": "subscription",
"object_id": "subscription_123",
"thread_key": "billing:subscription:subscription_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:reactivated):"
}
},
{
"type": "billing.subscription.renewal_upcoming",
"version": 1,
"description": "Subscription renewal upcoming",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "normal"
},
"severity": {
"const": "info"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "subscription"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Subscription renewal upcoming",
"body": "Subscription renewal upcoming.",
"surface": "notification",
"priority": "normal",
"severity": "info",
"category": "billing",
"object_type": "subscription",
"object_id": "subscription_123",
"thread_key": "billing:subscription:subscription_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:renewal-upcoming):"
}
},
{
"type": "billing.subscription.renewed",
"version": 1,
"description": "Subscription renewed",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "normal"
},
"severity": {
"const": "success"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "subscription"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Subscription renewed",
"body": "Subscription renewed.",
"surface": "notification",
"priority": "normal",
"severity": "success",
"category": "billing",
"object_type": "subscription",
"object_id": "subscription_123",
"thread_key": "billing:subscription:subscription_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:renewed):"
}
},
{
"type": "billing.trial.ended",
"version": 1,
"description": "Subscription trial ended",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "normal"
},
"severity": {
"const": "info"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "subscription"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Subscription trial ended",
"body": "Subscription trial ended.",
"surface": "notification",
"priority": "normal",
"severity": "info",
"category": "billing",
"object_type": "subscription",
"object_id": "subscription_123",
"thread_key": "billing:subscription:subscription_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:trial-ended):"
}
},
{
"type": "billing.trial.ending_soon",
"version": 1,
"description": "Subscription trial ending soon",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "normal"
},
"severity": {
"const": "warning"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "subscription"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Subscription trial ending soon",
"body": "Subscription trial ending soon.",
"surface": "notification",
"priority": "normal",
"severity": "warning",
"category": "billing",
"object_type": "subscription",
"object_id": "subscription_123",
"thread_key": "billing:subscription:subscription_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:trial-ending):"
}
},
{
"type": "billing.winback.followup",
"version": 1,
"description": "Cancelled subscription follow-up",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "normal"
},
"severity": {
"const": "info"
},
"category": {
"const": "billing"
},
"object_type": {
"const": "subscription"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Cancelled subscription follow-up",
"body": "Cancelled subscription follow-up.",
"surface": "notification",
"priority": "normal",
"severity": "info",
"category": "billing",
"object_type": "subscription",
"object_id": "subscription_123",
"thread_key": "billing:subscription:subscription_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:winback):"
}
},
{
"type": "pay.payout.failed",
"version": 1,
"description": "Connected-account payout failed",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "high"
},
"severity": {
"const": "critical"
},
"category": {
"const": "payments"
},
"object_type": {
"const": "payout"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Connected-account payout failed",
"body": "Connected-account payout failed.",
"surface": "notification",
"priority": "high",
"severity": "critical",
"category": "payments",
"object_type": "payout",
"object_id": "payout_123",
"thread_key": "payments:payout:payout_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:payout-failed):"
}
},
{
"type": "pay.settlement.completed",
"version": 1,
"description": "Inter-organization settlement completed",
"status": "published",
"payloadSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"body",
"surface",
"priority",
"severity",
"category",
"object_type",
"object_id",
"thread_key",
"occurred_at"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string",
"minLength": 1
},
"surface": {
"const": "notification"
},
"priority": {
"const": "normal"
},
"severity": {
"const": "success"
},
"category": {
"const": "payments"
},
"object_type": {
"const": "settlement"
},
"object_id": {
"type": "string",
"minLength": 1
},
"thread_key": {
"type": "string",
"minLength": 1
},
"occurred_at": {
"type": "string",
"format": "date-time"
},
"amount_minor": {
"type": "integer",
"minimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"action_url": {
"type": "string",
"format": "uri"
}
}
},
"examples": [
{
"title": "Inter-organization settlement completed",
"body": "Inter-organization settlement completed.",
"surface": "notification",
"priority": "normal",
"severity": "success",
"category": "payments",
"object_type": "settlement",
"object_id": "settlement_123",
"thread_key": "payments:settlement:settlement_123",
"occurred_at": "2026-07-20T12:00:00.000Z"
}
],
"dataClassification": "internal",
"recipients": {
"modes": [
"organization_member"
],
"externalAddress": "forbidden"
},
"idempotency": {
"required": true,
"pattern": "^topolo-pay:(?:settlement-completed):"
}
}
]
},
"actions": [
{
"name": "widget.get",
"title": "Get widget summary",
"description": "Get the TopoloOne widget summary for this service.",
"method": "GET",
"path": "/api/widget",
"permission": "dashboard:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"target": "api",
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/widget",
"body": null
},
"effects": "Reads state through GET /api/widget without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/widget",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "analytics.get",
"title": "Get Pay analytics",
"description": "Get Pay analytics.",
"method": "GET",
"path": "/api/admin/analytics",
"permission": "analytics:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"dateFrom": {
"type": "string",
"minLength": 1
},
"dateTo": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get Pay analytics.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"dateFrom": "example",
"dateTo": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/admin/analytics",
"body": null
},
"effects": "Reads state through GET /api/admin/analytics without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/admin/analytics",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "transactions.list",
"title": "List transactions",
"description": "List Pay transactions.",
"method": "GET",
"path": "/api/admin/transactions",
"permission": "transactions:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10000
},
"search": {
"type": "string",
"minLength": 1
},
"merchant": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"minLength": 1
},
"method": {
"type": "string",
"minLength": 1
},
"workspaceId": {
"type": "string",
"minLength": 1
},
"dateFrom": {
"type": "string",
"minLength": 1
},
"dateTo": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List transactions.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"page": 1,
"limit": 1,
"search": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/admin/transactions",
"body": null
},
"effects": "Reads state through GET /api/admin/transactions without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/admin/transactions",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "customers.list",
"title": "List customers",
"description": "List Pay customers.",
"method": "GET",
"path": "/api/admin/customers",
"permission": "customers:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"search": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List customers.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"search": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/admin/customers",
"body": null
},
"effects": "Reads state through GET /api/admin/customers without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/admin/customers",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "merchants.list",
"title": "Merchants List",
"description": "Call GET /api/merchants.",
"method": "GET",
"path": "/api/merchants",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Merchants List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "public",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/merchants",
"body": null
},
"effects": "Reads state through GET /api/merchants without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/merchants",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "subscriptions.checkout",
"title": "Create subscription checkout",
"description": "Create a subscription checkout session.",
"method": "POST",
"path": "/api/subscriptions/checkout",
"readOnly": false,
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"priceId": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"customerEmail": {
"type": "string",
"minLength": 1
},
"customerName": {
"type": "string",
"minLength": 1
},
"externalSystem": {
"type": "string",
"minLength": 1
},
"externalUserId": {
"type": "string",
"minLength": 1
},
"externalOrgId": {
"type": "string",
"minLength": 1
},
"workspaceId": {
"type": "string",
"minLength": 1
},
"successUrl": {
"type": "string",
"minLength": 1
},
"cancelUrl": {
"type": "string",
"minLength": 1
},
"trialPeriodDays": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"allowPromotionCodes": {
"type": "boolean"
},
"metadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"inlinePrice": {
"type": "object",
"properties": {
"productName": {
"type": "string",
"minLength": 1
},
"unitAmount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"minLength": 1
},
"interval": {
"type": "string",
"enum": [
"day",
"week",
"month",
"year"
]
}
},
"required": [
"productName",
"unitAmount",
"currency",
"interval"
],
"additionalProperties": false
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create subscription checkout.",
"additionalProperties": true
},
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"priceId": "example",
"quantity": 1,
"customerEmail": "user@example.com"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/subscriptions/checkout",
"body": {
"priceId": "example",
"quantity": 1,
"customerEmail": "user@example.com"
}
},
"effects": "May change state through POST /api/subscriptions/checkout. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/subscriptions/checkout",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "pricing_plans.list",
"title": "List pricing plans",
"description": "List platform pricing plans.",
"method": "GET",
"path": "/api/pricing-plans",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"appId": {
"type": "string",
"minLength": 1
},
"developerOrgId": {
"type": "string",
"minLength": 1
},
"includeInactive": {
"type": "string",
"enum": [
"true",
"false"
]
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List pricing plans.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"appId": "example",
"developerOrgId": "example",
"includeInactive": "true"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/pricing-plans",
"body": null
},
"effects": "Reads state through GET /api/pricing-plans without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/pricing-plans",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "p2p.settlements.create",
"title": "Create P2P settlement",
"description": "Create a TopoloPay P2P settlement.",
"method": "POST",
"path": "/api/p2p/settlements",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"batch_id": {
"type": "string",
"minLength": 1
},
"buyer_org_id": {
"type": "string",
"minLength": 1
},
"seller_org_id": {
"type": "string",
"minLength": 1
},
"currency": {
"type": "string",
"minLength": 3,
"maxLength": 3
},
"total_minor": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"trigger": {
"type": "string",
"enum": [
"threshold",
"schedule",
"manual",
"invoice",
"delivery"
]
},
"line_items": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"entry_id": {
"type": "string",
"minLength": 1
},
"request_id": {
"type": "string",
"minLength": 1
},
"capability_id": {
"type": "string",
"minLength": 1
},
"pricing_component": {
"type": "string",
"minLength": 1
},
"amount_minor": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"audit_correlation_id": {
"type": "string",
"minLength": 1
}
},
"required": [
"entry_id",
"request_id",
"capability_id",
"pricing_component",
"amount_minor",
"audit_correlation_id"
],
"additionalProperties": false
}
}
},
"required": [
"batch_id",
"buyer_org_id",
"seller_org_id",
"currency",
"total_minor",
"trigger",
"line_items"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create P2P settlement.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"batch_id": "00000000-0000-4000-8000-000000000000",
"buyer_org_id": "00000000-0000-4000-8000-000000000000",
"seller_org_id": "00000000-0000-4000-8000-000000000000",
"currency": "USD",
"total_minor": 1,
"trigger": "threshold",
"line_items": [
{
"entry_id": "00000000-0000-4000-8000-000000000000",
"request_id": "00000000-0000-4000-8000-000000000000",
"capability_id": "00000000-0000-4000-8000-000000000000",
"pricing_component": "example",
"amount_minor": 1,
"audit_correlation_id": "00000000-0000-4000-8000-000000000000"
}
]
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/p2p/settlements",
"body": {
"batch_id": "00000000-0000-4000-8000-000000000000",
"buyer_org_id": "00000000-0000-4000-8000-000000000000",
"seller_org_id": "00000000-0000-4000-8000-000000000000",
"currency": "USD",
"total_minor": 1,
"trigger": "threshold",
"line_items": [
{
"entry_id": "00000000-0000-4000-8000-000000000000",
"request_id": "00000000-0000-4000-8000-000000000000",
"capability_id": "00000000-0000-4000-8000-000000000000",
"pricing_component": "example",
"amount_minor": 1,
"audit_correlation_id": "00000000-0000-4000-8000-000000000000"
}
]
}
},
"effects": "May change state through POST /api/p2p/settlements. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/p2p/settlements",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "p2p.settlements.complete",
"title": "Complete P2P settlement",
"description": "Persist a completed TopoloPay P2P settlement and publish its notification transition.",
"method": "POST",
"path": "/api/p2p/settlements/{batchId}/complete",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"batchId": {
"type": "string",
"minLength": 1
},
"provider_status": {
"type": "string",
"minLength": 1
}
},
"required": [
"batchId",
"provider_status"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Complete P2P settlement.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"batchId": "example",
"provider_status": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/p2p/settlements/example/complete",
"body": {
"batchId": "example",
"provider_status": "example"
}
},
"effects": "May change state through POST /api/p2p/settlements/{batchId}/complete. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/p2p/settlements/*/complete",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "crypto_payments.create",
"title": "Create crypto payment",
"description": "Create a TopoloPay crypto payment.",
"method": "POST",
"path": "/pay/crypto",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"orderId": {
"type": "string",
"minLength": 1
},
"amountCents": {
"type": "number",
"exclusiveMinimum": 0
},
"currency": {
"type": "string",
"minLength": 1
},
"merchantId": {
"type": "string",
"minLength": 1
},
"customerEmail": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string",
"minLength": 1
},
"metadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"redirectUrl": {
"type": "string",
"minLength": 1
},
"cancelUrl": {
"type": "string",
"minLength": 1
}
},
"required": [
"orderId",
"amountCents",
"currency",
"merchantId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create crypto payment.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"orderId": "example",
"amountCents": 1,
"currency": "USD",
"merchantId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/pay/crypto",
"body": {
"orderId": "example",
"amountCents": 1,
"currency": "USD",
"merchantId": "example"
}
},
"effects": "May change state through POST /pay/crypto. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /pay/crypto",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "crypto_payments.status.get",
"title": "Get crypto payment status",
"description": "Get TopoloPay crypto payment status.",
"method": "GET",
"path": "/pay/crypto/{chargeId}/status",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"chargeId": {
"type": "string",
"minLength": 1
}
},
"required": [
"chargeId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get crypto payment status.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"chargeId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/pay/crypto/example/status",
"body": null
},
"effects": "Reads state through GET /pay/crypto/{chargeId}/status without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /pay/crypto/*/status",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "merchants.fees.get",
"title": "Get merchant fees",
"description": "Get TopoloPay merchant fees.",
"method": "GET",
"path": "/api/merchants/{merchantId}/fees",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"merchantId": {
"type": "string",
"minLength": 1
}
},
"required": [
"merchantId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get merchant fees.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "public",
"documentation": {
"example_input": {
"merchantId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/merchants/example/fees",
"body": null
},
"effects": "Reads state through GET /api/merchants/{merchantId}/fees without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/merchants/*/fees",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "subscriptions.payment_intent.create",
"title": "Create subscription payment intent",
"description": "Create a subscription payment intent.",
"method": "POST",
"path": "/api/subscriptions/payment-intent",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"priceId": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"customerEmail": {
"type": "string",
"minLength": 1
},
"customerName": {
"type": "string",
"minLength": 1
},
"externalSystem": {
"type": "string",
"minLength": 1
},
"externalUserId": {
"type": "string",
"minLength": 1
},
"externalOrgId": {
"type": "string",
"minLength": 1
},
"workspaceId": {
"type": "string",
"minLength": 1
},
"trialPeriodDays": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"metadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"inlinePrice": {
"type": "object",
"properties": {
"productName": {
"type": "string",
"minLength": 1
},
"unitAmount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"minLength": 1
},
"interval": {
"type": "string",
"enum": [
"day",
"week",
"month",
"year"
]
}
},
"required": [
"productName",
"unitAmount",
"currency",
"interval"
],
"additionalProperties": false
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create subscription payment intent.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"priceId": "example",
"quantity": 1,
"customerEmail": "user@example.com"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/subscriptions/payment-intent",
"body": {
"priceId": "example",
"quantity": 1,
"customerEmail": "user@example.com"
}
},
"effects": "May change state through POST /api/subscriptions/payment-intent. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/subscriptions/payment-intent",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "subscriptions.by_external.get",
"title": "Get subscription by external user",
"description": "Get a subscription by external user id.",
"method": "GET",
"path": "/api/subscriptions/by-external/{userId}",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"userId": {
"type": "string",
"minLength": 1
},
"system": {
"type": "string",
"minLength": 1
},
"includeAll": {
"type": "string",
"enum": [
"true",
"false"
]
}
},
"required": [
"userId",
"system"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get subscription by external user.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"userId": "example",
"system": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/subscriptions/by-external/example",
"body": null
},
"effects": "Reads state through GET /api/subscriptions/by-external/{userId} without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/subscriptions/by-external/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "subscriptions.by_checkout_session.get",
"title": "Get subscription by checkout session",
"description": "Get a subscription by checkout session.",
"method": "GET",
"path": "/api/subscriptions/by-checkout-session/{sessionId}",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"sessionId": {
"type": "string",
"minLength": 1
}
},
"required": [
"sessionId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get subscription by checkout session.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"sessionId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/subscriptions/by-checkout-session/example",
"body": null
},
"effects": "Reads state through GET /api/subscriptions/by-checkout-session/{sessionId} without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/subscriptions/by-checkout-session/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "subscriptions.bind_external",
"title": "Bind external subscription",
"description": "Bind external subscription metadata.",
"method": "POST",
"path": "/api/subscriptions/{id}/bind-external",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"externalSystem": {
"type": "string",
"minLength": 1
},
"externalOrgId": {
"type": "string",
"minLength": 1
},
"externalUserId": {
"type": "string",
"minLength": 1
},
"workspaceId": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Bind external subscription.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/subscriptions/00000000-0000-4000-8000-000000000000/bind-external",
"body": {
"id": "00000000-0000-4000-8000-000000000000"
}
},
"effects": "May change state through POST /api/subscriptions/{id}/bind-external. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/subscriptions/*/bind-external",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "subscriptions.get",
"title": "Get subscription",
"description": "Get a TopoloPay subscription.",
"method": "GET",
"path": "/api/subscriptions/{id}",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get subscription.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/subscriptions/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/subscriptions/{id} without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/subscriptions/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "pricing_plans.create",
"title": "Create pricing plan",
"description": "Create a TopoloPay pricing plan.",
"method": "POST",
"path": "/api/pricing-plans",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"appId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"developerOrgId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"displayName": {
"type": "string",
"minLength": 1
},
"pricingModel": {
"type": "string",
"enum": [
"free",
"included",
"flat",
"per_seat",
"per_seat_tiered",
"metered",
"metered_tiered",
"flat_plus_metered",
"one_time",
"sales_led"
]
},
"unitLabel": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"billingCurrency": {
"type": "string",
"minLength": 1
},
"billingInterval": {
"anyOf": [
{
"type": "string",
"enum": [
"day",
"week",
"month",
"year"
]
},
{
"type": "null"
}
]
},
"isDefault": {
"type": "boolean"
},
"revShareBps": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"metadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"pricingDetails": {
"type": "object",
"properties": {
"productName": {
"type": "string",
"minLength": 1
},
"unitAmountCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"tiers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"upTo": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"const": "inf"
}
]
},
"unitAmountCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"flatAmountCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"upTo"
],
"additionalProperties": false
}
},
"tiersMode": {
"type": "string",
"enum": [
"graduated",
"volume"
]
},
"meteredUnitAmountCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"flatBaseAmountCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"additionalProperties": false
}
},
"required": [
"id",
"displayName",
"pricingModel"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create pricing plan.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"displayName": "example",
"pricingModel": "free"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/pricing-plans",
"body": {
"id": "00000000-0000-4000-8000-000000000000",
"displayName": "example",
"pricingModel": "free"
}
},
"effects": "May change state through POST /api/pricing-plans. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/pricing-plans",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "pricing_plans.bulk_create",
"title": "Bulk create pricing plans",
"description": "Bulk create TopoloPay pricing plans.",
"method": "POST",
"path": "/api/pricing-plans/bulk-register",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"plans": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
},
"required": [
"plans"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Bulk create pricing plans.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"plans": [
{}
]
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/pricing-plans/bulk-register",
"body": {
"plans": [
{}
]
}
},
"effects": "May change state through POST /api/pricing-plans/bulk-register. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/pricing-plans/bulk-register",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "pricing_plans.by_app.list",
"title": "List pricing by app",
"description": "List TopoloPay pricing plans by app.",
"method": "GET",
"path": "/api/pricing-plans/by-app/{appId}",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"appId": {
"type": "string",
"minLength": 1
}
},
"required": [
"appId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List pricing by app.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"appId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/pricing-plans/by-app/example",
"body": null
},
"effects": "Reads state through GET /api/pricing-plans/by-app/{appId} without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/pricing-plans/by-app/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "pricing_plans.get",
"title": "Get pricing plan",
"description": "Get a TopoloPay pricing plan.",
"method": "GET",
"path": "/api/pricing-plans/{id}",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get pricing plan.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/pricing-plans/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/pricing-plans/{id} without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/pricing-plans/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "platform_pricing.get",
"title": "Get platform pricing",
"description": "Get Topolo platform pricing.",
"method": "GET",
"path": "/api/platform-pricing",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get platform pricing.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "public",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/platform-pricing",
"body": null
},
"effects": "Reads state through GET /api/platform-pricing without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/platform-pricing",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "platform_pricing.update",
"title": "Update platform pricing",
"description": "Update Topolo platform pricing.",
"method": "PUT",
"path": "/api/platform-pricing",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"base": {
"type": "object",
"properties": {
"planId": {
"type": "string",
"minLength": 1
},
"monthlyCentsPerSeat": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"minimumSeats": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"seatTiers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"upTo": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"const": "inf"
}
]
},
"unitAmountCents": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"upTo",
"unitAmountCents"
],
"additionalProperties": false
}
}
},
"required": [
"planId",
"monthlyCentsPerSeat"
],
"additionalProperties": false
},
"includedFreeInBase": {
"type": "array",
"items": {
"type": "object",
"properties": {
"appId": {
"type": "string",
"minLength": 1
},
"headline": {
"type": "string",
"minLength": 1
},
"marketingPath": {
"type": "string",
"minLength": 1
}
},
"required": [
"appId",
"headline"
],
"additionalProperties": false
}
},
"platformCapabilities": {
"type": "array",
"items": {
"type": "string"
}
},
"platformTagline": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"schemaVersion": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"editorUserId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update platform pricing.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"base": {
"planId": "example",
"monthlyCentsPerSeat": 1
},
"includedFreeInBase": [
{
"appId": "example",
"headline": "example"
}
],
"platformCapabilities": [
"example"
]
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "PUT",
"path": "/api/platform-pricing",
"body": {
"base": {
"planId": "example",
"monthlyCentsPerSeat": 1
},
"includedFreeInBase": [
{
"appId": "example",
"headline": "example"
}
],
"platformCapabilities": [
"example"
]
}
},
"effects": "May change state through PUT /api/platform-pricing. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "PUT /api/platform-pricing",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "subscription_items.list",
"title": "List subscription items",
"description": "List subscription items.",
"method": "GET",
"path": "/api/subscriptions/{subId}/items",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"subId": {
"type": "string",
"minLength": 1
}
},
"required": [
"subId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List subscription items.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"subId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/subscriptions/example/items",
"body": null
},
"effects": "Reads state through GET /api/subscriptions/{subId}/items without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/subscriptions/*/items",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "subscription_items.create",
"title": "Create subscription item",
"description": "Create a subscription item.",
"method": "POST",
"path": "/api/subscriptions/{subId}/items",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"subId": {
"type": "string",
"minLength": 1
},
"pricingPlanId": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "number",
"minimum": 0
},
"itemKind": {
"type": "string",
"enum": [
"base",
"app"
]
}
},
"required": [
"subId",
"pricingPlanId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create subscription item.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"subId": "example",
"pricingPlanId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/subscriptions/example/items",
"body": {
"subId": "example",
"pricingPlanId": "example"
}
},
"effects": "May change state through POST /api/subscriptions/{subId}/items. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/subscriptions/*/items",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "subscription_items.update",
"title": "Update subscription item",
"description": "Update a subscription item.",
"method": "PATCH",
"path": "/api/subscriptions/{subId}/items/{itemId}",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"subId": {
"type": "string",
"minLength": 1
},
"itemId": {
"type": "string",
"minLength": 1
},
"quantity": {
"type": "number",
"minimum": 0
}
},
"required": [
"subId",
"itemId",
"quantity"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update subscription item.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"subId": "example",
"itemId": "example",
"quantity": 1
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "PATCH",
"path": "/api/subscriptions/example/items/example",
"body": {
"subId": "example",
"itemId": "example",
"quantity": 1
}
},
"effects": "May change state through PATCH /api/subscriptions/{subId}/items/{itemId}. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "PATCH /api/subscriptions/*/items/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "subscription_items.delete",
"title": "Delete subscription item",
"description": "Delete a subscription item.",
"method": "DELETE",
"path": "/api/subscriptions/{subId}/items/{itemId}",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"subId": {
"type": "string",
"minLength": 1
},
"itemId": {
"type": "string",
"minLength": 1
}
},
"required": [
"subId",
"itemId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Delete subscription item.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"subId": "example",
"itemId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "DELETE",
"path": "/api/subscriptions/example/items/example",
"body": null
},
"effects": "May change state through DELETE /api/subscriptions/{subId}/items/{itemId}. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "DELETE /api/subscriptions/*/items/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organization_subscription_items.list",
"title": "List organization subscription items",
"description": "List organization subscription items.",
"method": "GET",
"path": "/api/subscriptions/by-external-org/{orgId}/items",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"orgId": {
"type": "string",
"minLength": 1
},
"system": {
"type": "string",
"minLength": 1
}
},
"required": [
"orgId",
"system"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List organization subscription items.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"orgId": "example",
"system": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/subscriptions/by-external-org/example/items",
"body": null
},
"effects": "Reads state through GET /api/subscriptions/by-external-org/{orgId}/items without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/subscriptions/by-external-org/*/items",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organization_subscriptions.summary.get",
"title": "Get organization subscription summary",
"description": "Get organization subscription summary.",
"method": "GET",
"path": "/api/subscriptions/by-external-org/{orgId}/summary",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"orgId": {
"type": "string",
"minLength": 1
},
"system": {
"type": "string",
"minLength": 1
},
"workspaceId": {
"type": "string",
"minLength": 1
}
},
"required": [
"orgId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get organization subscription summary.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"orgId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/subscriptions/by-external-org/example/summary",
"body": null
},
"effects": "Reads state through GET /api/subscriptions/by-external-org/{orgId}/summary without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/subscriptions/by-external-org/*/summary",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organization_subscriptions.base_seat_count.update",
"title": "Update base seat count",
"description": "Update organization subscription base seat count.",
"method": "POST",
"path": "/api/subscriptions/by-external-org/{orgId}/base-seat-count",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"orgId": {
"type": "string",
"minLength": 1
},
"system": {
"type": "string",
"minLength": 1
},
"seatCount": {
"type": "number",
"minimum": 0
}
},
"required": [
"orgId",
"system",
"seatCount"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Update base seat count.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"orgId": "example",
"system": "example",
"seatCount": 1
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/subscriptions/by-external-org/example/base-seat-count",
"body": {
"orgId": "example",
"system": "example",
"seatCount": 1
}
},
"effects": "May change state through POST /api/subscriptions/by-external-org/{orgId}/base-seat-count. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/subscriptions/by-external-org/*/base-seat-count",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "connect.onboard",
"title": "Start Connect onboarding",
"description": "Start TopoloPay Connect onboarding.",
"method": "POST",
"path": "/admin/connect/onboard",
"permission": "merchants:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"merchantId": {
"type": "string",
"minLength": 1
},
"returnUrl": {
"type": "string",
"minLength": 1
},
"refreshUrl": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"minLength": 1
}
},
"required": [
"merchantId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Start Connect onboarding.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"documentation": {
"example_input": {
"merchantId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/admin/connect/onboard",
"body": {
"merchantId": "example"
}
},
"effects": "May change state through POST /admin/connect/onboard. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /admin/connect/onboard",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "connect.status.get",
"title": "Get Connect status",
"description": "Get TopoloPay Connect status.",
"method": "GET",
"path": "/admin/connect/status",
"permission": "merchants:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"merchantId": {
"type": "string",
"minLength": 1
}
},
"required": [
"merchantId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get Connect status.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"merchantId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/admin/connect/status",
"body": null
},
"effects": "Reads state through GET /admin/connect/status without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /admin/connect/status",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "connect.dashboard_link.create",
"title": "Create Connect dashboard link",
"description": "Create a TopoloPay Connect dashboard link.",
"method": "POST",
"path": "/admin/connect/dashboard-link",
"permission": "merchants:write",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"merchantId": {
"type": "string",
"minLength": 1
}
},
"required": [
"merchantId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Create Connect dashboard link.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"documentation": {
"example_input": {
"merchantId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/admin/connect/dashboard-link",
"body": {
"merchantId": "example"
}
},
"effects": "May change state through POST /admin/connect/dashboard-link. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /admin/connect/dashboard-link",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.transactions.results.list",
"title": "List transaction results",
"description": "List TopoloPay transaction search results.",
"method": "GET",
"path": "/admin/transactions/results",
"permission": "transactions:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10000
},
"search": {
"type": "string",
"minLength": 1
},
"merchant": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"minLength": 1
},
"method": {
"type": "string",
"minLength": 1
},
"workspaceId": {
"type": "string",
"minLength": 1
},
"dateFrom": {
"type": "string",
"minLength": 1
},
"dateTo": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List transaction results.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"page": 1,
"limit": 1,
"search": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/admin/transactions/results",
"body": null
},
"effects": "Reads state through GET /admin/transactions/results without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /admin/transactions/results",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.transactions.search",
"title": "Search transactions",
"description": "Search TopoloPay transactions.",
"method": "GET",
"path": "/admin/transactions/search",
"permission": "transactions:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10000
},
"search": {
"type": "string",
"minLength": 1
},
"merchant": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"minLength": 1
},
"method": {
"type": "string",
"minLength": 1
},
"workspaceId": {
"type": "string",
"minLength": 1
},
"dateFrom": {
"type": "string",
"minLength": 1
},
"dateTo": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Search transactions.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"page": 1,
"limit": 1,
"search": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/admin/transactions/search",
"body": null
},
"effects": "Reads state through GET /admin/transactions/search without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /admin/transactions/search",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.customers.search",
"title": "Search customers",
"description": "Search TopoloPay customers.",
"method": "GET",
"path": "/admin/customers/search",
"permission": "customers:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"customerSearch": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Search customers.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"customerSearch": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/admin/customers/search",
"body": null
},
"effects": "Reads state through GET /admin/customers/search without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /admin/customers/search",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.customers.history.get",
"title": "Get customer history",
"description": "Get TopoloPay customer history.",
"method": "GET",
"path": "/api/admin/customers/{email}/history",
"permission": "customers:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"email": {
"type": "string",
"minLength": 1
}
},
"required": [
"email"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Get customer history.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"email": "user@example.com"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/admin/customers/user%40example.com/history",
"body": null
},
"effects": "Reads state through GET /api/admin/customers/{email}/history without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/admin/customers/*/history",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.audit.list",
"title": "List audit logs",
"description": "List TopoloPay audit logs.",
"method": "GET",
"path": "/api/admin/audit",
"permission": "audit:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10000
},
"action": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by List audit logs.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"page": 1,
"limit": 1,
"action": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/admin/audit",
"body": null
},
"effects": "Reads state through GET /api/admin/audit without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/admin/audit",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.export.transactions",
"title": "Export transactions",
"description": "Export TopoloPay transactions.",
"method": "GET",
"path": "/api/admin/export",
"permission": "reports:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"format": {
"type": "string",
"enum": [
"csv"
]
},
"type": {
"type": "string",
"enum": [
"transactions",
"reconciliation",
"summary"
]
},
"search": {
"type": "string",
"minLength": 1
},
"merchant": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"minLength": 1
},
"method": {
"type": "string",
"minLength": 1
},
"dateFrom": {
"type": "string",
"minLength": 1
},
"dateTo": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Export transactions.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"format": "csv",
"type": "transactions",
"search": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/admin/export",
"body": null
},
"effects": "Reads state through GET /api/admin/export without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/admin/export",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "orders.create",
"title": "Orders Create",
"description": "Call POST /order.",
"method": "POST",
"path": "/order",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"orderId": {
"type": "string",
"minLength": 1
},
"amount": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"minLength": 1
},
"merchantId": {
"type": "string",
"minLength": 1
},
"venueId": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string",
"minLength": 1
},
"customer": {
"type": "object",
"properties": {
"email": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"customerEmail": {
"type": "string",
"minLength": 1
},
"metadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"receipt_email": {
"type": "string",
"minLength": 1
},
"statement_descriptor": {
"type": "string",
"minLength": 1
}
},
"required": [
"orderId",
"amount",
"currency",
"merchantId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Orders Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"orderId": "example",
"amount": 1,
"currency": "USD",
"merchantId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/order",
"body": {
"orderId": "example",
"amount": 1,
"currency": "USD",
"merchantId": "example"
}
},
"effects": "May change state through POST /order. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /order",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "orders.cancel",
"title": "Orders Cancel",
"description": "Call POST /order/{paymentId}/cancel.",
"method": "POST",
"path": "/order/{paymentId}/cancel",
"requiresConfirmation": true,
"destructive": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"paymentId": {
"type": "string",
"minLength": 1
}
},
"required": [
"paymentId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Orders Cancel.",
"additionalProperties": true
},
"readOnly": false,
"agentAccess": "confirm",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"paymentId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/order/example/cancel",
"body": {
"paymentId": "example"
}
},
"effects": "May change state through POST /order/{paymentId}/cancel. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /order/*/cancel",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "payment.status.get",
"title": "Payment Status Get",
"description": "Call GET /payment/{sessionId}/status.",
"method": "GET",
"path": "/payment/{sessionId}/status",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"sessionId": {
"type": "string",
"minLength": 1
}
},
"required": [
"sessionId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Payment Status Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"authorizationMode": "runtime",
"documentation": {
"example_input": {
"sessionId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/payment/example/status",
"body": null
},
"effects": "Reads state through GET /payment/{sessionId}/status without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /payment/*/status",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.transactions.page.list",
"title": "Admin Transactions Page List",
"description": "Call GET /admin/transactions.",
"method": "GET",
"path": "/admin/transactions",
"permission": "transactions:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10000
},
"search": {
"type": "string",
"minLength": 1
},
"merchant": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"minLength": 1
},
"method": {
"type": "string",
"minLength": 1
},
"workspaceId": {
"type": "string",
"minLength": 1
},
"dateFrom": {
"type": "string",
"minLength": 1
},
"dateTo": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Admin Transactions Page List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"page": 1,
"limit": 1,
"search": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/admin/transactions",
"body": null
},
"effects": "Reads state through GET /admin/transactions without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /admin/transactions",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.customers.page.list",
"title": "Admin Customers Page List",
"description": "Call GET /admin/customers.",
"method": "GET",
"path": "/admin/customers",
"permission": "customers:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Admin Customers Page List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/admin/customers",
"body": null
},
"effects": "Reads state through GET /admin/customers without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /admin/customers",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.customers.list",
"title": "Admin Customers List",
"description": "Call GET /admin/customers/list.",
"method": "GET",
"path": "/admin/customers/list",
"permission": "customers:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Admin Customers List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/admin/customers/list",
"body": null
},
"effects": "Reads state through GET /admin/customers/list without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /admin/customers/list",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.audit.page.get",
"title": "Admin Audit Page Get",
"description": "Call GET /admin/audit.",
"method": "GET",
"path": "/admin/audit",
"permission": "audit:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Admin Audit Page Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/admin/audit",
"body": null
},
"effects": "Reads state through GET /admin/audit without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /admin/audit",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.audit.logs.list",
"title": "Admin Audit Logs List",
"description": "Call GET /admin/audit/logs.",
"method": "GET",
"path": "/admin/audit/logs",
"permission": "audit:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"auditAction": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Admin Audit Logs List.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"page": 1,
"auditAction": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/admin/audit/logs",
"body": null
},
"effects": "Reads state through GET /admin/audit/logs without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /admin/audit/logs",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.export.transactions_page",
"title": "Admin Export Transactions Page",
"description": "Call GET /admin/export/transactions.",
"method": "GET",
"path": "/admin/export/transactions",
"permission": "reports:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"format": {
"type": "string",
"enum": [
"csv"
]
},
"type": {
"type": "string",
"enum": [
"transactions",
"reconciliation",
"summary"
]
},
"search": {
"type": "string",
"minLength": 1
},
"merchant": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"minLength": 1
},
"method": {
"type": "string",
"minLength": 1
},
"dateFrom": {
"type": "string",
"minLength": 1
},
"dateTo": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Admin Export Transactions Page.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"format": "csv",
"type": "transactions",
"search": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/admin/export/transactions",
"body": null
},
"effects": "Reads state through GET /admin/export/transactions without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /admin/export/transactions",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.transaction.get",
"title": "Admin Transaction Get",
"description": "Call GET /api/admin/transaction/{id}.",
"method": "GET",
"path": "/api/admin/transaction/{id}",
"permission": "transactions:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Admin Transaction Get.",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/admin/transaction/00000000-0000-4000-8000-000000000000",
"body": null
},
"effects": "Reads state through GET /api/admin/transaction/{id} without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/admin/transaction/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.refund.create",
"title": "Admin Refund Create",
"description": "Call POST /api/admin/refund/{id}.",
"method": "POST",
"path": "/api/admin/refund/{id}",
"permission": "transactions:refund",
"requiresConfirmation": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"amount": {
"type": "number",
"exclusiveMinimum": 0
},
"reason": {
"type": "string",
"minLength": 1
}
},
"required": [
"id",
"amount",
"reason"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"description": "Response returned by Admin Refund Create.",
"additionalProperties": true
},
"readOnly": false,
"destructive": false,
"agentAccess": "confirm",
"documentation": {
"example_input": {
"id": "00000000-0000-4000-8000-000000000000",
"amount": 1,
"reason": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "POST",
"path": "/api/admin/refund/00000000-0000-4000-8000-000000000000",
"body": {
"id": "00000000-0000-4000-8000-000000000000",
"amount": 1,
"reason": "example"
}
},
"effects": "May change state through POST /api/admin/refund/{id}. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "POST /api/admin/refund/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.invoices.list",
"title": "List invoices",
"description": "List Stripe invoices visible to the current organization or platform operator.",
"method": "GET",
"path": "/api/admin/invoices",
"permission": "invoices:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"starting_after": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"minLength": 1
},
"organizationId": {
"type": "string",
"minLength": 1
},
"workspaceId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"limit": 1,
"starting_after": "example",
"status": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/admin/invoices",
"body": null
},
"effects": "Reads state through GET /api/admin/invoices without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/admin/invoices",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.invoices.link.get",
"title": "Get invoice link",
"description": "Get the hosted link for an accessible invoice.",
"method": "GET",
"path": "/api/admin/invoices/{invoiceId}/link",
"permission": "invoices:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"invoiceId": {
"type": "string",
"minLength": 1
},
"organizationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"invoiceId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"invoiceId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/admin/invoices/example/link",
"body": null
},
"effects": "Reads state through GET /api/admin/invoices/{invoiceId}/link without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/admin/invoices/*/link",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.merchants.list",
"title": "List admin merchants",
"description": "List merchant accounts visible to the current workspace.",
"method": "GET",
"path": "/api/admin/merchants",
"permission": "merchants:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"workspaceId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/admin/merchants",
"body": null
},
"effects": "Reads state through GET /api/admin/merchants without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/admin/merchants",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "admin.merchants.get",
"title": "Get admin merchant",
"description": "Get a merchant account visible to the current workspace.",
"method": "GET",
"path": "/api/admin/merchants/{merchantId}",
"permission": "merchants:read",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"merchantId": {
"type": "string",
"minLength": 1
},
"workspaceId": {
"type": "string",
"minLength": 1
}
},
"required": [
"merchantId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"merchantId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/admin/merchants/example",
"body": null
},
"effects": "Reads state through GET /api/admin/merchants/{merchantId} without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/admin/merchants/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "workspaces.delete",
"title": "Delete Pay workspace",
"description": "Delete a non-default empty Pay workspace.",
"method": "DELETE",
"path": "/api/pay/workspaces/{workspaceId}",
"permission": "workspace:delete",
"readOnly": false,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": true,
"requiresConfirmation": true,
"agentAccess": "confirm",
"documentation": {
"example_input": {
"workspaceId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "DELETE",
"path": "/api/pay/workspaces/example",
"body": null
},
"effects": "May change state through DELETE /api/pay/workspaces/{workspaceId}. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "DELETE /api/pay/workspaces/*",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.data.export",
"title": "Export organization Pay data",
"description": "Export the caller organization's billing, payment, settlement, usage, analytics, and attributed audit records across Pay's split stores.",
"method": "GET",
"path": "/api/organizations/{organizationId}/data",
"permission": "privacy:read",
"authorizationMode": "static",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"organizationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"organizationId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"organizationId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/organizations/example/data",
"body": null
},
"effects": "Reads state through GET /api/organizations/{organizationId}/data without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/organizations/*/data",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.data.erase",
"title": "Erase organization Pay data",
"description": "Erase organization-authored Pay content while retaining immutable financial and provider reconciliation records.",
"method": "DELETE",
"path": "/api/organizations/{organizationId}/data",
"permission": "privacy:write",
"authorizationMode": "static",
"readOnly": false,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"organizationId": {
"type": "string",
"minLength": 1
},
"confirmation": {
"type": "string",
"const": "ERASE"
}
},
"required": [
"organizationId",
"confirmation"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": true,
"requiresConfirmation": true,
"agentAccess": "confirm",
"documentation": {
"example_input": {
"organizationId": "example",
"confirmation": "ERASE"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --confirm --json"
],
"http_example": {
"method": "DELETE",
"path": "/api/organizations/example/data",
"body": null
},
"effects": "May change state through DELETE /api/organizations/{organizationId}/data. Inspect the plan and honor the published confirmation policy.",
"verification": [
"Check the structured action result.",
"Read the affected resource back through the corresponding get or list action."
],
"recovery": [
"Do not retry an ambiguous mutation until a read confirms whether it applied.",
"Use a published inverse, update, archive, or delete action only after inspecting its contract."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "DELETE /api/organizations/*/data",
"evidence": "Matched to a served route extracted from canonical staging source."
}
},
{
"name": "organizations.data_protection.canary",
"title": "Check organization Pay protection",
"description": "Check whether retained merchant, customer, transaction, refund, and provider payload fields are encrypted for an organization.",
"method": "GET",
"path": "/api/organizations/{organizationId}/data-protection",
"permission": "privacy:read",
"authorizationMode": "static",
"readOnly": true,
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"organizationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"organizationId"
],
"additionalProperties": false
},
"target": "api",
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"destructive": false,
"requiresConfirmation": false,
"agentAccess": "auto",
"documentation": {
"example_input": {
"organizationId": "example"
},
"cli_example": [
"topolo actions --service topolo-pay --json",
"topolo actions get <action-id> --json",
"topolo actions validate <action-id> --data @payload.json --json",
"topolo actions plan <action-id> --data @payload.json --json",
"topolo actions call <action-id> --data @payload.json --json"
],
"http_example": {
"method": "GET",
"path": "/api/organizations/example/data-protection",
"body": null
},
"effects": "Reads state through GET /api/organizations/{organizationId}/data-protection without a declared mutation.",
"verification": [
"Check the structured action result and pagination or resource identifiers before using it downstream."
],
"recovery": [
"Correct identity, resource context, permission, or input validation failures, then retry the read."
],
"docs_url": null,
"resource": null,
"next_action_ids": [],
"rollback_action_id": null
},
"implementation": {
"status": "implemented",
"route_key": "GET /api/organizations/*/data-protection",
"evidence": "Matched to a served route extracted from canonical staging source."
}
}
],
"action_coverage": {
"status": "ok",
"served_routes": 80,
"matched_actions": 58,
"declared_unserved_actions": [],
"coverage_excluded_actions": [],
"uncatalogued_routes": [
{
"key": "POST /internal/platform/encryption/master-key/rewrap",
"method": "POST",
"path": "/internal/platform/encryption/master-key/rewrap",
"source": "apps/api/src/index.ts",
"target": "api"
}
],
"ignored_routes": 21,
"configured_exclusions": 20,
"configuration_findings": [],
"notes": []
},
"runtime_contract_audit": {
"status": "verified",
"actions": 58,
"contracts": 58,
"contract_module": "topolo.action-contracts.mjs",
"validator_sources": [
"apps/api/src/index.ts"
],
"authorization_sources": [
"apps/api/src/index.ts"
],
"findings": []
}
}
],
"mobile_contracts": [
{
"source_path": "apps/TopoloPay/topolo.mobile-experience.json",
"contract": {
"version": "2026-06-29",
"status": "approved",
"mode": "native_capability",
"appId": "app_topolo_pay",
"localizationNamespace": "pay",
"permissions": [
"transactions:read",
"customers:read",
"merchants:read"
],
"offlinePolicy": "read_through_cache",
"fallbackPath": "/transactions",
"auth": {
"audience": "topolo-pay",
"scopes": [
"transactions:read",
"customers:read",
"merchants:read"
]
},
"routes": [
{
"path": "/transactions",
"apiPath": "/api/admin/transactions",
"title": "Transactions",
"titleKey": "pay.transactions.title",
"template": "record.list",
"dataSource": "pay.transactions.list",
"detailRoute": "/transactions/:id"
},
{
"path": "/transactions/:id",
"apiPath": "/api/admin/transaction/:id",
"title": "Transactions",
"titleKey": "pay.transactions.title",
"template": "record.detail",
"dataSource": "pay.transactions.detail"
},
{
"path": "/customers",
"apiPath": "/api/admin/customers",
"title": "Customers",
"titleKey": "pay.shell.nav.customers",
"template": "record.list",
"dataSource": "pay.customers.list"
},
{
"path": "/merchants",
"apiPath": "/api/merchants",
"title": "Merchants",
"titleKey": "pay.shell.nav.merchants",
"template": "record.list",
"dataSource": "pay.merchants.list",
"detailRoute": "/merchants/:id"
},
{
"path": "/merchants/:id",
"apiPath": "/api/admin/merchants/:id",
"title": "Merchants",
"titleKey": "pay.shell.nav.merchants",
"template": "record.detail",
"dataSource": "pay.merchants.detail"
}
]
}
}
],
"package_manifests": [],
"deployment_configs": [],
"source_signals": {
"api_routes": [
{
"method": "POST",
"path": "/internal/platform/encryption/master-key/rewrap",
"source_path": "apps/TopoloPay/apps/api/src/index.ts"
},
{
"method": "POST",
"path": "/api/p2p/settlements",
"source_path": "apps/TopoloPay/apps/api/src/index.ts"
},
{
"method": "POST",
"path": "/api/p2p/settlements/:batchId/complete",
"source_path": "apps/TopoloPay/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "/api",
"source_path": "apps/TopoloPay/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "/success",
"source_path": "apps/TopoloPay/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "/cancel",
"source_path": "apps/TopoloPay/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "/payment/:sessionId/status",
"source_path": "apps/TopoloPay/apps/api/src/index.ts"
},
{
"method": "POST",
"path": "/order/:paymentId/cancel",
"source_path": "apps/TopoloPay/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "*",
"source_path": "apps/TopoloPay/apps/api/src/index.ts"
},
{
"method": "GET",
"path": "/api/admin/transactions",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/admin/transaction/:id",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/admin/analytics",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/admin/merchants",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/admin/merchants/:id",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/admin/customers",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/admin/customers/:email/history",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/admin/invoices",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/admin/invoices/:id/link",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/admin/audit",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "POST",
"path": "/api/admin/refund/:id",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "DELETE",
"path": "/api/pay/workspaces/:workspaceId",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/organizations/:organizationId/data",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "DELETE",
"path": "/api/organizations/:organizationId/data",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/organizations/:organizationId/data-protection",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/auth/me",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "ALL",
"path": "/api/auth/*",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/admin/export",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/health",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/api/widget",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "/auth/callback",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
},
{
"method": "GET",
"path": "*",
"source_path": "apps/TopoloPay/apps/api/src/routes/misc-routes.ts"
}
],
"ui_routes": [
{
"path": "/dashboard",
"source_path": "apps/TopoloPay/apps/web/src/App.tsx"
},
{
"path": "/transactions",
"source_path": "apps/TopoloPay/apps/web/src/App.tsx"
},
{
"path": "/analytics",
"source_path": "apps/TopoloPay/apps/web/src/App.tsx"
},
{
"path": "/customers",
"source_path": "apps/TopoloPay/apps/web/src/App.tsx"
},
{
"path": "/merchants",
"source_path": "apps/TopoloPay/apps/web/src/App.tsx"
},
{
"path": "/audit",
"source_path": "apps/TopoloPay/apps/web/src/App.tsx"
},
{
"path": "/getting-started",
"source_path": "apps/TopoloPay/apps/web/src/App.tsx"
},
{
"path": "/settings",
"source_path": "apps/TopoloPay/apps/web/src/App.tsx"
},
{
"path": "/settings/:section",
"source_path": "apps/TopoloPay/apps/web/src/App.tsx"
}
],
"test_cases": [],
"database_tables": []
},
"documentation": {
"declared_paths": [
"applications/pay",
"internal/apps/pay"
],
"present_paths": [
"applications/pay",
"internal/apps/pay"
],
"missing_paths": [],
"human_reference": "/systems/topolo-pay",
"machine_reference": "/machine/systems/topolo-pay.json",
"action_examples": 58,
"action_schemas": 58
},
"source_findings": [
{
"type": "uncatalogued_routes",
"source_path": "apps/TopoloPay/topolo.app.json",
"detail": [
{
"key": "POST /internal/platform/encryption/master-key/rewrap",
"method": "POST",
"path": "/internal/platform/encryption/master-key/rewrap",
"source": "apps/api/src/index.ts",
"target": "api"
}
]
}
]
}