メインコンテンツへスキップ

bulk-provision-partner-tenants

dci bulk-provision-partner-tenants

Submits 1-499 tenant definitions as one async job. Responds 202 immediately with jobId and statusUrl. Poll that URL until the job finishes. Bulk uses tier/defaultTier instead of tenantType. Partners should not expect tenantType with this endpoint.

Request

Content-Type: application/json

Example

{
"tenants": [
{
"tenantName": "Acme Corp",
"adminEmail": "[email protected]",
"adminFirstName": "Jane",
"adminLastName": "Doe"
}
]
}

Schema

{
"type": "object",
"required": [
"tenants"
],
"properties": {
"defaultParentTenantId": {
"type": "string",
"description": "Optional fallback tenant ID applied to items that omit their own parentTenantId. If both parameters are omitted, the parent defaults to the organization ID extracted from the request's JWT."
},
"defaultTier": {
"type": "string",
"enum": [
"end_customer",
"reseller"
],
"description": "Optional fallback tier used when an item omits its own classification. The allowed values are end_customer and reseller, which carry the same functional meanings as the standard tenant type configurations."
},
"tenants": {
"type": "array",
"maxItems": 499,
"items": {
"type": "object",
"required": [
"tenantName",
"adminEmail"
],
"properties": {
"tenantName": {
"type": "string",
"description": "Required display name. Max 200 characters.",
"example": "Acme Corp"
},
"adminEmail": {
"type": "string",
"format": "email",
"description": "Required admin email.",
"example": "[email protected]"
},
"adminFirstName": {
"type": "string",
"description": "Optional first name. Max 200 characters.",
"example": "Jane"
},
"adminLastName": {
"type": "string",
"description": "Optional last name. Max 200 characters.",
"example": "Doe"
},
"adminJobFunction": {
"type": "string",
"description": "Optional console label. It must match exactly or validation fails.",
"example": "FinOps Practitioner"
},
"primaryDomain": {
"type": "string",
"description": "Optional. Omit or leave empty for no domain.",
"example": "acme.com"
},
"parentTenantId": {
"type": "string",
"description": "Per-item parent override. Overrides defaultParentTenantId."
},
"tier": {
"type": "string",
"enum": [
"end_customer",
"reseller"
]
}
}
}
}
}
}

Responses

202 (application/json)

Accepted - Bulk provisioning job created.

{
"type": "object",
"required": [
"jobId",
"statusUrl",
"message"
],
"properties": {
"jobId": {
"type": "string",
"description": "Unique ID of the created bulk job."
},
"statusUrl": {
"type": "string",
"format": "uri",
"description": "URL for GET /customers/v1/partners/tenants/bulk/{jobId}. Poll until status is completed, partial, or failed."
},
"message": {
"type": "string",
"description": "Human-readable confirmation.",
"example": "Bulk provisioning job accepted"
}
}
}

400 (application/json)

Bad Request - The server cannot process the request, often due to a malformed request.

{
"type": "object",
"description": "Standard error response structure.",
"properties": {
"error": {
"type": "string",
"description": "Detailed error message."
}
}
}

401 (application/json)

Unauthorized - Invalid API key.

{
"type": "object",
"description": "Standard error response structure.",
"properties": {
"error": {
"type": "string",
"description": "Detailed error message."
}
}
}

403 (application/json)

Forbidden - The client is not authorized to perform the request.

{
"type": "object",
"description": "Standard error response structure.",
"properties": {
"error": {
"type": "string",
"description": "Detailed error message."
}
}
}

Aliases: bulk-provision-partner-tenants, bulkprovisionpartnertenants