Silverflow · OpenAPI Overlay 1.0.0
API Evangelist enrichment overlay for the Silverflow API
9 actions
9 updates
update
Generated by API Evangelist
Written by API Evangelist tooling for Silverflow's API. It is a proposal applied on top of the contract, not a document Silverflow publishes.
What the actions change
x-sourcex-reversal-ofx-windowx-on-window-expiryx-apievangelist-enrichmentx-runtime-semanticsx-actual-typex-modelling-note
Targets 9
$.info
$
$.components.securitySchemes.MutualTLS
$.paths['/charges/{chargeKey}/reverse'].post
$.paths['/charges/{chargeKey}/cancel'].post
$.paths['/charges/{chargeKey}/refund'].post
$.paths['/disputes/{disputeKey}/accept'].post
$.components.parameters.IdempotencyKey
$.components.schemas.isoFieldResponseCode
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enrichment overlay for the Silverflow API
version: 1.0.0
x-provenance:
generated: '2026-08-27'
method: generated
source: openapi/silverflow-openapi.yml
extends: openapi/silverflow-openapi.yml
note: >-
Non-destructive overlay carrying API Evangelist's enrichment findings back onto Silverflow's
published contract. It asserts nothing Silverflow does not already document — every action
below annotates an operation or component that exists in the spec, using facts sourced from
Silverflow's own guides. The original spec is never mutated. Applying this overlay is
optional; its purpose is to make runtime semantics (idempotency, reversibility, retry,
pagination) legible to a code generator or an agent that reads only the contract.
actions:
- target: $.info
description: Record the enrichment provenance and the runtime-semantics artifacts on the
document root.
update:
x-apievangelist-enrichment:
profiled: '2026-08-27'
conventions: conventions/silverflow-conventions.yml
errors: errors/silverflow-problem-types.yml
decline_codes: errors/silverflow-decline-codes.yml
lifecycle: lifecycle/silverflow-lifecycle.yml
events: asyncapi/silverflow-events-webhooks.yml
data_model: data-model/silverflow-data-model.yml
conformance: conformance/silverflow-conformance.yml
- target: $
description: Declare the cross-cutting runtime semantics Silverflow documents in prose but
does not express in the contract.
update:
x-runtime-semantics:
idempotency:
header: Idempotency-Key
retention_hours: 24
match_scope: full URL + byte-identical request body INCLUDING JSON attribute order
fails_open: true
source: https://docs.silverflow.com/guides/idempotency
conditional_updates:
header: If-Match
value: ETag response header or the object's `version` attribute
conflict_status: 412
source: https://docs.silverflow.com/guides/idempotency
pagination:
style: cursor
params: [limit, offsetToken, sortOrder]
limit_default: 10
limit_max: 100
terminator: absence of offsetToken in the response
source: https://docs.silverflow.com/guides/pagination
errors:
standard: RFC 7807
media_type: application/json
deviation: not application/problem+json
type_namespace: /silverflow/problems/
source: https://docs.silverflow.com/guides/error-handling
retry:
retriable_status_codes: [429, 502, 503, 504]
retry_after_header: Retry-After
source: https://docs.silverflow.com/guides/error-handling
events:
envelope: CloudEvents 1.0
delivery: at-least-once, unordered, thin payload
dedup_key: id
signature_verification: not documented
source: https://docs.silverflow.com/guides/event-notifications
- target: $.components.securitySchemes.MutualTLS
description: >-
Flag the mTLS scheme modelling defect. OpenAPI 3.0.3 has no `mutualTLS` type, so Silverflow
declared it as `type: apiKey, in: header, name: '-'`, which makes a generator emit a bogus
header parameter named '-'. Annotated rather than corrected, because rewriting the type
would break 3.0.3 validity.
update:
x-actual-type: mutualTLS
x-modelling-note: Declared as apiKey because OpenAPI 3.0.3 predates the mutualTLS scheme
type. Clients must not send a header named '-'; they must present an X.509 client
certificate at the TLS handshake.
x-upgrade-path: 'On a move to OpenAPI 3.1, replace with `type: mutualTLS`.'
- target: $.paths['/charges/{chargeKey}/reverse'].post
description: Record the reversal window so an agent can tell before calling whether this is
the right undo operation.
update:
x-reversal-of: authorization
x-window: while clearingMode = manual AND the charge is not yet cleared
x-on-window-expiry: use POST /charges/{chargeKey}/refund
x-source: https://docs.silverflow.com/guides/charge-actions
- target: $.paths['/charges/{chargeKey}/cancel'].post
description: Record the cancel window, including the one explicit clock-based boundary in the
charge surface.
update:
x-reversal-of: scheduled clearing + authorization
x-window: while clearingMode = auto AND the charge is not yet sent for clearing; where the
charge carries `clearAfter`, up until that timestamp
x-on-window-expiry: >-
HTTP 409 /silverflow/problems/charge/clearing-already-submitted; use
POST /charges/{chargeKey}/refund
x-source: https://docs.silverflow.com/guides/charge-actions
- target: $.paths['/charges/{chargeKey}/refund'].post
description: Record that the refund window is unbounded in Silverflow's own documentation.
update:
x-reversal-of: a cleared charge
x-window-stated: false
x-window-note: Silverflow publishes no maximum refund age; the card networks' own rules
apply and are not restated in the contract.
x-source: https://docs.silverflow.com/guides/charge-actions
- target: $.paths['/disputes/{disputeKey}/accept'].post
description: Mark the one-way door on the dispute surface.
update:
x-irreversible: true
x-warning: Accepting a dispute concedes the chargeback. There is no un-accept operation and
the terminal state is closedAccepted. Never call speculatively.
x-recoverable-alternative: POST /disputes/{disputeKey}/defend
- target: $.components.parameters.IdempotencyKey
description: Make the strict byte-match requirement visible at the parameter, not only in the
guide.
update:
x-retention-hours: 24
x-match-scope: full URL + byte-identical request body INCLUDING JSON attribute order
x-mismatch-response: '409 /silverflow/problems/idempotency/request-mismatch'
x-in-flight-response: '409 /silverflow/problems/idempotency/request-is-still-being-processed'
x-fails-open: Silverflow processes the request WITHOUT idempotency if its idempotency store
is unavailable, so this header is not an absolute exactly-once guarantee.
x-source: https://docs.silverflow.com/guides/idempotency
- target: $.components.schemas.isoFieldResponseCode
description: Name the standard the field belongs to, so a consumer knows whose registry
defines its values.
update:
x-standard: ISO 8583 field 39
x-registry-owner: the card network named in authorizationResponse.network — values differ
per network
x-documented-values: errors/silverflow-decline-codes.yml
Work with this as data
Every overlay here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/silverflow-openapi-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.