Skip to main content
POST
Prepare an actor-bound managed-service plan review (browser session)

Authorizations

ankra_session
string
cookie
required

Browser session. Mutations also require X-Ankra-CSRF.

Body

application/json
package_version_id
string<uuid>
required
name
string
required
Required string length: 1 - 63
Pattern: ^[a-z][a-z0-9]*(-[a-z0-9]+)*$
mode
enum<string>
required
Available options:
hosted,
customer,
existing
region
string
required

Physical cloud region of the placement, for example eu-north-1. It locates infrastructure; it is not the data-location promise, which is data_boundary.

Required string length: 1 - 63
Pattern: ^[a-z][a-z0-9]*(-[a-z0-9]+)*$
data_boundary
string
required

Boundary the data is permitted to stay within, for example eu. Sharing a service across clusters is decided by this boundary, never by the physical region.

Required string length: 1 - 63
Pattern: ^[a-z][a-z0-9]*(-[a-z0-9]+)*$
cluster_id
string<uuid>
required

The service cluster for customer and existing modes. Hosted plans cannot be confirmed.

consumer_ids
string<uuid>[]
required

Customer-mode services can be deployed before connecting an application. Other modes require at least one consumer.

Maximum array length: 100
parameters
object
required
secret_references
object
required

Package secret input name to credential grant id. Values are never accepted.

Response

The stored review, its plan and digest; confirmation adds the execution receipt.

id
string<uuid>
required
package_version_id
string<uuid>
required
plan
object
required

The server-resolved plan (schema version 2): package digest, mode, location, service cluster, consumers with their policy and binding revisions, bounded parameters and opaque secret references. Never credential values. It is exactly the document the digest is taken over, so a planned consumer inside it keeps the stored nil UUID as installation_id; binding_kind says which case applies, and the consumer read reports the same absence as null.

digest
string
required
Pattern: ^sha256:[a-f0-9]{64}$
created_at
string<date-time>
required
execution_id
string<uuid> | null
required
confirmed_at
string<date-time> | null
required
capacity
object | null
required

Whether the service cluster can admit the service, as this prepare or confirm assessed it. It describes the cluster at that moment and is not part of the plan or its digest. Only playgrounds are checked, because the platform sets their quota. The service's footprint (for PostgreSQL, its instances and the CloudNativePG operator when the cluster does not run one) is compared with the plan's quota less what the tenant's pods commit now, with the playground LimitRange's defaults applied and the virtual control plane added. Job pods are reported as transient and left out of the decision. A playground that cannot admit the service is refused with 409, and the detail names the shortfall, the namespaces and stacks holding the quota, and what to do. Null when the response assessed nothing: a confirm that returned an existing receipt.