changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "anyOf": [
+ {
+ "description": "Response from `/get-card-data`. Three card types share this shape and each populates a different subset.\n\n**Non-reloadable (U.S. and International):** when `status` is `ready`, `card_details` carries the number, CVV, and expiry. International cards add `label`, `charged_usd_amount`, `fees_paid`, `state`, `balance_update_requested_timestamp`, and `queued_order_card_id`.\n\n**Reloadable:** returns `last4`, `expiry`, `balance`, `spend_limit`, `reusable`, `issuer_status`, `created_at`, and `expires_at` instead of the `usd_amount`/`timestamp` fields above. Reading its number and CVV is gated by the card issuer, so exactly one of `card_details`, `details_approval`, or `details_error` is present on a single-card lookup.",
+ "properties": {
+ "balance": {
+ "description": "Reloadable cards only. Spendable balance in dollars.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "balance_update_requested_timestamp": {
+ "description": "International cards only. Unix timestamp (ms) of an outstanding admin balance update request, or null if none is pending.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "card_details": {
+ "description": "Only present when status is `ready` (U.S.) or `complete` (international).",
+ "properties": {
+ "available_balance": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "billing_address": {
+ "description": "The card billing address to enter when a merchant asks for one at checkout. The billing name is always `Laso Finance`. For USA non-reloadable cards `required` is `false` (any valid U.S. billing address works; this is a known-good default). For international non-reloadable cards `required` is `true` and the merchant AVS check is validated against exactly this address. On reloadable cards this is always null: the card issuer holds no billing address for a card, and they are AVS-checked against the address the account holder gave at their own identity verification. Ask the holder for it; do not substitute Laso's address.",
+ "properties": {
+ "city": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "country": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "line_1": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "line_2": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "name": {
+ "description": "Always `Laso Finance`.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "note": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "required": {
+ "description": "`true` if the card enforces AVS against this exact address (international cards); `false` if any valid U.S. address works (USA cards).",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "state": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "zip": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "card_number": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "cvv": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "exp_month": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "exp_year": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "card_id": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "card_type": {
+ "description": "One of: Non-Reloadable U.S., Non-Reloadable International, Reloadable.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "charged_usd_amount": {
+ "description": "International cards only. Amount the user was charged including fees.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "country": {
+ "description": "U.S. cards only.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "created_at": {
+ "description": "Reloadable cards only. Epoch milliseconds.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "details_approval": {
+ "description": "Reloadable cards only, and only for a card the holder created in ANOTHER app. The issuer has emailed them an approve/deny link; retry with `approval_id` once they approve. Cards created through `/create-reloadable-card` are Laso-issued and never take this path.",
+ "properties": {
+ "approval_id": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "note": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "status": {
+ "description": "One of: pending.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "details_error": {
+ "description": "Reloadable cards only. Present when the issuer could not return the number, so a card with no `card_details` is never silently indistinguishable from one whose details are pending.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "expires_at": {
+ "description": "Reloadable cards only. Epoch milliseconds, or null when the card does not expire.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "expiry": {
+ "description": "Reloadable cards only. MM/YY.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fees_paid": {
+ "description": "International cards only. Fees paid for this card.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "issuer_status": {
+ "description": "Reloadable cards only. The issuer's own status string, kept verbatim.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "label": {
+ "description": "International cards only. User-supplied label, may be empty.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last4": {
+ "description": "Reloadable cards only. Last four digits.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last_updated_timestamp": {
+ "description": "U.S. cards only. Unix timestamp (ms) of the last time card data was refreshed.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "queued_order_card_id": {
+ "description": "International cards only. The original `card_id` returned by `/order-intl-card`. After admin fulfillment the card is reissued with a new `card_id` (the issuer's transaction id); querying `/get-card-data?card_id=<original>` continues to resolve to the fulfilled card via this field.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "reusable": {
+ "description": "Reloadable cards only. True for a multi-use card.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "spend_limit": {
+ "description": "Reloadable cards only. Spend cap in dollars.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "state": {
+ "description": "International cards only. Raw card state. One of: queued, redeemable, complete, refund-requested, refund-requested-approved-for-queue, archived, refunded.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "status": {
+ "description": "One of: pending, ready, queued, complete, refund-requested, refunded, archived.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "timestamp": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "timestamp_readable": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "transactions": {
+ "description": "Card transaction history. U.S. and international cards use slightly different shapes — see `CardTransaction` and `IntlCardTransaction`.",
+ "items": {
+ "anyOf": [
+ {
+ "description": "U.S. prepaid card transaction.",
+ "properties": {
+ "amount": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "date": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "is_credit": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ {
+ "description": "International prepaid card transaction.",
+ "properties": {
+ "amount": {
+ "description": "Transaction amount in USD.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "date": {
+ "description": "Unix timestamp (ms) of the transaction.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "merchant": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "status": {
+ "description": "Optional status, e.g. `pending`.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ]
+ },
+ "usd_amount": {
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cards": {
+ "items": {
+ "description": "Response from `/get-card-data`. Three card types share this shape and each populates a different subset.\n\n**Non-reloadable (U.S. and International):** when `status` is `ready`, `card_details` carries the number, CVV, and expiry. International cards add `label`, `charged_usd_amount`, `fees_paid`, `state`, `balance_update_requested_timestamp`, and `queued_order_card_id`.\n\n**Reloadable:** returns `last4`, `expiry`, `balance`, `spend_limit`, `reusable`, `issuer_status`, `created_at`, and `expires_at` instead of the `usd_amount`/`timestamp` fields above. Reading its number and CVV is gated by the card issuer, so exactly one of `card_details`, `details_approval`, or `details_error` is present on a single-card lookup.",
+ "properties": {
+ "balance": {
+ "description": "Reloadable cards only. Spendable balance in dollars.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "balance_update_requested_timestamp": {
+ "description": "International cards only. Unix timestamp (ms) of an outstanding admin balance update request, or null if none is pending.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "card_details": {
+ "description": "Only present when status is `ready` (U.S.) or `complete` (international).",
+ "properties": {
+ "available_balance": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "billing_address": {
+ "description": "The card billing address to enter when a merchant asks for one at checkout. The billing name is always `Laso Finance`. For USA non-reloadable cards `required` is `false` (any valid U.S. billing address works; this is a known-good default). For international non-reloadable cards `required` is `true` and the merchant AVS check is validated against exactly this address. On reloadable cards this is always null: the card issuer holds no billing address for a card, and they are AVS-checked against the address the account holder gave at their own identity verification. Ask the holder for it; do not substitute Laso's address.",
+ "properties": {
+ "city": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "country": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "line_1": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "line_2": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "name": {
+ "description": "Always `Laso Finance`.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "note": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "required": {
+ "description": "`true` if the card enforces AVS against this exact address (international cards); `false` if any valid U.S. address works (USA cards).",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "state": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "zip": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "card_number": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "cvv": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "exp_month": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "exp_year": {
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "card_id": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "card_type": {
+ "description": "One of: Non-Reloadable U.S., Non-Reloadable International, Reloadable.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "charged_usd_amount": {
+ "description": "International cards only. Amount the user was charged including fees.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "country": {
+ "description": "U.S. cards only.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "created_at": {
+ "description": "Reloadable cards only. Epoch milliseconds.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "details_approval": {
+ "description": "Reloadable cards only, and only for a card the holder created in ANOTHER app. The issuer has emailed them an approve/deny link; retry with `approval_id` once they approve. Cards created through `/create-reloadable-card` are Laso-issued and never take this path.",
+ "properties": {
+ "approval_id": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "note": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "status": {
+ "description": "One of: pending.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "details_error": {
+ "description": "Reloadable cards only. Present when the issuer could not return the number, so a card with no `card_details` is never silently indistinguishable from one whose details are pending.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "expires_at": {
+ "description": "Reloadable cards only. Epoch milliseconds, or null when the card does not expire.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "expiry": {
+ "description": "Reloadable cards only. MM/YY.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fees_paid": {
+ "description": "International cards only. Fees paid for this card.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "issuer_status": {
+ "description": "Reloadable cards only. The issuer's own status string, kept verbatim.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "label": {
+ "description": "International cards only. User-supplied label, may be empty.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last4": {
+ "description": "Reloadable cards only. Last four digits.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "last_updated_timestamp": {
+ "description": "U.S. cards only. Unix timestamp (ms) of the last time card data was refreshed.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "queued_order_card_id": {
+ "description": "International cards only. The original `card_id` returned by `/order-intl-card`. After admin fulfillment the card is reissued with a new `card_id` (the issuer's transaction id); querying `/get-card-data?card_id=<original>` continues to resolve to the fulfilled card via this field.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "reusable": {
+ "description": "Reloadable cards only. True for a multi-use card.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "spend_limit": {
+ "description": "Reloadable cards only. Spend cap in dollars.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "state": {
+ "description": "International cards only. Raw card state. One of: queued, redeemable, complete, refund-requested, refund-requested-approved-for-queue, archived, refunded.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "status": {
+ "description": "One of: pending, ready, queued, complete, refund-requested, refunded, archived.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "timestamp": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "timestamp_readable": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "transactions": {
+ "description": "Card transaction history. U.S. and international cards use slightly different shapes — see `CardTransaction` and `IntlCardTransaction`.",
+ "items": {
+ "anyOf": [
+ {
+ "description": "U.S. prepaid card transaction.",
+ "properties": {
+ "amount": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "date": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "is_credit": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ {
+ "description": "International prepaid card transaction.",
+ "properties": {
+ "amount": {
+ "description": "Transaction amount in USD.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "date": {
+ "description": "Unix timestamp (ms) of the transaction.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "merchant": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "status": {
+ "description": "Optional status, e.g. `pending`.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ]
+ },
+ "usd_amount": {
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ ],
+ "type": "object"
+}