{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/easy2257-com/json-schema/easy2257-com-solo-account-response-schema.json",
  "title": "SoloAccountResponse",
  "x-generated": "2026-11-06",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/easy2257-com-openapi.yml#/components/schemas/SoloAccountResponse",
  "type": "object",
  "properties": {
    "accountId": {
      "type": "string"
    },
    "externalUserId": {
      "type": "string",
      "description": "The id you supplied at provisioning. Returned on reads so you can reconcile without a local join."
    },
    "status": {
      "type": "string",
      "enum": [
        "pending_id_verification",
        "subscribed_pending_id",
        "active",
        "suspended"
      ],
      "description": "The four values a partner can observe. `pending_id_verification`: not finished. This one value covers every pre-active state, including an emailed link request that has not been answered, so account existence and consent decisions are never observable through the API. `subscribed_pending_id`: paid, ID not yet verified. Still not uploadable. `active`: paid and ID verified. This is the only value that unlocks uploads. `suspended`: not in custody right now. Revoke upload access. `suspendReason` says why: the creator's own subscription lapsed, your platform fee lapsed, Easy2257 suspended them, or you deactivated them through `POST .../deactivate`."
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "onboardingUrl": {
      "type": "string",
      "format": "uri",
      "description": "Present while the account is still pending, and always currently valid: an expired token is rotated on read."
    },
    "verifiedAt": {
      "type": "string",
      "format": "date-time"
    },
    "suspendedAt": {
      "type": "string",
      "format": "date-time"
    },
    "suspendReason": {
      "type": "string",
      "description": "Why the account is `suspended`, absent otherwise. `subscription_lapsed`: the creator's own subscription ended; it clears when they pay again. `platform_lapsed`: your platform fee lapsed; it clears when the fee is paid. `partner_deactivated`: you deactivated the creator through `POST .../deactivate` or the portal roster; only `POST .../reactivate` clears it. `platform_deactivated` and `manual_suspension`: Easy2257 suspended the account; contact Easy2257."
    },
    "complianceStatementUrl": {
      "type": "string",
      "format": "uri",
      "description": "The creator's public 2257 statement. Present once the account is `active` and the creator has published the statement, absent otherwise, so the value is always a live page rather than a link that 404s. This is the page the platforms guide asks you to link from every content page carrying their content, which is also the only point at which you should be hosting that content."
    }
  },
  "required": [
    "accountId",
    "externalUserId",
    "status",
    "createdAt"
  ]
}