{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/currencycloud/main/json-schema/currencycloud-form-with-associations-schema.json",
  "title": "form_with_associations",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/currencycloud-form-api-openapi.yml#/components/schemas/form_with_associations",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The form's UUID."
    },
    "detached_document_ids": {
      "type": "array",
      "description": "List of IDs for any uploaded supporting documents.",
      "items": {
        "type": "string"
      }
    },
    "affiliate_code": {
      "type": [
        "string",
        "null"
      ],
      "description": "Client's own use, e.g. to track lead source."
    },
    "agreed_to_marketing_emails": {
      "type": "boolean",
      "description": "Agreed to marketing emails."
    },
    "agreed_to_terms_and_conditions": {
      "type": "boolean",
      "description": "Agreed to terms and conditions."
    },
    "agreed_to_corporate_authority": {
      "type": "boolean",
      "description": "Confirmed authority to act on behalf of company."
    },
    "country": {
      "description": "Home country for individual applicants or country of registered address for corporate applicants. Two or three character ISO country code.",
      "type": "string"
    },
    "email": {
      "description": "The applicant's email address.",
      "type": "string"
    },
    "entity_type": {
      "type": "string",
      "description": "Type of applicant - individual or corporate."
    },
    "brand_name": {
      "type": "string"
    },
    "brand_key": {
      "type": "string"
    },
    "referred_by": {
      "description": "How did the applicant hear about us.",
      "type": [
        "string",
        "null"
      ]
    },
    "products_required": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "state": {
      "type": "string"
    },
    "phone_number": {
      "description": "The applicant's phone number.",
      "type": "string"
    },
    "contact_name": {
      "description": "The applicant's name.",
      "type": "string"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "Date and time the form was created."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Date and time the form was last updated."
    },
    "business_information": {
      "description": "Further information about corporate applicants.",
      "$ref": "#/$defs/business_information"
    },
    "account_usage": {
      "description": "Information about the intended use of the account.",
      "$ref": "#/$defs/account_usage"
    },
    "people": {
      "description": "Information about people associated with the application.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/person"
      }
    }
  },
  "required": [
    "id",
    "agreed_to_marketing_emails",
    "agreed_to_terms_and_conditions",
    "country",
    "entity_type",
    "brand_name",
    "products_required",
    "created_at",
    "updated_at"
  ],
  "$defs": {
    "account_usage": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "UUID for the Account Usage entity."
        },
        "form_id": {
          "type": "string",
          "description": "Form UUID"
        },
        "document_ids": {
          "type": "array",
          "description": "List of IDs for any uploaded supporting documents.",
          "items": {
            "type": "string"
          }
        },
        "collections_account": {
          "description": "Does the account receive funds from third parties.",
          "type": "boolean"
        },
        "collection_currencies": {
          "description": "List of currencies to fund the account with.",
          "type": "array",
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "payment_currencies": {
          "type": "array",
          "description": "List of payout currencies.",
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "transaction_countries": {
          "type": "array",
          "description": "List of countries that corporate accounts want to send/receive money to/from.",
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "one_off_transaction": {
          "type": "boolean",
          "description": "Will it be a single one-off transaction."
        },
        "estimated_monthly_transaction_currency": {
          "description": "Currency of the estimated monthly transaction value.",
          "type": [
            "string",
            "null"
          ]
        },
        "estimated_monthly_transaction_value": {
          "description": "Estimated monthly value of what a corporate account is going to transact on the platform.",
          "type": [
            "integer",
            "null"
          ]
        },
        "estimated_monthly_transaction_volume": {
          "description": "How often do corporates expect to send or receive funds.",
          "type": [
            "integer",
            "null"
          ]
        },
        "source_of_funds": {
          "description": "The source of money that will be sent through the platform.",
          "type": [
            "string",
            "null"
          ]
        },
        "primary_purpose": {
          "description": "The reason for opening an account with Currencycloud.",
          "type": [
            "string",
            "null"
          ]
        },
        "purpose_details": {
          "description": "Additional details if primary_purpose is 'other'.",
          "type": [
            "string",
            "null"
          ]
        },
        "created_at": {
          "description": "Date the Account Usage record created.",
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "description": "Date the Account Usage record was last updated.",
          "type": "string",
          "format": "date-time"
        }
      },
      "required": [
        "collections_account",
        "one_off_transaction"
      ]
    },
    "business_information": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique ID for the Business Information entity."
        },
        "form_id": {
          "type": "string",
          "description": "Form UUID"
        },
        "document_ids": {
          "type": "array",
          "description": "List of IDs for any uploaded supporting documents.",
          "items": {
            "type": "string"
          }
        },
        "business_country": {
          "description": "The country the business is registered in.",
          "type": "string"
        },
        "company_name": {
          "description": "The company name.",
          "type": "string"
        },
        "trading_name": {
          "description": "The company's trading name.",
          "type": [
            "string",
            "null"
          ]
        },
        "legal_entity_type": {
          "description": "Company's legal entity type e.g. \"limited_liability_company\"",
          "type": "string"
        },
        "sector": {
          "description": "The primary sector the company operates in.",
          "type": "string"
        },
        "company_registration_number": {
          "description": "An official number that identifies the company.",
          "type": [
            "string",
            "null"
          ]
        },
        "vat_number": {
          "description": "The company's VAT number or Tax ID  number.",
          "type": [
            "string",
            "null"
          ]
        },
        "incorporation_date": {
          "description": "The date the company was incorporated.",
          "type": "string",
          "format": "date"
        },
        "business_website": {
          "description": "The company's website URL or other online presence.",
          "type": [
            "string",
            "null"
          ]
        },
        "business_activity_description": {
          "description": "Description of the company's activities.",
          "type": "string"
        },
        "registered_address": {
          "description": "The company's registered address.",
          "type": "object",
          "properties": {
            "city": {
              "type": "string"
            },
            "street": {
              "type": "string"
            },
            "country": {
              "type": "string"
            },
            "postal_code": {
              "type": "string"
            },
            "apartment_number": {
              "type": [
                "string",
                "null"
              ]
            },
            "building_name": {
              "type": [
                "string",
                "null"
              ]
            },
            "building_number": {
              "type": [
                "string",
                "null"
              ]
            },
            "state_or_province": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "city",
            "street",
            "country",
            "postal_code"
          ]
        },
        "trading_address": {
          "type": "object",
          "properties": {
            "city": {
              "type": "string"
            },
            "street": {
              "type": "string"
            },
            "country": {
              "type": "string"
            },
            "postal_code": {
              "type": "string"
            },
            "apartment_number": {
              "type": [
                "string",
                "null"
              ]
            },
            "building_name": {
              "type": [
                "string",
                "null"
              ]
            },
            "building_number": {
              "type": [
                "string",
                "null"
              ]
            },
            "state_or_province": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "city",
            "street",
            "country",
            "postal_code"
          ]
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Date the Business Information record was created."
        },
        "updated_at": {
          "type": "string",
          "format": "date-time",
          "description": "Date the Business Information record was last updated."
        }
      },
      "required": [
        "business_country",
        "company_name",
        "legal_entity_type",
        "sector",
        "incorporation_date",
        "business_activity_description",
        "registered_address"
      ]
    },
    "person": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "form_id": {
          "type": "string"
        },
        "document_ids": {
          "type": "array",
          "description": "List of IDs for any uploaded supporting documents.",
          "items": {
            "type": "string"
          }
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "first_name": {
          "type": "string"
        },
        "middle_name": {
          "type": [
            "string",
            "null"
          ]
        },
        "last_name": {
          "type": "string"
        },
        "dob": {
          "type": [
            "string",
            "null"
          ],
          "format": "date"
        },
        "phone_number": {
          "type": [
            "string",
            "null"
          ]
        },
        "email": {
          "type": [
            "string",
            "null"
          ]
        },
        "ownership_percentage": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "id_number": {
          "type": [
            "string",
            "null"
          ]
        },
        "home_country": {
          "type": "string"
        },
        "passport_number": {
          "type": [
            "string",
            "null"
          ]
        },
        "passport_country_of_issue": {
          "type": [
            "string",
            "null"
          ]
        },
        "personal_address": {
          "type": "object",
          "properties": {
            "city": {
              "type": "string"
            },
            "street": {
              "type": "string"
            },
            "country": {
              "type": "string"
            },
            "postal_code": {
              "type": "string"
            },
            "apartment_number": {
              "type": [
                "string",
                "null"
              ]
            },
            "building_name": {
              "type": [
                "string",
                "null"
              ]
            },
            "building_number": {
              "type": [
                "string",
                "null"
              ]
            },
            "state_or_province": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        }
      },
      "required": [
        "id",
        "roles",
        "first_name",
        "last_name",
        "home_country"
      ]
    }
  }
}