Skip to content

Close a request for a paid tier

PATCH
/v1/admin/tier-requests/{id}
curl --request PATCH \
--url https://beta-api.plune.ai/v1/admin/tier-requests/example \
--header 'Content-Type: application/json' \
--cookie plune_session=<plune_session> \
--data '{ "status": "done" }'

The operator closes an open request (#2121) without a grant: done (the tier is there by another way) or declined. A grant of the tier (POST /v1/admin/tier-grants) closes it as done by itself; this close grants nothing. A request closed already stays as it was closed (409 request_closed); the person may ask again, which is a new request. Written to the admin journal (admin_events) with the request and its new status, as every call at these doors is. Owner-only and session-only, as GET /v1/admin/tiers; everyone else gets 404, before the body is read. Ten calls a minute.

id
required
string
Media type application/json
object
status
required
string
Allowed values: done declined
Examples

Switched on by hand

{
"status": "done"
}

The request, closed

Media type application/json
object
request
required

A request for a paid tier (#2121), until payment is there. open waits for the operator; done once the tier was switched on by hand, declined otherwise.

object
id
required
string format: uuid
tier
required
string
Allowed values: personal team enterprise
subject
required
object
kind
required
string
Allowed values: user company
id
required
string
status
required
string
Allowed values: open done declined
createdAt
required
string format: date-time
Example
{
"request": {
"id": "6f1c2b3a-0000-4000-8000-0000000000f6",
"tier": "team",
"subject": {
"kind": "company",
"id": "6f1c2b3a-0000-4000-8000-0000000000a5"
},
"status": "done",
"createdAt": "2026-09-16T09:12:04.151Z"
}
}

Not JSON, or a status other than done and declined

Media type application/json
object
error
required
string
Example
{
"error": "validation failed — status: must be done or declined"
}

No / invalid session

The caller does not own the application — or there is no such request

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}

The request is closed already

Media type application/json
object
error
required
string
Example
{
"error": "this request is closed already",
"code": "request_closed"
}

Rate-limited: the per-route throttle, or the per-minute request limit of the plan an API token counts by (#1442; the body names the plan, #2092). Retry-After carries the seconds until the window rolls over.

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}
Retry-After
integer

Seconds until the window rolls over