Catalog API

Browse all available products and their requirements

The Catalog API is the starting point for everything else. Each catalog item carries the CSP form schema for that jurisdiction/product — a structured description of every field, role, conditional rule, and document slot needed to take an entity from creation to submission. The schema is the contract: render UI dynamically from it; never hardcode role lists or field names.

Tip: Use the jurisdiction_product_id from catalog results when creating entities via POST /entities, and the schema.id when posting CSP data.

Catalog Item Object

Catalog Item Object — Cayman Foundation example
{
  "jurisdiction_product_id": "aecf91da-50bf-4d7e-9de8-76b28b0a0ccc",
  "jurisdiction": {
    "id": "jur_cayman",
    "name": "Cayman Islands",
    "slug": "caymans",
    "iso_code": "KY",
    "region": "Caribbean"
  },
  "product": {
    "id": "prod_foundation",
    "name": "Foundation Company",
    "slug": "caymans-foundation-company",
    "type": "Foundation",
    "description": "Cayman Islands Foundation Company."
  },
  "price": { "one_off": 2500, "annual": 1200, "currency": "USD" },
  "schema": {
    "id": "e92ace31-51a6-4587-bf65-49d4ec5a7362",
    "csp_name": "Lumen Cayman",
    "form_name": "Foundation Company Application",
    "version": "1.0",
    "agent_address": {
      "street1": "PO Box 309, Ugland House",
      "city": "George Town",
      "country": "KY",
      "postcode": "KY1-1104"
    },
    "sections": [
      {
        "scope": "entity",
        "title": "Foundation details",
        "fields": [
          { "key": "name",              "canonical_field": "entity.name",       "label": "Foundation name",   "field_type": "text",     "required": true },
          { "key": "alternate_name",    "csp_field_key": "cayman.alternate_name","label": "Alternate name",    "field_type": "text",     "required": false },
          { "key": "purpose",           "csp_field_key": "foundation.purpose",  "label": "Purpose",           "field_type": "textarea", "required": true },
          { "key": "governance_structure", "canonical_field": "foundation.governance_structure", "label": "Governance structure", "field_type": "select", "required": true, "options": ["members_only", "supervisor_only", "members_and_supervisor"] },
          { "key": "registered_address","canonical_field": "entity.registered_address","label": "Registered office","field_type": "address","provided_by_agent": true }
        ]
      },
      {
        "scope": "role:director",
        "title": "Directors",
        "minimum": 1,
        "allows_corporate": true,
        "allows_foundation": true,
        "person_fields": [
          { "key": "first_name",     "canonical_field": "person.first_name",     "field_type": "text",        "required": true },
          { "key": "last_name",      "canonical_field": "person.last_name",      "field_type": "text",        "required": true },
          { "key": "dob",            "canonical_field": "person.date_of_birth", "field_type": "date",        "required": true },
          { "key": "nationalities",  "canonical_field": "person.nationalities", "field_type": "nationality", "required": true },
          { "key": "address",        "canonical_field": "person.residential_address", "field_type": "address", "required": true }
        ],
        "documents": {
          "person": [
            { "name": "Certified passport copy", "required": true },
            { "name": "Proof of address",        "required": true }
          ]
        }
      },
      {
        "scope": "role:member",
        "title": "Members",
        "minimum": 0,
        "depends_on": { "field": "foundation.governance_structure", "operator": "includes_any", "value": ["members_only", "members_and_supervisor"] }
      },
      {
        "scope": "role:supervisor",
        "title": "Supervisors",
        "minimum": 0,
        "conditional_min": { "field": "foundation.governance_structure", "value_in": ["supervisor_only", "members_and_supervisor"], "minimum": 1 },
        "allows_corporate": true,
        "person_fields": [
          { "key": "first_name", "canonical_field": "person.first_name", "field_type": "text", "required": true },
          { "key": "last_name",  "canonical_field": "person.last_name",  "field_type": "text", "required": true }
        ]
      }
    ]
  },
  "estimated_timeline": "2-3 weeks"
}

Schema-driven UI

The schema.sections[] array drives everything. Each section's scope tells you where the answers go.

Section scopes

scopeWhat it representsWhere to POST the answers
entityEntity-level fields: name, business activities, source of funds, regulatory questions./entities/:id/csp-data
share_structureBVI Limited only — define share classes before issuing shareholdings./entities/:id/share-classes
role:director, role:shareholder, role:member, role:supervisor, role:manager, role:uboA natural-person, corporate body, or foundation in that role. Per-section minimum, allows_corporate, allows_foundation govern allowed types.POST /entities/:id/parties with party_type: "person" | "corporate" | "foundation"

