Preview — pending review
This reference is generated from the platform API contract and is still under review. Operations, fields, and descriptions can change before publication.
File a quota-increase request
Files a pending request to raise one quota dimension of the scope's subscription to
requestedLimit, for review by a platform operator. The current EFFECTIVE limit (configured
default overlaid with any operator override) is resolved server-side and recorded as
currentLimit. The record is returned 201; an approval later applies the granted limit to
the subscription.
Validation: quotaId must be a known quota id (e.g. q-vcpus) → else 404 NOT_FOUND;
requestedLimit must be an integer in 0..2147483647 and strictly greater than the current
effective limit (field requestedLimit); justification at most 1000 characters; unknown
properties are refused — every violation → 422 VALIDATION_FAILED.
RBAC: MANAGE on billing plus the billing:write token scope (a reader cannot file). A
tenant on non-payment hold is read-only → 403.
Async & state: Synchronous — 201 with the persisted QuotaIncreaseRequest in status
pending.
Errors: 401 unauthenticated; 403 caller lacks billing MANAGE / token scope, or tenant
on hold; 404 unknown scopeId or quotaId; 409 CONFLICT a request for the same quota is
already pending for this subscription (details.reason QUOTA_REQUEST_PENDING,
details.requestId); 422 invalid body; 500 internal failure.
Idempotency/Concurrency: No Idempotency-Key. At most one pending request per
(subscription, quota id): concurrent filings are serialised and the loser gets the 409.
bearerTokenAuthorizationBearer <token>An API token (pc_live_…) or a service-account key (sak_live_…), created in Identity & Access Management and sent as Authorization: Bearer <token>. Requests are rate limited per credential and per tenant: every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, and a refused request gets 429 RATE_LIMITED with Retry-After.
scopeId*stringOpaque ownership+authorization scope resolving to tenant + subscription + project.
application/json- body
Body of POST /scopes/{scopeId}/iam/quota-requests.
quotaId*stringThe quota id to raise (e.g. q-vcpus).
requestedLimit*integerThe new limit being requested, in the quota's unit; must exceed the current effective limit.
0 <= value <= 2147483647justification?|Why the increase is needed (shown to the operator); at most 1000 characters.
length <= 1000Request filed; the persisted pending request is returned.
application/json- response
A customer-filed quota-increase request (epic admin-portal#38), reviewed by a platform
operator who approves it (granting requestedLimit), approves it lower (granting a smaller
grantedLimit → partially_approved) or rejects it. Every property is always present.
id*stringRequest id (qr-…).
tenantId*stringTenant that filed the request.
scopeId*stringThe billing grain the quota keys on (the subscription id).
projectId*|Project (path scopeId) the request was filed from.
requesterId*stringPrincipal id of the requester.
requesterEmail*stringEmail the decision notification is sent to.
quotaId*stringQuota dimension to raise (e.g. q-vcpus).
resource*stringHuman label of the quota dimension (e.g. vCPUs).
currentLimit*integerThe effective limit when the request was filed, in the quota's unit.
requestedLimit*integerThe requested new limit, in the quota's unit.
grantedLimit*|The limit an operator granted; null until decided (and on a rejection).
justification*stringThe requester's justification; "" when none was given.
status*stringLifecycle state of the request.
"pending""approved""partially_approved""rejected"decisionNote*stringThe operator's note on the decision; "" when none.
decidedBy*|Operator who decided the request; null while pending.
decidedAt*|When the request was decided; null while pending.
date-timecreatedAt*stringWhen the request was filed.
date-timeupdatedAt*stringWhen the request last changed.
date-timecurl -X POST "https://example.com/scopes/string/iam/quota-requests" \ -H "Content-Type: application/json" \ -d '{ "quotaId": "string", "requestedLimit": 0 }'{ "id": "string", "tenantId": "string", "scopeId": "string", "projectId": "string", "requesterId": "string", "requesterEmail": "string", "quotaId": "string", "resource": "string", "currentLimit": 0, "requestedLimit": 0, "grantedLimit": 0, "justification": "string", "status": "pending", "decisionNote": "string", "decidedBy": "string", "decidedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z"}