{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/paidy/main/json-schema/token.json", "title": "Token", "description": "A Paidy recurring payment token used for subscription billing.", "type": "object", "properties": { "id": { "type": "string", "description": "Unique token ID (begins with tok_)", "pattern": "^tok_", "example": "tok_example123456" }, "merchant_id": { "type": "string", "description": "Paidy-assigned merchant ID (begins with mer_)", "pattern": "^mer_" }, "wallet_id": { "type": "string", "description": "Merchant wallet grouping identifier; defaults to 'default'", "default": "default" }, "status": { "type": "string", "description": "Current token status", "enum": ["active", "suspended", "deleted"] }, "origin": { "$ref": "#/$defs/ConsumerOrigin" }, "description": { "type": "string", "description": "Merchant-provided token description" }, "kind": { "type": "string", "description": "Token type; always 'recurring'", "enum": ["recurring"] }, "metadata": { "$ref": "#/$defs/Metadata" }, "consumer_id": { "type": "string", "description": "Paidy-generated consumer ID (begins with con_)", "pattern": "^con_" }, "suspensions": { "type": "array", "description": "History of suspensions", "items": { "$ref": "#/$defs/Suspension" } }, "test": { "type": "boolean", "description": "True if this is a test token" }, "version_nr": { "type": "number", "description": "Increments with each update" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "activated_at": { "type": "string", "format": "date-time" }, "deleted_at": { "type": ["string", "null"], "format": "date-time", "description": "Timestamp when deleted; null if still active or suspended" } }, "$defs": { "ConsumerOrigin": { "type": "object", "description": "Consumer information captured at token creation", "properties": { "name": {"type": "string"}, "email": {"type": "string", "format": "email"}, "phone": {"type": "string"}, "address": {"$ref": "#/$defs/Address"} } }, "Address": { "type": "object", "properties": { "line1": {"type": "string"}, "line2": {"type": "string"}, "city": {"type": "string"}, "state": {"type": "string"}, "zip": {"type": "string"} } }, "Suspension": { "type": "object", "description": "A suspension event record", "properties": { "created_at": {"type": "string", "format": "date-time"}, "authority": {"type": "string", "description": "Entity that performed the suspension"} } }, "Metadata": { "type": "object", "description": "Key-value map for arbitrary data; max 20 keys", "additionalProperties": {"type": "string"}, "maxProperties": 20 } } }