{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/if/main/json-schema/if-account-create-request-schema.json", "title": "AccountCreateRequest", "x-generated": "2026-10-14", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/if-account-api-openapi.yml#/components/schemas/AccountCreateRequest", "required": [ "connect", "data", "metadata", "workflow" ], "type": "object", "properties": { "workflow": { "$ref": "#/$defs/AccountCreateWorkflowContainer" }, "data": { "$ref": "#/$defs/AccountCreateDataContainer" }, "connect": { "$ref": "#/$defs/AccountCreateConnectContainer" }, "metadata": { "$ref": "#/$defs/AccountCreateMetadataContainer" } }, "$defs": { "Account": { "required": [ "accountHolderIdentityType", "clientId", "country", "currency", "id", "ledgerNumber", "mainAccountId", "routingCodes", "serviceProvider", "status" ], "type": "object", "properties": { "id": { "type": "string", "description": "id of account", "format": "uuid", "readOnly": true }, "clientId": { "type": "string", "description": "id of client", "format": "uuid" }, "status": { "$ref": "#/$defs/AccountStatus" }, "country": { "maxLength": 2, "minLength": 2, "type": "string", "description": "ISO 3166-1 alpha-2 country code", "readOnly": true }, "currency": { "maxLength": 3, "minLength": 3, "type": "string", "description": "ISO 4217 currency code" }, "alias": { "maxLength": 30, "type": "string", "description": "alias of account, refer to Accounts section in Guides for details" }, "routingCodes": { "$ref": "#/$defs/RoutingCodeMap" }, "iban": { "maxLength": 31, "minLength": 15, "pattern": "^[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{4}([a-zA-Z0-9]?){3,19}$|^[A-Z]{2}\\d{5}[0-9A-Z]{13}$", "type": [ "string", "null" ], "description": "iban assigned to account", "readOnly": true }, "accountNumber": { "maxLength": 20, "minLength": 8, "pattern": "^[0-9]{8,20}$", "type": [ "string", "null" ], "description": "account number assigned to account", "readOnly": true }, "accountHolderName": { "type": "string" }, "ledgerNumber": { "maxLength": 8, "minLength": 8, "pattern": "^[0-9]{8,8}$", "type": "string", "description": "unique ledger number of account generated internally", "readOnly": true }, "availableBalance": { "type": "number", "description": "available balance of account", "format": "double", "readOnly": true }, "receivableBalance": { "type": "number", "description": "receivable balance of account", "format": "double", "readOnly": true }, "payableBalance": { "type": "number", "description": "payable balance of account", "format": "double", "readOnly": true }, "accountHolderIdentityType": { "$ref": "#/$defs/LegalEntityType" }, "connection": { "$ref": "#/$defs/AccountConnectionResource" }, "serviceProvider": { "type": "string", "description": "service provider which this account connected to", "readOnly": true }, "mainAccountId": { "type": "string", "description": "the main account id which the given account is linked to", "format": "uuid", "readOnly": true }, "attributes": { "$ref": "#/$defs/AttributeMap" } } }, "AccountConnectionResource": { "type": "object", "properties": { "id": { "type": "string" }, "serviceProvider": { "type": "string" }, "reference": { "type": "string" }, "state": { "$ref": "#/$defs/ServiceProviderConnectionState" }, "status": { "$ref": "#/$defs/ThirdPartyAccountStatus" }, "method": { "$ref": "#/$defs/ConnectMethod" }, "error": { "$ref": "#/$defs/ConnectionErrorResource" } }, "description": "Account Connection Resource Object", "readOnly": true }, "AccountCreateConnectContainer": { "required": [ "type" ], "type": "object", "properties": { "type": { "type": "string", "description": "service provider selection type", "enum": [ "explicit" ] }, "serviceProvider": { "type": "string", "description": "account is connected to this service provider" }, "method": { "$ref": "#/$defs/ConnectMethod" } } }, "AccountCreateDataContainer": { "required": [ "account" ], "type": "object", "properties": { "account": { "$ref": "#/$defs/Account" }, "sourceId": { "type": "string", "description": "id of the account to be migrated, required if workflow is migration", "writeOnly": true } } }, "AccountCreateMetadataContainer": { "type": "object" }, "AccountCreateWorkflowContainer": { "required": [ "code" ], "type": "object", "properties": { "code": { "type": "string", "description": "workflow code", "enum": [ "client.issuing", "client.sub-account", "client.migration" ] } } }, "AccountStatus": { "type": "string", "description": "status of account", "readOnly": true, "enum": [ "pending", "active", "inactive", "suspended", "closed", "declined" ] }, "AttributeMap": { "type": "object", "description": "attributes of account" }, "ConnectMethod": { "type": "string", "enum": [ "built-in", "plug-in" ] }, "ConnectionErrorResource": { "type": "object", "properties": { "category": { "$ref": "#/$defs/ErrorCategory" }, "origin": { "$ref": "#/$defs/ErrorOrigin" }, "code": { "type": "string" }, "message": { "type": "string" }, "attributes": { "type": "object", "additionalProperties": { "type": "string" } } } }, "ErrorCategory": { "type": "string", "enum": [ "functional", "technical" ] }, "ErrorOrigin": { "type": "string", "enum": [ "customer", "platform", "provider" ] }, "LegalEntityType": { "type": "string", "description": "type of account holder client's identity", "readOnly": true, "enum": [ "corporate", "individual" ] }, "RoutingCodeMap": { "type": "object", "description": "routing codes of account as map, refer to Accounts section in Guides for details", "readOnly": true }, "ServiceProviderConnectionState": { "type": "string", "enum": [ "pending", "creation-in-progress", "update-in-progress", "dependency-completed", "completed-up-to-date", "completed-outdated", "dependency-failed", "creation-failed" ] }, "ThirdPartyAccountStatus": { "type": "string", "enum": [ "active", "inactive", "closed" ] } } }