Field metadata

  • canonical_field — cross-product field (e.g. entity.name, person.first_name). Submit as the typed property on the entity/person POST.
  • csp_field_key — jurisdiction-prefixed CSP field (e.g. cayman.gnb_category, bvi.records_custodian_email, delaware.management_structure). Submit via the CSP data endpoints with schema.id as csp_form_schema_id.
  • field_type — text, textarea, select, multi_select, boolean, date, number, address, phone, nationality (array of ISO 3166-1 alpha-2 codes), share_class_ref, or currency_amount. A currency_amount field must be submitted as { "amount": number, "currency": "USD" } — both keys are required. See allowed_currencies below for valid currency codes.
  • allowed_currencies — present on currency_amount fields. An array of ISO 4217 codes the field accepts (e.g. ["USD"]). When the array has one entry the currency is fixed — pass that value verbatim in the currency key.
  • depends_on: { field, value } — show / require this field (or whole section) only when the named field equals the given value. Cascades across sections.
  • conditional_min: { field, value, minimum } — overrides a role section's base minimum when the named field equals the given value (e.g. Cayman Foundation forces ≥1 supervisor when memberless).
  • provided_by_agent: true — EE auto-fills from schema.agent_address. Do not prompt the user; display the agent value as confirmation.

Documents

Each role section has a documents object keyed by party type (person, entity,foundation). Each entry has a name (the slot label) and required bool. Pass the slot name verbatim as document_key when uploading. For party-scoped documents, also send scope=party + party_id.

Available Products

Use the jurisdiction and product slugs below to filter catalog results.

JurisdictionProductType
Panamapanama
Panama Corporation (Sociedad Anónima)panama-corporation-sociedad-anonima
Corporation
Belizebelize
International Limited Liability Company (Belize)belize-international-llc
Corporation
Cayman Islandscaymans
Foundation Company (Caymans)caymans-foundation-company
Foundation
Hong Konghong-kong
Private Limited Company (HK)hk-limited-company
Corporation
Nevisnevis
International Business Company (Nevis)nevis-ibc
Corporation
Seychellesseychelles
International Business Company (Seychelles)seychelles-ibc
Corporation
The Bahamasthe-bahamas
International Business Company (Bahamas)bahamas-ibc
Corporation
BVIbvi
BVI Limited Companybvi-limited-company
Corporation
The Netherlandsthe-netherlands
Besloten Vennootschapbesloten-vennootschap
Corporation
USAusa
Delaware LLCdelaware-llc
Corporation
USAusa
Wyoming C-Corpwyoming-c-corp
Corporation
USAusa
Delaware C-Corpdelaware-c-corp
Corporation
USAusa
Wyoming LLCwyoming-llc
Corporation
Cayman Islandscaymans
Exempted Limited Companyexempted-limited-company
Corporation
UAEuae
RAK ICC (Holding Company)rak-icc-holding
Corporation
UAEuae
Meydan FZ (Commercial License)meydan-fz-commercial
Corporation
USAusa
New York LLCnew-york-llc
Corporation
Irelandireland
Irish Limited/Teoranta (Ltd/Teo)irish-limited
Corporation
Curaçaocuracao
Curaçao BVcuracao-bv
Corporation
Singaporesingapore
Singapore Pte Ltdsingapore-pte-ltd
Corporation
Maltamalta
Malta Ltdmalta-ltd
Corporation
Anjouananjouan
Anjouan IBCanjouan-ibc
Corporation
Cypruscyprus
Cyprus Ltdcyprus-ltd
Corporation
Spainspain
Spanish Sociedad Limitada (SL)spanish-sociedad-limitada-sl
Corporation
USAusa
Florida LLCflorida-llc
Corporation

Call GET /catalog without filters to see all available combinations with their full schemas.

Endpoints

Filtering Examples

Filter Examples
# All products in a jurisdiction
GET /api/v1/catalog?jurisdiction=caymans

# All Foundations across jurisdictions
GET /api/v1/catalog?product_type=Foundation

# Specific jurisdiction + product type
GET /api/v1/catalog?jurisdiction=bvi&product_type=Corporation

# Resolve a single item by id
GET /api/v1/catalog?jurisdiction_product_id=be9a0966-794a-410f-95c4-a244d298b221