DePix App · Schema

VerificationStatusResponse

Whether this account can use the merchant tools, and what is still missing if it cannot. Verification is independent of how much the account may receive — it never changes a limit.

CompanyPaymentsPixStablecoinsCryptocurrencyBitcoinLiquid NetworkBrazilMCP

Properties

Name Type Description
verified boolean True when the merchant tools are unlocked on this account.
verified_at stringnull When verification completed (RFC 3339 UTC, "YYYY-MM-DDTHH:MM:SS.sssZ"). Null while unverified.
whatsapp_verified integer 1 once the account has verified its WhatsApp number, 0 otherwise (raw SQLite boolean). It gates the first deposit — a human account must clear it in the app before verifying. Always 0 for an agent acc
method string Which proof applies to this account. `round_trip`: send money from a CPF/CNPJ to the account and withdraw it back to the SAME document. `domain`: prove control of a registrable domain by DNS TXT (agen
enabled boolean False when automatic verification is switched off platform-wide; contact support instead of retrying.
eligible boolean True when every requirement is satisfied and POST /api/verification would promote the account. A promotion still has to land: a suspended account never verifies.
requirements object What this account's proof requires. Null members do not apply to the account's method.
progress object What has been done so far. Amounts count only movements made after this feature went live.
remaining object How much is left on each requirement — zero when satisfied, null when it does not apply.
missing array Machine-readable list of what is blocking verification — empty when eligible. Branch on these instead of parsing prose.
unlocks array What verification unlocks on this account.
lbtc_fuel objectnull How much DePix to convert to L-BTC before withdrawing, and null when it does not apply (agent accounts). The Liquid network charges its transaction fee in L-BTC, so a wallet holding only DePix cannot
steps array The checklist IN THE ORDER THE ACCOUNT MUST ACT — render it as given and do not reorder or recompute it. `convert_lbtc` comes before `withdraw` because the withdrawal cannot be broadcast without netwo
View JSON Schema on GitHub

JSON Schema

depixapp-com-verification-status-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/depixapp-com/json-schema/depixapp-com-verification-status-response-schema.json",
  "title": "VerificationStatusResponse",
  "description": "Whether this account can use the merchant tools, and what is still missing if it cannot. Verification is independent of how much the account may receive — it never changes a limit.",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/depixapp-com-openapi.yml#/components/schemas/VerificationStatusResponse",
  "type": "object",
  "required": [
    "verified",
    "verified_at",
    "whatsapp_verified",
    "method",
    "enabled",
    "eligible",
    "requirements",
    "progress",
    "remaining",
    "missing",
    "unlocks",
    "lbtc_fuel",
    "steps"
  ],
  "additionalProperties": false,
  "properties": {
    "verified": {
      "type": "boolean",
      "description": "True when the merchant tools are unlocked on this account."
    },
    "verified_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When verification completed (RFC 3339 UTC, \"YYYY-MM-DDTHH:MM:SS.sssZ\"). Null while unverified."
    },
    "whatsapp_verified": {
      "type": "integer",
      "description": "1 once the account has verified its WhatsApp number, 0 otherwise (raw SQLite boolean). It gates the first deposit — a human account must clear it in the app before verifying. Always 0 for an agent account, which is exempt (it proves a domain instead).",
      "enum": [
        0,
        1
      ]
    },
    "method": {
      "type": "string",
      "description": "Which proof applies to this account. `round_trip`: send money from a CPF/CNPJ to the account and withdraw it back to the SAME document. `domain`: prove control of a registrable domain by DNS TXT (agent accounts — POST /api/agents/verify-domain).",
      "enum": [
        "round_trip",
        "domain"
      ]
    },
    "enabled": {
      "type": "boolean",
      "description": "False when automatic verification is switched off platform-wide; contact support instead of retrying."
    },
    "eligible": {
      "type": "boolean",
      "description": "True when every requirement is satisfied and POST /api/verification would promote the account. A promotion still has to land: a suspended account never verifies."
    },
    "requirements": {
      "type": "object",
      "description": "What this account's proof requires. Null members do not apply to the account's method.",
      "required": [
        "deposit_cents",
        "withdraw_cents",
        "min_account_age_days",
        "max_days_between_legs",
        "domain_proof"
      ],
      "additionalProperties": false,
      "properties": {
        "deposit_cents": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Minimum to receive from one document, in cents. Null on the domain method."
        },
        "withdraw_cents": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Minimum to withdraw back to that SAME document, in cents. Lower than deposit_cents because fees are deducted along the way. Null on the domain method."
        },
        "min_account_age_days": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Minimum account age in days. Null on the domain method. **0 means there is no age requirement at all** — the `account_age` step is then omitted from `steps` and never appears in `missing`. 0 is the value in force."
        },
        "max_days_between_legs": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Maximum days between the two movements — they must sit inside one window of this length. Null on the domain method."
        },
        "domain_proof": {
          "type": "boolean",
          "description": "True when a proven domain is what verifies this account."
        }
      }
    },
    "progress": {
      "type": "object",
      "description": "What has been done so far. Amounts count only movements made after this feature went live.",
      "required": [
        "account_age_days",
        "account_age_ok",
        "deposited_cents",
        "withdrawn_cents",
        "deposit_leg_ok",
        "withdraw_leg_ok",
        "tax_number",
        "tax_number_locked",
        "domain"
      ],
      "additionalProperties": false,
      "properties": {
        "account_age_days": {
          "type": "integer",
          "description": "Age of the account in whole days."
        },
        "account_age_ok": {
          "type": "boolean",
          "description": "True when the age requirement is satisfied."
        },
        "deposited_cents": {
          "type": "integer",
          "description": "Received from the best-matching document, in cents."
        },
        "withdrawn_cents": {
          "type": "integer",
          "description": "Withdrawn back to that same document, in cents."
        },
        "deposit_leg_ok": {
          "type": "boolean",
          "description": "True when the received side reaches its minimum."
        },
        "withdraw_leg_ok": {
          "type": "boolean",
          "description": "True when the withdrawn side reaches its minimum."
        },
        "tax_number": {
          "type": [
            "string",
            "null"
          ],
          "description": "The document being matched, MASKED (only the last digits are shown). Null when no document has been seen yet."
        },
        "tax_number_locked": {
          "type": "boolean",
          "description": "True once a document is permanently bound to this account. A document verifies exactly one account, so a bound one can never verify another."
        },
        "domain": {
          "type": [
            "string",
            "null"
          ],
          "description": "The proven domain, on the domain method. Null otherwise."
        }
      }
    },
    "remaining": {
      "type": "object",
      "description": "How much is left on each requirement — zero when satisfied, null when it does not apply.",
      "required": [
        "deposit_cents",
        "withdraw_cents",
        "account_age_days"
      ],
      "additionalProperties": false,
      "properties": {
        "deposit_cents": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Still to receive from one document, in cents."
        },
        "withdraw_cents": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Still to withdraw back to it, in cents."
        },
        "account_age_days": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Days the account still has to wait."
        }
      }
    },
    "missing": {
      "type": "array",
      "description": "Machine-readable list of what is blocking verification — empty when eligible. Branch on these instead of parsing prose.",
      "items": {
        "type": "string",
        "description": "`account_age`: the account is too young (never reported while `requirements.min_account_age_days` is 0). `deposit_leg`: not enough received from one document. `withdraw_leg`: not enough withdrawn back to it (also reported when both sides are met but too far apart in time). `domain_proof`: no proven domain yet. `account_blocked`: the account is suspended. `tax_number_in_use`: that document already verified another account. `verification_disabled`: automatic verification is switched off.",
        "enum": [
          "verification_disabled",
          "account_age",
          "deposit_leg",
          "withdraw_leg",
          "domain_proof",
          "account_blocked",
          "tax_number_in_use"
        ]
      }
    },
    "unlocks": {
      "type": "array",
      "description": "What verification unlocks on this account.",
      "items": {
        "type": "string",
        "description": "A capability name."
      }
    },
    "lbtc_fuel": {
      "type": [
        "object",
        "null"
      ],
      "description": "How much DePix to convert to L-BTC before withdrawing, and null when it does not apply (agent accounts). The Liquid network charges its transaction fee in L-BTC, so a wallet holding only DePix cannot move its own money — the most common reason a first withdrawal never leaves. This is GUIDANCE, not a requirement: it is absent from `requirements` and never affects `eligible`, because a non-custodial wallet's balance is not visible server-side.",
      "required": [
        "min_depix_cents",
        "balance_known",
        "sufficient"
      ],
      "additionalProperties": false,
      "properties": {
        "min_depix_cents": {
          "type": "integer",
          "description": "Minimum DePix to convert to L-BTC, in cents. Convert about this much — converting a lot more can leave too little DePix to complete the withdrawal step."
        },
        "balance_known": {
          "type": "boolean",
          "description": "Whether the server knows this account's L-BTC balance. Always false: the wallet is non-custodial and no balance is reported to the server. Determine it in the wallet."
        },
        "sufficient": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether the account already holds enough L-BTC. Always null, for the reason in balance_known — treat null as \"unknown\", never as \"no\"."
        }
      }
    },
    "steps": {
      "type": "array",
      "description": "The checklist IN THE ORDER THE ACCOUNT MUST ACT — render it as given and do not reorder or recompute it. `convert_lbtc` comes before `withdraw` because the withdrawal cannot be broadcast without network fuel. Amounts and days are pre-computed per step so the client never restates the rule.",
      "items": {
        "type": "object",
        "description": "One step of the checklist.",
        "required": [
          "id",
          "state",
          "target_cents",
          "remaining_cents",
          "target_days",
          "remaining_days"
        ],
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "description": "`deposit`: receive from your own CPF/CNPJ. `convert_lbtc`: convert a little DePix to L-BTC for the network fee. `withdraw`: send DePix back to the same document. `account_age`: the account also has to be old enough — PRESENT ONLY when `requirements.min_account_age_days` > 0, which it is not today. `domain_proof`: agent accounts — replaces all of the above. Render the list as given; a step that is absent is not a requirement.",
            "enum": [
              "deposit",
              "convert_lbtc",
              "withdraw",
              "account_age",
              "domain_proof"
            ]
          },
          "state": {
            "type": "string",
            "description": "`done`, `pending`, or `unknown` — `unknown` means the server genuinely cannot tell (the L-BTC step, since no wallet balance reaches it) and the client must resolve it locally. Never render `unknown` as a failure.",
            "enum": [
              "done",
              "pending",
              "unknown"
            ]
          },
          "target_cents": {
            "type": [
              "integer",
              "null"
            ],
            "description": "What this step asks for, in cents. Null when the step is not about an amount."
          },
          "remaining_cents": {
            "type": [
              "integer",
              "null"
            ],
            "description": "How much of that is left, in cents. Null when the step is not about an amount, or when the server cannot know."
          },
          "target_days": {
            "type": [
              "integer",
              "null"
            ],
            "description": "What this step asks for, in days. Null when the step is not about time."
          },
          "remaining_days": {
            "type": [
              "integer",
              "null"
            ],
            "description": "How many days are left. Null when the step is not about time."
          }
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema 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 schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema 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.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/depixapp-com-verification-status-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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.