Argyle · API Governance Rules

Argyle API Rules

Spectral linting rules defining API design standards and conventions for Argyle.

0 Rules
View Rules File View on GitHub

Spectral Ruleset

Raw ↑
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'