Customer Portal Domain Administration
6 API calls in this section.
System admin endpoints to manage delivery customer portal custom domains across tenants.
List Customer Portal Domains
/system/delivery/customer-portal-domainsReturns paginated customer portal custom domain records across tenants.
Query parameters
| Parameter | Type | Description |
|---|---|---|
page | string | Example: |
limit | string | Example: |
status | string |
|
search | string | Search by custom domain or tenant name/slug |
language | string | Example: |
Headers
| Parameter | Type | Description |
|---|---|---|
Authorization | string | Example: |
1curl --globoff --request GET "https://staging-api.ondi.io/functions/v1/system/delivery/customer-portal-domains?page=1&limit=20&status=&search=&language=en" \2 --header "Authorization: Bearer ${ONDI_ACCESS_TOKEN}"Response examples
1{2 "success": true,3 "message": "Customer portal custom domains retrieved successfully",4 "data": {5 "items": [6 {7 "id": "domain-uuid",8 "tenant_id": "tenant-uuid",9 "custom_domain": "portal.tenant.com",10 "status": "active",11 "dns_verified_at": "2026-04-30T10:00:00Z",12 "tenant": {13 "id": "tenant-uuid",14 "slug": "tenant-one",15 "name": {16 "en": "Tenant One"17 }18 }19 }20 ],21 "pagination": {22 "page": 1,23 "limit": 20,24 "total": 1,25 "totalPages": 126 }27 }28}List Available Tenants For Domain Connection
/system/delivery/customer-portal-domains/available-tenantsLists tenants that do not have an active or pending customer portal custom domain.
Query parameters
| Parameter | Type | Description |
|---|---|---|
searchOptional | string | Optional tenant slug or name search |
language | string | Example: |
Headers
| Parameter | Type | Description |
|---|---|---|
Authorization | string | Example: |
1curl --globoff --request GET "https://staging-api.ondi.io/functions/v1/system/delivery/customer-portal-domains/available-tenants?search=&language=en" \2 --header "Authorization: Bearer ${ONDI_ACCESS_TOKEN}"Response examples
1{2 "success": true,3 "message": "Tenants retrieved successfully",4 "data": {5 "tenants": [6 {7 "id": "tenant-uuid",8 "slug": "tenant-one",9 "name": {10 "en": "Tenant One"11 }12 }13 ]14 }15}Get Tenant Customer Portal Domain
/system/delivery/:tenantId/customer-portal/custom-domainReturns the customer portal custom domain currently attached to the tenant.
Path parameters
| Parameter | Type | Description |
|---|---|---|
tenantIdRequired | string | Example: |
Query parameters
| Parameter | Type | Description |
|---|---|---|
language | string | Example: |
Headers
| Parameter | Type | Description |
|---|---|---|
Authorization | string | Example: |
1curl --globoff --request GET "https://staging-api.ondi.io/functions/v1/system/delivery/${TENANTID}/customer-portal/custom-domain?language=en" \2 --header "Authorization: Bearer ${ONDI_ACCESS_TOKEN}"Response examples
1{2 "success": true,3 "message": "Customer portal custom domain retrieved successfully",4 "data": {5 "custom_domain": {6 "id": "domain-uuid",7 "tenant_id": "tenant-uuid",8 "custom_domain": "portal.tenant.com",9 "status": "pending_dns"10 }11 }12}Connect Customer Portal Domain
/system/delivery/:tenantId/customer-portal/custom-domain/connectConnects a customer portal custom domain on behalf of a tenant from the system admin console.
Path parameters
| Parameter | Type | Description |
|---|---|---|
tenantIdRequired | string | Example: |
Query parameters
| Parameter | Type | Description |
|---|---|---|
language | string | Example: |
Headers
| Parameter | Type | Description |
|---|---|---|
Authorization | string | Example: |
Content-Type | string | Example: |
Body parameters
| Parameter | Type | Description |
|---|---|---|
custom_domain | string | — |
1curl --globoff --request POST "https://staging-api.ondi.io/functions/v1/system/delivery/${TENANTID}/customer-portal/custom-domain/connect?language=en" \2 --header "Authorization: Bearer ${ONDI_ACCESS_TOKEN}" \3 --header "Content-Type: application/json" \4 --data-raw '{5 "custom_domain": "portal.tenant.com"6}'Response examples
1{2 "success": true,3 "message": "Customer portal custom domain connected successfully",4 "data": {5 "custom_domain": {6 "id": "domain-uuid",7 "tenant_id": "tenant-uuid",8 "custom_domain": "portal.tenant.com",9 "status": "pending_dns"10 }11 }12}Verify Customer Portal Domain
/system/delivery/:tenantId/customer-portal/custom-domain/verifyRe-checks Vercel/DNS verification for the tenant's customer portal domain.
Path parameters
| Parameter | Type | Description |
|---|---|---|
tenantIdRequired | string | Example: |
Query parameters
| Parameter | Type | Description |
|---|---|---|
language | string | Example: |
Headers
| Parameter | Type | Description |
|---|---|---|
Authorization | string | Example: |
1curl --globoff --request POST "https://staging-api.ondi.io/functions/v1/system/delivery/${TENANTID}/customer-portal/custom-domain/verify?language=en" \2 --header "Authorization: Bearer ${ONDI_ACCESS_TOKEN}"Response examples
1{2 "success": true,3 "message": "Customer portal custom domain verified successfully",4 "data": {5 "verified": true,6 "custom_domain": {7 "id": "domain-uuid",8 "status": "active",9 "dns_verified_at": "2026-04-30T10:00:00Z"10 }11 }12}Disconnect Customer Portal Domain
/system/delivery/:tenantId/customer-portal/custom-domainDisconnects the tenant's customer portal custom domain (admin override).
Path parameters
| Parameter | Type | Description |
|---|---|---|
tenantIdRequired | string | Example: |
Query parameters
| Parameter | Type | Description |
|---|---|---|
language | string | Example: |
Headers
| Parameter | Type | Description |
|---|---|---|
Authorization | string | Example: |
1curl --globoff --request DELETE "https://staging-api.ondi.io/functions/v1/system/delivery/${TENANTID}/customer-portal/custom-domain?language=en" \2 --header "Authorization: Bearer ${ONDI_ACCESS_TOKEN}"Response examples
1{2 "success": true,3 "message": "Customer portal custom domain disconnected successfully",4 "data": {5 "custom_domain": {6 "id": "domain-uuid",7 "status": "archived",8 "disconnected_at": "2026-04-30T11:00:00Z"9 }10 }11}