Webscale APIs
The Webscale v2 control-plane REST API. 151 operations across 25 resource collections — applications and web controls, address sets, URL maps, clusters, environments and stacks, servers, builders, monitors, metric prototypes, application and SSH logs, archived logs, files and file versions, secrets, tasks, templates, accounts, groups, roles, invitations, users, service users, SSH hosts and access keys. JSON over HTTPS with GET/POST/PATCH/DELETE semantics, href-addressable resources, an EBNF filter expression language, and offset pagination.
GET
/accounts
Read account collection
POST
/accounts
Create an account
GET
/accounts/{id}
Read an account
PATCH
/accounts/{id}
Update an account
DELETE
/accounts/{id}
Delete an account
GET
/accounts/{id}/group-invitations
Read group invitation collection
POST
/accounts/{id}/group-invitations
Create a group invitation
GET
/accounts/{id}/group-invitations/{invitation_id}
Read a group invitation
PATCH
/accounts/{id}/group-invitations/{invitation_id}
Update a group invitation
DELETE
/accounts/{id}/group-invitations/{invitation_id}
Delete a group invitation
GET
/accounts/{id}/groups
Read groups collection
POST
/accounts/{id}/groups
Create a group
GET
/accounts/{id}/groups/{group_id}
Read a group
PATCH
/accounts/{id}/groups/{group_id}
Update a group
DELETE
/accounts/{id}/groups/{group_id}
Delete a group
GET
/accounts/{id}/roles
Read role collection
POST
/accounts/{id}/roles
Create a role
GET
/accounts/{id}/roles/{role_id}
Read a role
PATCH
/accounts/{id}/roles/{role_id}
Update a role
DELETE
/accounts/{id}/roles/{role_id}
Delete a role
GET
/accounts/{id}/invitations
Read invitation collection
POST
/accounts/{id}/invitations
Create an invitation
GET
/accounts/{id}/invitations/{invitation_id}
Read an invitation
PATCH
/accounts/{id}/invitations/{invitation_id}
Update an invitation
DELETE
/accounts/{id}/invitations/{invitation_id}
Delete an invitation
GET
/accounts/{id}/service-users
Read service user collection
POST
/accounts/{id}/service-users
Create a service user
GET
/accounts/{account_id}/service-users/{id}
Read a service user
PATCH
/accounts/{account_id}/service-users/{id}
Update a service user
DELETE
/accounts/{account_id}/service-users/{id}
Delete a service user
GET
/address-sets
Read address set collection
POST
/address-sets
Create an address set
GET
/address-sets/{id}
Read an address set
PATCH
/address-sets/{id}
Update an address set
DELETE
/address-sets/{id}
Delete an address set
GET
/address-sets/{id}/addresses
Read addresses for an address set
GET
/address-sets/metrics
Read address set collection metrics
GET
/address-sets/{id}/metrics
Read address set metrics
DELETE
/tests/{id}
Delete a test configuration
GET
/applications
Read application collection
POST
/applications
Create an application
GET
/applications/{id}
Read an application
PATCH
/applications/{id}
Update an application
DELETE
/applications/{id}
Delete an application
GET
/applications/{id}/logs
Read application logs
POST
/applications/{id}/logs
Create application logs
GET
/applications/metrics
Read application collection metrics
GET
/applications/{id}/metrics
Read application metrics
GET
/applications/{app_id}/webcontrols
Read web controls
GET
/applications/{app_id}/webcontrols/{id}
Read a web control
GET
/archived-logs
List log status
GET
/archived-logs/{ref}
Download archived logs
DELETE
/archived-logs/{ref}
Delete archived logs
GET
/builders
Read builder collection
POST
/builders
Create a builder
GET
/builders/{id}
Read a builder
PATCH
/builders/{id}
Update a builder
DELETE
/builders/{id}
Delete a builder
GET
/clusters
Read cluster collection
POST
/clusters
Create a cluster
GET
/clusters/{id}
Read a cluster
PATCH
/clusters/{id}
Update a cluster
DELETE
/clusters/{id}
Delete a cluster
GET
/clusters/{id}/metrics
Read cluster metrics
GET
/clusters/metrics
Read cluster collection metrics
GET
/environments
Read environments collection
POST
/environments
Create an environment
GET
/environments/{id}
Read an environment
PATCH
/environments/{id}
Update an environment
DELETE
/environments/{id}
Delete an environment
GET
/files
Get all files
POST
/files
Create a file.
GET
/files/{id}
Get a file
PATCH
/files/{id}
Update a file
DELETE
/files/{id}
Delete a file
GET
/files/{id}/contents
Get a file contents
GET
/files/{id}/contents/{path}
Get contents of a file within a package
GET
/files/{id}/details
Gets all details.
GET
/files/{id}/versions/{version_id}
Gets properties of a particular version of a file.
GET
/files/{id}/versions/{version_id}/contents
Get contents of a file version
GET
/files/{id}/versions/{version_id}/contents/{path}
Get contents of a file version within a package.
DELETE
/labelers/{id}
Delete a labeler
GET
/log-schemas
Read log schemas
GET
/metric-prototypes
Read metric prototypes
POST
/metric-prototypes
Create a metric prototype
GET
/metric-prototypes/{id}
Read a metric prototype
DELETE
/metric-prototypes/{id}
Delete a metric prototype
GET
/monitors
Read monitors collection
POST
/monitors
Create a monitor
GET
/monitors/{id}
Read a monitor
PATCH
/monitors/{id}
Update a monitor
DELETE
/monitors/{id}
Delete a monitor
GET
/reports/{report_id}/sections/{section_id}
Read a test report section
DELETE
/resources/{id}
Delete a resource
GET
/secrets
Read secret collection
POST
/secrets
Create a secret
GET
/secrets/{id}
Read a secret
DELETE
/secrets/{id}
Delete a secret
GET
/servers
Read server collection
DELETE
/servers/{id}
Delete a server
POST
/servers/{id}/metrics
Create server metrics
GET
/ssh-hosts
Read SSH host collection
POST
/ssh-hosts
Create SSH host
GET
/ssh-hosts/{id}
Read SSH host
PATCH
/ssh-hosts/{id}
Update SSH Host
DELETE
/ssh-hosts/{id}
Delete SSH host
GET
/ssh-hosts/{id}/logs
Read SSH logs
GET
/stacks
Read stack collection
POST
/stacks
Create a stack
GET
/stacks/{id}
Read a stack
PATCH
/stacks/{id}
Update a stack
DELETE
/stacks/{id}
Delete a stack
GET
/tasks
Read task collection
POST
/tasks
Create a task
GET
/tasks/{id}
Read a task
GET
/tasks/{id}/logs
Read task logs
GET
/templates
Read template collection
POST
/templates
Create a template
GET
/templates/{id}
Read a template
PATCH
/templates/{id}
Update a template
DELETE
/templates/{id}
Delete a template
GET
/url-maps
Read URL map collection
POST
/url-maps
Create a URL map
GET
/url-maps/{id}
Read a URL map
PATCH
/url-maps/{id}
Update a URL map
DELETE
/url-maps/{id}
Delete a URL map
GET
/users
Read user collection
GET
/users/{id}
Read a user
PATCH
/users/{id}
Update a user
GET
/users/{id}/access-keys
Read access keys collection
POST
/users/{id}/access-keys
Create an access key
DELETE
/users/{user_id}/access-keys/{id}
Delete an access key
GET
/users/{id}/authorization
Read authorization
POST
/users/{id}/authorization
Create authorization
GET
/users/{id}/group-invitations
Read group invitations
GET
/users/{id}/group-invitations/{group-invitation-id}
Read a group invitation
PATCH
/users/{id}/group-invitations/{group-invitation-id}
Update a group invitation
GET
/users/{id}/groups
Read user group collection
GET
/users/{id}/groups/{group_id}
Read group membership
DELETE
/users/{id}/groups/{group_id}
Delete group membership
GET
/users/{id}/invitations
Read role invitations
GET
/users/{id}/invitations/{invitation_id}
Read a role invitation
PATCH
/users/{id}/invitations/{invitation_id}
Update a role invitation
GET
/users/{id}/roles
Read role membership collection
GET
/users/{id}/roles/{role_id}
Read role membership
DELETE
/users/{id}/roles/{role_id}
Delete role membership
GET
/users/{id}/ssh-public-keys
Read SSH public key collection
POST
/users/{id}/ssh-public-keys
Create an SSH public key
GET
/users/{id}/ssh-public-keys/{key_id}
Read an SSH public key
PATCH
/users/{id}/ssh-public-keys/{key_id}
Update an SSH public key
DELETE
/users/{id}/ssh-public-keys/{key_id}
Delete an SSH public key
Documentation
Specifications
Other Resources
Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.0.3",
"servers": [
{
"url": "https://api.webscale.com/v2"
}
],
"tags": [
{
"name": "Accounts",
"x-tag-expanded": false
},
{
"name": "Actions",
"x-tag-expanded": false
},
{
"name": "Address sets",
"x-tag-expanded": false
},
{
"name": "Applications",
"x-tag-expanded": false,
"description": "An application configures the Webscale service for a group of related\nwebsites.\n"
},
{
"name": "Application test",
"x-tag-expanded": false
},
{
"name": "Archived Logs",
"x-tag-expanded": false
},
{
"name": "Builders",
"x-tag-expanded": false
},
{
"name": "Clusters",
"x-tag-expanded": false
},
{
"name": "Data planes",
"x-tag-expanded": false
},
{
"name": "Entitlements",
"x-tag-expanded": false
},
{
"name": "Environments",
"x-tag-expanded": false
},
{
"name": "Events",
"x-tag-expanded": false
},
{
"name": "Files",
"x-tag-expanded": false
},
{
"name": "Filters",
"x-tag-expanded": false
},
{
"name": "Groups",
"x-tag-expanded": false
},
{
"name": "Handlers",
"x-tag-expanded": false
},
{
"name": "Labelers",
"x-tag-expanded": false
},
{
"name": "Logs",
"x-tag-expanded": false
},
{
"name": "Log schemas",
"x-tag-expanded": false
},
{
"name": "Metrics",
"x-tag-expanded": false
},
{
"name": "Monitors",
"x-tag-expanded": false
},
{
"name": "Plans",
"x-tag-expanded": false
},
{
"name": "Providers",
"x-tag-expanded": false
},
{
"name": "Reports",
"x-tag-expanded": false
},
{
"name": "Resources",
"x-tag-expanded": false
},
{
"name": "Roles",
"x-tag-expanded": false
},
{
"name": "Secrets",
"x-tag-expanded": false
},
{
"name": "Servers",
"x-tag-expanded": false
},
{
"name": "Services",
"x-tag-expanded": false
},
{
"name": "Status",
"x-tag-expanded": false
},
{
"name": "SSH Hosts",
"x-tag-expanded": false
},
{
"name": "SSH Public Keys",
"x-tag-expanded": false
},
{
"name": "Subscriptions",
"x-tag-expanded": false
},
{
"name": "Tasks",
"x-tag-expanded": false
},
{
"name": "Templates",
"x-tag-expanded": false
},
{
"name": "URL maps",
"x-tag-expanded": false
},
{
"name": "Users",
"x-tag-expanded": false
},
{
"name": "Service users",
"x-tag-expanded": false
}
],
"security": [
{
"access_key": [
]
}
],
"info": {
"title": "Webscale APIs",
"version": "2026.273",
"description": "The Webscale APIs allow programmatic access to the Webscale services.\nThe API is designed to be\n[RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer)\nand thus is accessed by making HTTP requests to resources addressed by their\nURL. Resources are primarily represented as JSON objects and are accessed\nusing the HTTP methods:\n\n| Method name | Meaning |\n| ------------| ------- |\n| GET | Get the representation of the resource state |\n| POST | Create a new resource |\n| PATCH | Partially update a resource |\n| DELETE | Delete a resource |\n\nObjects are arranged in collections and can also be addressed directly.\nFor example, the application collection addressed as `/v2/applications`\nmight contain a single application addressed as `/v2/applications/xyz`. To\ncreate a new object in the applications collection, a POST request is made\nto `/v2/applications`. Addressable resources include an `href` attribute\nthat specifies the URI of the object that can be used to get it, patch it,\nor delete it.\n\nFollowing are some of the commonly used object types and their descriptions.\n\n| Collection | Object type | Description |\n| ---------------- | ----------- | ----------- |\n| /v2/applications | Application | The primary service configuration for a web application |\n| /v2/address-sets | Address set | Maintains a set of IP addresses usually used to block or allow access |\n| /v2/url-maps | URL map | Collection of URL patterns redirected to other URLs |\n| /v2/events | Event | A record of an event related to the operation of the service or site |\n| /v2/reports | Report | Machine-readable reports providing resource usage history and test results |\n| /v2/secrets | Secret | Arbitrary store-only secrets that are used when configuring services requiring credentials |\n| /v2/files | File | Versioned file contents and metadata used for purposes such as Microsites and Handlers |\n| /v2/tasks | Task | An asynchronously executing process, used for a variety of purposes |\n| /v2/users | User | A person or service entity that has access to the API or console |\n| /v2/accounts | Account | The subscriber to the Webscale service |\n\n### Filter expression\n\nSome APIs accept a filter query that limits the resources that are returned.\nFilters follow the following\n[EBNF](https://en.wikipedia.org/wiki/Extended_Backus–Naur_form) syntax:\n\n```ebnf\n filter = filter, \"or\", filter | filter, \"and\", filter |\n \"(\", filter, \")\" | leaf-predicate\n leaf-predicate = attribute, rel-op, value |\n attribute, list-op, ( list-value | value ) |\n attribute, null-check-op\n attribute = word (* member of attributes given on construction *)\n value = string | word\n rel-op = \"=\" | \"!=\" | \"~\" | \"!~\" | \"<\" | \">\" | \"<=\" | \">=\" |\n \"contains\" | \"not contains\"\n list-op = \"in\" | ( \"not\", \"in\" ) ;\n list-value = \"(\", list, \")\"\n list = value, { \",\", list }\n null-check-op = ( \"is\", \"null\" ) | ( \"is\", \"not\", \"null\" )\n```\n\n### Value template<a name=\"value-template\"></a>\n\nSome web control attributes, such as the header value in the\n`set-request-header` action, accept templates that allow for value\nsubstitution from a set of pre-defined functions.\n\n| Expression | Description |\n| ---------- | ----------- |\n| $_n_ | References a numbered captures `$0`…`$9` from a matching `urls` condition |\n| $(cookie('_name_')) | The value of the specified cookie from `Cookie` header for the request |\n| $(country) | The country code associated with the IP address making the request |\n| $(header('_name_')) | The value of the named header for the request |\n| $(host) | Host from the request |\n| $(path) | Path from the request URL |\n| $(peer_address) | The IP address of the client or upstream server |\n| $(query) | Entire query from the request URL |\n| $(query('_key_'[,'_key_']…)) | A query string consisting of keys and values from the request, or an empty string if the request query contains none of the specified keys |\n| $(referrer) | The URL of the page that linked to the requested resource |\n| $(request_address) | The IP address of the client |\n| $(request_method) | The HTTP method used in the request |\n| $(request_protocol) | The protocol used for the request |\n| $(scheme) | Scheme from the request URL |\n| $(session_id) | A unique identifier assigned to a user’s session |\n\n\n\n#### URL matching\n\nWhen using a `urls` condition, matching process stops at the first URL object in\nits list that matches the request. Captured values, numbered `$1`…`$9` are set\nsequentially from left to right for each wildcard in the `scheme`, `domain`,\n`path`, and `query` attributes or for each capture group of the `regex`\nattribute of a matching URL object. When not using `regex` mode, any omitted\nURL object attributes are considered a single wildcard.\n\n##### Example: Capture example\n\nConsider a request with the URL `https://example.com/images/123.jpg` and a\ncondition configured as follows:\n\n```\n\"list\": [\n {\n \"path\": \"/media/*\"\n },\n {\n \"path\": \"/images/*\"\n },\n {\n \"path\": \"*\"\n }\n]\n```\n\nIn this case, the second URL object matches the request (`/images/*`), so the\nmatching stops there. The captures will be set to:\n\n| Capture | Value |\n| ------- | ----- |\n| `$1` | `http` |\n| `$2` | `example.com` |\n| `$3` | `123.jpg` |\n\nThe final URL condition object (`{ \"path\": \"*\" }`) is not evaluated because the\nsecond condition already matched the request.\n\n##### Example: Simplifying a URL query\n\nYou want to rewrite the URL to include only the `pid` and `v` query parameters,\npreserving the scheme, host, and path.\n\nHere is the JSON configuration for the rewrite-url action:\n\n```\n{\n \"type\": \"rewrite-url\",\n \"url\": \"$(scheme)://$(host)$(path)?$(query('pid','v'))\"\n}\n```\n\nConsider a request with the URL: `https://example.com/product/123?pid=456&ref=789&v=a`.\nThen the rewritten URL will be:\n\n```\nhttps://example.com/product/123?pid=456&v=a\n```\n"
},
"paths": {
"/accounts": {
"get": {
"summary": "Read account collection",
"description": "Will return all the account resources that the call is authorized to view.\n",
"tags": [
"Accounts"
],
"responses": {
"200": {
"description": "The call was successful.",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Account"
}
}
}
}
}
}
},
"post": {
"summary": "Create an account",
"description": "Creates a new account and returns the definition.",
"tags": [
"Accounts"
],
"parameters": [
],
"responses": {
"200": {
"description": "The call was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Account"
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccountPost",
"description": "The account definition."
}
}
}
}
}
},
"/accounts/{id}": {
"get": {
"summary": "Read an account",
"description": "Will return the account resource requested.\n",
"tags": [
"Accounts"
],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id."
}
}
],
"responses": {
"200": {
"description": "The call was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Account"
}
}
}
}
}
},
"patch": {
"summary": "Update an account",
"description": "",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id."
}
}
],
"tags": [
"Accounts"
],
"responses": {
"200": {
"description": "The account was successfully updated.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Account"
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccountPatch",
"description": "The account parameters to update."
}
}
}
}
},
"delete": {
"summary": "Delete an account",
"description": "Deletes the requested account.",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
}
],
"tags": [
"Accounts"
],
"responses": {
"200": {
"description": "The account was successfully deleted.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Account"
}
}
}
}
}
}
},
"/accounts/{id}/entitlements": {
},
"/accounts/{account_id}/entitlements/{id}": {
},
"/accounts/{id}/billing": {
},
"/accounts/{id}/group-invitations": {
"get": {
"summary": "Read group invitation collection",
"description": "Group invitations are used to invite a user to multiple roles at once",
"tags": [
"Groups"
],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
}
],
"responses": {
"200": {
"description": "The call was successful",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GroupInvitation"
}
}
}
}
}
}
},
"post": {
"summary": "Create a group invitation",
"description": "Invites a user to a group and returns the invitation",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
}
],
"tags": [
"Groups"
],
"responses": {
"200": {
"description": "The invitation was successfully sent.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInvitation"
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInvitationPost",
"description": "The invitation definition"
}
}
}
}
}
},
"/accounts/{id}/group-invitations/{invitation_id}": {
"get": {
"summary": "Read a group invitation",
"description": "Group invitations are used to invite a user to multiple roles at once",
"tags": [
"Groups"
],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
},
{
"name": "invitation_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Invitation id"
}
}
],
"responses": {
"200": {
"description": "The call was successful",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInvitation"
}
}
}
}
}
},
"patch": {
"summary": "Update a group invitation",
"description": "Reinvite the user to a group and return the invitation",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
},
{
"name": "invitation_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Invitation id"
}
}
],
"tags": [
"Groups"
],
"responses": {
"200": {
"description": "The group invitation was successfully updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInvitation"
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInvitationConfiguration",
"description": "The group invitation definition"
}
}
}
}
},
"delete": {
"summary": "Delete a group invitation",
"description": "Revoke a user's invitation to a group and return the invitation",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
},
{
"name": "invitation_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Invitation id"
}
}
],
"tags": [
"Groups"
],
"responses": {
"200": {
"description": "The invitation was successfully deleted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInvitation"
}
}
}
}
}
}
},
"/accounts/{id}/groups": {
"get": {
"summary": "Read groups collection",
"description": "Groups can be used to grant users many roles at once",
"tags": [
"Groups"
],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
}
],
"responses": {
"200": {
"description": "The call was successful",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Group"
}
}
}
}
}
}
},
"post": {
"summary": "Create a group",
"description": "Creates a new group and returns the definition",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
}
],
"tags": [
"Groups"
],
"responses": {
"200": {
"description": "The group was successfully created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Group"
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupConfigurationPost",
"description": "The group definition"
}
}
}
}
}
},
"/accounts/{id}/groups/{group_id}": {
"get": {
"summary": "Read a group",
"description": "Groups can be used to grant users many roles at once",
"tags": [
"Groups"
],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
},
{
"name": "group_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Group id"
}
}
],
"responses": {
"200": {
"description": "The call was successful",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Group"
}
}
}
}
}
},
"patch": {
"summary": "Update a group",
"description": "Updates the group and returns the updated definition",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
},
{
"name": "group_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Group id"
}
}
],
"tags": [
"Groups"
],
"responses": {
"200": {
"description": "The group was successfully updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Group"
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupConfiguration",
"description": "The group definition"
}
}
}
}
},
"delete": {
"summary": "Delete a group",
"description": "The group must belong to the account into which the user is authenticated",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
},
{
"name": "group_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Group id"
}
}
],
"tags": [
"Groups"
],
"responses": {
"200": {
"description": "The group was successfully deleted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Group"
}
}
}
}
}
}
},
"/accounts/{id}/roles": {
"get": {
"summary": "Read role collection",
"description": "Roles can be granted to users and used to limit access to account resources",
"tags": [
"Roles"
],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
}
],
"responses": {
"200": {
"description": "The call was successful",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Role"
}
}
}
}
}
}
},
"post": {
"summary": "Create a role",
"description": "Creates a new role and returns the definition",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
}
],
"tags": [
"Roles"
],
"responses": {
"200": {
"description": "The role was successfully created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Role"
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleConfigurationPost",
"description": "The role definition"
}
}
}
}
}
},
"/accounts/{id}/roles/{role_id}": {
"get": {
"summary": "Read a role",
"description": "Roles can be granted to users and used to limit access to account resources",
"tags": [
"Roles"
],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
},
{
"name": "role_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Role id"
}
}
],
"responses": {
"200": {
"description": "The call was successful",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Role"
}
}
}
}
}
},
"patch": {
"summary": "Update a role",
"description": "Updates the role and returns the updated definition",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
},
{
"name": "role_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Role id"
}
}
],
"tags": [
"Roles"
],
"responses": {
"200": {
"description": "The role was successfully updated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Role"
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleConfiguration",
"description": "The role definition"
}
}
}
}
},
"delete": {
"summary": "Delete a role",
"description": "The role must belong to the current account",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id."
}
},
{
"name": "role_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Role id"
}
}
],
"tags": [
"Roles"
],
"responses": {
"200": {
"description": "The role was successfully deleted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Role"
}
}
}
}
}
}
},
"/accounts/{id}/invitations": {
"get": {
"summary": "Read invitation collection",
"description": "Invitations are used to grant roles to users",
"tags": [
"Roles"
],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
}
],
"responses": {
"200": {
"description": "The call was successful",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RoleInvitation"
}
}
}
}
}
}
},
"post": {
"summary": "Create an invitation",
"description": "Creates a new invitation and returns the definition",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
}
],
"tags": [
"Roles"
],
"responses": {
"200": {
"description": "The invitation was successfully created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleInvitation"
}
}
}
}
},
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleInvitationPost",
"description": "The invitation definition"
}
}
}
}
}
},
"/accounts/{id}/invitations/{invitation_id}": {
"get": {
"summary": "Read an invitation",
"description": "Invitations are used to grant roles to users",
"tags": [
"Roles"
],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Account id"
}
},
{
"name": "invitation_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Invitation id"
}
}
],
"responses": {
"200": {
"description": "The call was successful",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RoleInvitation"
}
}
}
}
}
},
"patch": {
"summary": "Update an invitation",
"description": "Updates the invitation and returns the updated definition",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
# --- truncated at 32 KB (599 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/webscale-networks/refs/heads/main/openapi/webscale-networks-webscale-apis-openapi.json