Developer portal
POST /tenant/integrations/cloud/{provider}
Create or update cloud integration credentials and connection settings.
PilotPOST /tenant/integrations/cloud/{provider}Auth: operator | admin
Summary
Create or update cloud integration credentials and connection settings.
Example
curl
curl -X POST "https://sparkling-vibrancy-production-1a7a.up.railway.app/tenant/integrations/cloud/{provider}" \
-H "Authorization: Bearer 811f31d4-5b8e-4ed0-a7a2-8176e05eba63" \
-H "Content-Type: application/json" \
-d '{
"region": "us-east-1",
"roleArn": "arn:aws:iam::123456789012:role/QtanglReadOnly"
}'Request body
| Field | Type | Required | Description |
|---|---|---|---|
| region | string | No | Cloud region. |
| vaultName | string | No | Azure Key Vault name. |
| roleArn | string | No | AWS IAM role ARN. |
| externalId | string | No | Optional external id for role assumption. |
| projectId | string | No | GCP project id. |
| credentialsJson | string | No | GCP credentials JSON string. |
| kubeconfigJson | string | No | Kubernetes kubeconfig content. |
| namespace | string | No | Kubernetes namespace filter. |
| context | string | No | Kubernetes context. |
| tenantId | string | No | Azure tenant id. |
| clientId | string | No | Azure client id. |
| clientSecret | string | No | Azure client secret. |
Response
| Field | Type | Required | Description |
|---|---|---|---|
| integration | object | Yes | Saved cloud integration row. |
Errors
| Code | Meaning | Typical cause | Suggested fix |
|---|---|---|---|
| 401 | Unauthorized | Missing or invalid API key in Authorization, x-api-key, or query param. | Send Bearer <key> or x-api-key with a valid tenant token. |
| 403 | Forbidden | Valid key but insufficient role (viewer attempting write) or wrong admin key. | Use operator or admin role key; check RBAC matrix. |
| 404 | Not found | Scan, schedule, share link, or resource id does not exist or expired. | Verify id and tenant scope; share links expire per expiresHours. |
| 422 | Unprocessable entity | Invalid payload shape, unsupported scenario, or infeasible constraints. | Fix field errors in response detail; relax constraints and retry. |
| 429 | Too many requests | Per-key rate limit exceeded (default 300 requests per minute) or public endpoint limit. | Backoff with jitter; cache results; request higher limit for production. |
| 500 | Internal server error | Unexpected backend failure; includes requestId in response. | Retry with exponential backoff; contact support with requestId if persistent. |
| 503 | Service unavailable | Persistence disabled, auth DB unreachable, or admin API not configured. | Retry shortly; schedules require Postgres persistence enabled. |
See the full errors reference.
Found an issue? Report documentation feedback