Argyle · API Governance Rules
Argyle API Rules
Spectral linting rules defining API design standards and conventions for Argyle.
0 Rules
Spectral Ruleset
aid: argyle-financial
name: Argyle API Conventions
description: >-
Operational and design conventions derived from the public Argyle API
surface (api.argyle.com/v2) and the docs.argyle.com developer area. Intended
as a Spectral-friendly ruleset capturing the provider's consumer-permissioned
posture, authentication model, identifier style, pagination, and webhook
contract.
rules:
- id: base-url-versioning
name: Versioned Base URL
description: >-
All endpoints live under https://api.argyle.com/v2 (production) or
https://api-sandbox.argyle.com/v2 (sandbox). The major version is part
of the path and must not be elided.
- id: http-basic-auth
name: HTTP Basic Auth With API Key Pair
description: >-
Authentication is HTTP Basic with the username set to api_key_id and the
password set to api_key_secret, both issued through Argyle Console.
Bearer tokens, OAuth, and session cookies are not used for server-side
calls.
- id: link-user-tokens
name: Short-Lived User Tokens For Client SDKs
description: >-
Web, iOS, Android, React Native, Flutter, and hosted Link surfaces must
be initialized with a short-lived user token obtained from
POST /v2/user-tokens — never with the api_key_secret.
- id: consumer-permissioned-data
name: Consumer-Permissioned Data Access
description: >-
Every account, paystub, identity, employment, gig, shift, and document
record returned by Argyle is sourced under explicit consumer permission
granted in the Link flow. Implementations must not store, redistribute,
or process this data outside the disclosed purpose.
- id: identifiers-uuid
name: UUID Identifiers
description: >-
Resource identifiers (user id, account id, paystub id, verification id,
report id) are UUIDs. Clients should treat them as opaque strings.
- id: pagination-cursor
name: Cursor-Style Pagination
description: >-
List endpoints paginate via limit and from_start_date / from_id style
parameters with a next-page indicator returned in the body. Clients must
follow the cursor until exhausted.
- id: rate-limit-50-rps
name: 50 Requests Per Second Default
description: >-
The platform allows 50 requests per second per integration. 429 responses
indicate throttling; clients must implement exponential backoff with
jitter and respect Retry-After when present.
- id: webhook-signing
name: Signed Webhook Deliveries
description: >-
Webhook deliveries are signed; consumers must verify the signature header
against the configured shared secret before processing the event payload.
- id: webhook-event-naming
name: Dotted Event Names
description: >-
Webhook event names follow a resource.action convention — for example
paystubs.added, accounts.connected, verifications.updated, and
reports.ready. Subscribers should match on the prefix to handle related
events.
- id: data-set-naming
name: Plural Resource Naming
description: >-
Collection endpoints are plural (/users, /paystubs, /verifications) and
singular resources nest by id (/users/{id}, /paystubs/{id}).
- id: sandbox-isolation
name: Sandbox Isolation
description: >-
Sandbox keys must not call the production host, and production keys must
not call the sandbox host. Synthetic users in sandbox emit the full
webhook event stream against a separate signing secret.
- id: pii-minimization
name: PII Minimization
description: >-
Identity, paystub, document, and bank-account responses carry sensitive
PII. Stored copies must be encrypted at rest, scoped by purpose, and
subject to the consumer's revocation through the Argyle dashboard.
maintainer:
name: Kin Lane
email: kin@apievangelist.com
modified: '2026-05-25'