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
{
"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
| scope | What it represents | Where to POST the answers |
|---|---|---|
| entity | Entity-level fields: name, business activities, source of funds, regulatory questions. | /entities/:id/csp-data |
| share_structure | BVI Limited only — define share classes before issuing shareholdings. | /entities/:id/share-classes |
| role:director, role:shareholder, role:member, role:supervisor, role:manager, role:ubo | A 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 withschema.idascsp_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, orcurrency_amount. Acurrency_amountfield must be submitted as{ "amount": number, "currency": "USD" }— both keys are required. Seeallowed_currenciesbelow for valid currency codes.allowed_currencies— present oncurrency_amountfields. 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 thecurrencykey.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 baseminimumwhen the named field equals the given value (e.g. Cayman Foundation forces ≥1 supervisor when memberless).provided_by_agent: true— EE auto-fills fromschema.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.
| Jurisdiction | Product | Type |
|---|---|---|
Panama panama | Panama Corporation (Sociedad Anónima) panama-corporation-sociedad-anonima | Corporation |
Belize belize | International Limited Liability Company (Belize) belize-international-llc | Corporation |
Cayman Islands caymans | Foundation Company (Caymans) caymans-foundation-company | Foundation |
Hong Kong hong-kong | Private Limited Company (HK) hk-limited-company | Corporation |
Nevis nevis | International Business Company (Nevis) nevis-ibc | Corporation |
Seychelles seychelles | International Business Company (Seychelles) seychelles-ibc | Corporation |
The Bahamas the-bahamas | International Business Company (Bahamas) bahamas-ibc | Corporation |
BVI bvi | BVI Limited Company bvi-limited-company | Corporation |
The Netherlands the-netherlands | Besloten Vennootschap besloten-vennootschap | Corporation |
USA usa | Delaware LLC delaware-llc | Corporation |
USA usa | Wyoming C-Corp wyoming-c-corp | Corporation |
USA usa | Delaware C-Corp delaware-c-corp | Corporation |
USA usa | Wyoming LLC wyoming-llc | Corporation |
Cayman Islands caymans | Exempted Limited Company exempted-limited-company | Corporation |
UAE uae | RAK ICC (Holding Company) rak-icc-holding | Corporation |
UAE uae | Meydan FZ (Commercial License) meydan-fz-commercial | Corporation |
USA usa | New York LLC new-york-llc | Corporation |
Ireland ireland | Irish Limited/Teoranta (Ltd/Teo) irish-limited | Corporation |
Curaçao curacao | Curaçao BV curacao-bv | Corporation |
Singapore singapore | Singapore Pte Ltd singapore-pte-ltd | Corporation |
Malta malta | Malta Ltd malta-ltd | Corporation |
Anjouan anjouan | Anjouan IBC anjouan-ibc | Corporation |
Cyprus cyprus | Cyprus Ltd cyprus-ltd | Corporation |
Spain spain | Spanish Sociedad Limitada (SL) spanish-sociedad-limitada-sl | Corporation |
USA usa | Florida LLC florida-llc | Corporation |
Call GET /catalog without filters to see all available combinations with their full schemas.
Endpoints
Filtering 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