Upsert the custom-shape policy at a scope.
curl --request PUT \ --url https://stratum.example.com/v1/admin/compute/custom-shape-policies/install/example \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "enabled": true, "minVcpus": 1, "maxVcpus": 1, "minMemoryMib": 1, "maxMemoryMib": 1, "alignmentMib": 1, "standardMinMibPerVcpu": 1, "standardMaxMibPerVcpu": 1, "extendedEnabled": true, "extendedMaxMibPerVcpu": 1 }'Sparse upsert body — every field is optional:
- field omitted → leave the existing value unchanged
- field present + value → set the override at this scope
- field present +
null→ clear the override (inherit from the parent scope at resolution time)
The install seed row carries Stratum’s GCP-shaped defaults
(1-64 vCPU, 1-512 GiB RAM, 256 MiB alignment, standard ratio
0.5-8 GiB/vCPU, extended disabled with a 64 GiB/vCPU cap).
enabled=false ships out-of-the-box; flip it at install
scope to enable custom shapes globally, or at a narrower
scope to enable per-region or per-project.
Cedar action: compute:UpdateCustomShapePolicy..
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Policy scope. Install policy is the install-wide default; region + project policies override it via the project -> region -> install precedence chain.
For scope=install, pass _ (the install scope has no id).
For scope=region, the region name. For scope=project,
the project ID.
Request Bodyrequired
Section titled “Request Bodyrequired”Sparse upsert body. Every field is optional; values follow the same three-state convention as the rest of the admin surface (omit / set / clear-via-null)..
object
Example generated
{ "enabled": true, "minVcpus": 1, "maxVcpus": 1, "minMemoryMib": 1, "maxMemoryMib": 1, "alignmentMib": 1, "standardMinMibPerVcpu": 1, "standardMaxMibPerVcpu": 1, "extendedEnabled": true, "extendedMaxMibPerVcpu": 1}Responses
Section titled “Responses”Policy row after the upsert.
The explicit compute.custom_shape_policy row at one of
install / region / project scopes.
Pointer-shaped fields are nullable so the operator can
distinguish “set at this scope” from “inherits from the
parent”..
object
Empty string for install scope; region name for region scope; project id for project scope.
User id of the last admin to write this scope row.
Example
{ "scope": "install"}Bad request.
object
The findings of a rejected IAM policy document (custom and resource policies).
One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.
object
The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.
Index of the statement at fault; -1 for the document as a whole.
The offending action, where one is at fault (ACTION_NOT_APPLICABLE).
Field errors, for codes that carry them: each problem at its field
(see FieldError). Documented on the responses that set it, e.g.
approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED.
Absent otherwise.
One field’s problem, the stage-2 installer API’s shape.
field is the field’s path, message what is wrong with it.
object
The field’s path, e.g. links[0].interface, disks[1].confirm,
mgmt.address or role; empty for the whole request.
Structured facts about the refusal, for codes that carry them. The
shape is fixed per code and documented on the response that answers
it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and
IMAGE_IN_USE. Absent for codes that carry none.
object
Example
{ "issues": [ { "code": "ACTION_NOT_APPLICABLE", "action": "compute:CreateVpc" } ]}Authenticated but not authorized.
object
The findings of a rejected IAM policy document (custom and resource policies).
One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.
object
The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.
Index of the statement at fault; -1 for the document as a whole.
The offending action, where one is at fault (ACTION_NOT_APPLICABLE).
Field errors, for codes that carry them: each problem at its field
(see FieldError). Documented on the responses that set it, e.g.
approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED.
Absent otherwise.
One field’s problem, the stage-2 installer API’s shape.
field is the field’s path, message what is wrong with it.
object
The field’s path, e.g. links[0].interface, disks[1].confirm,
mgmt.address or role; empty for the whole request.
Structured facts about the refusal, for codes that carry them. The
shape is fixed per code and documented on the response that answers
it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and
IMAGE_IN_USE. Absent for codes that carry none.
object
Example
{ "issues": [ { "code": "ACTION_NOT_APPLICABLE", "action": "compute:CreateVpc" } ]}