Menu
Platform
AI
App store purchases
Credits
Database
Flags
Generated Assets
Jobs and cron
Localization
Monitoring
Notifications
Payments
Sandboxes
Webhooks
Getting Started
Authentication
KV Store
Deploy & Infrastructure
Reference
Create an entitlement grant
Creates a manual entitlement grant (support, comp, grace).
Creates a manual entitlement grant (support, comp, grace). Append-only; needs the approval-class scope. The approver recorded is the key's principal.
- Path
POST https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/entitlement_grants - Scope
billing:credits.approve - Effect
write— a successful call changes state. - Collection entitlement_grants
- Query
entitlement_grant_id
#Request
| Field | Type | What it is |
|---|---|---|
parent | string | The environment the grant is in. Required. |
entitlement_grant_id | string | The grant's id, also its idempotency: ^[a-z]([a-z0-9_-]{0,61}[a-z0-9])?$. The same id with the same grant returns the stored one; the same id with another grant is RESOURCE_ALREADY_EXISTS. Required. |
entitlement_grant | EntitlementGrant | The grant: subject, feature, expire_time (future, at most 400 days out), campaign, reason and approval_ref are required. Required. |
#EntitlementGrant
| Field | Type | What it is |
|---|---|---|
name | string | orgs/{org}/projects/{project}/envs/{env}/entitlement_grants/{entitlement_grant}. |
meta | ResourceMeta | Resource metadata. |
subject | Subject | Who holds it. |
feature | string | The feature key. |
expire_time | timestamp | When it ends; unset for no end. |
campaign | string | A manual grant's campaign (input on create, up to 64 characters). |
reason | string | A manual grant's reason (input on create, up to 500 characters). |
approval_ref | string | A free-text reference to the approval, for example CEO 2026-10-02 (input on create, up to 200 characters). |
#ResourceMeta
| Field | Type | What it is |
|---|---|---|
labels | map<string, string> | Caller-writable, indexed labels (AIP-122 label rules). |
annotations | map<string, string> | Caller-writable, unindexed annotations. |
display_name | string | Caller-writable human-readable name. |
#Subject
| Field | Type | What it is |
|---|---|---|
end_user | string | An end user's id (Sylphx Auth, or the app's own OIDC issuer). One of the kind group. |
customer_organization | string | A customer organization's id. One of the kind group. |
#Response
| Field | Type | What it is |
|---|---|---|
name | string | orgs/{org}/projects/{project}/envs/{env}/entitlement_grants/{entitlement_grant}. |
uid | string | egr_<cell><ulid>; never reused. Output only. |
meta | ResourceMeta | Resource metadata. |
subject | Subject | Who holds it. |
feature | string | The feature key. |
limit | string | For a limit feature, the allowance as a decimal string. Output only. |
source | string | The resource that grants it, for example a customer subscription's name. Output only. |
expire_time | timestamp | When it ends; unset for no end. |
campaign | string | A manual grant's campaign (input on create, up to 64 characters). |
reason | string | A manual grant's reason (input on create, up to 500 characters). |
approval_ref | string | A free-text reference to the approval, for example CEO 2026-10-02 (input on create, up to 200 characters). |
approver | string | The principal that created a manual grant: the verified key's principal, never a request field. Output only. |
#ResourceMeta
| Field | Type | What it is |
|---|---|---|
generation | int64 | Increases by one on every change to spec. Output only. |
etag | string | Strong ETag (AIP-154): changes on any change to spec, status, or metadata. Send it back as If-Match or etag to make Update and Delete conditional; a mismatch fails with ABORTED / 409 ETAG_MISMATCH. Output only. |
create_time | timestamp | When the Resource was created. Output only. |
update_time | timestamp | When the Resource last changed. Output only. |
delete_time | timestamp | Set while the Resource is being deleted. Output only. |
labels | map<string, string> | Caller-writable, indexed labels (AIP-122 label rules). |
annotations | map<string, string> | Caller-writable, unindexed annotations. |
display_name | string | Caller-writable human-readable name. |
creator | string | The principal that created the Resource. Output only. |
#Subject
| Field | Type | What it is |
|---|---|---|
end_user | string | An end user's id (Sylphx Auth, or the app's own OIDC issuer). One of the kind group. |
customer_organization | string | A customer organization's id. One of the kind group. |
#Errors
UNAUTHENTICATED— No valid key or token was presented.PERMISSION_DENIED— The key lacks the method's permission.INVALID_FIELD— A field failed validation.UNKNOWN_FIELD— The request has a field the schema does not know.RESOURCE_ALREADY_EXISTS— A Resource with this name exists.
Every error arrives in the body Errors describes.
#Examples
curl -X POST "https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/entitlement_grants" \
-H "Authorization: Bearer $SYLPHX_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'