Apply for the functions closed beta
const url = 'https://api.deploybase.eu/api/v1/api/v1/team/functions-beta/apply';const options = { method: 'POST', headers: {Authorization: '<Authorization>', 'Content-Type': 'application/json'}, body: '{"terms_version":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.deploybase.eu/api/v1/api/v1/team/functions-beta/apply \ --header 'Authorization: <Authorization>' \ --header 'Content-Type: application/json' \ --data '{ "terms_version": "example" }'Records the team’s application and the terms version accepted, then notifies the platform team. Nothing is granted here: a platform admin enrols the team later, so the state moves from “eligible” to “applied”. The first application stands — a second one is a conflict, not an overwrite.
Authorizations
Section titled “ Authorizations ”Request Body
Section titled “ Request Body ”Accepted terms version
object
Example generated
{ "terms_version": "example"}Responses
Section titled “ Responses ”Created
object
object
object
InvitesOpen false means the closed beta is not taking applications yet: the dashboard hides the invite surfaces for teams in state “eligible” and the apply endpoint refuses. It says nothing about a team that is already applied or enrolled.
RequestedByIsMe lets the UI say “you applied” rather than naming a colleague we would otherwise have to resolve a Zitadel subject into.
TeamName is the label the apply form binds the acceptance to (“on behalf of
TermsVersion is always the CURRENT terms version — the one a client must echo back on apply — never the version the team accepted historically. A stale page therefore cannot silently re-accept old terms.
Example generated
{ "data": { "beta_open": true, "can_apply": true, "granted_at": "example", "invites_open": true, "prompt_eligible": true, "requested_at": "example", "requested_by_is_me": true, "state": "example", "team_name": "example", "terms_version": "example" }, "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Bad Request
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Unauthorized
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Forbidden
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Not Found
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Conflict
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Unprocessable Entity
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Internal Server Error
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Service Unavailable
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}