{ "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\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": { "type": "string", "description": "Account id" } }, { "name": "invitation_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Invitation id" } } ], "tags": [ "Roles" ], "responses": { "200": { "description": "The role was successfully updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleInvitation" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleInvitationConfiguration", "description": "The invitation definition" } } } } }, "delete": { "summary": "Delete an invitation", "description": "The invitation must belong to the current account", "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": [ "Roles" ], "responses": { "200": { "description": "The invitation was successfully deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleInvitation" } } } } } } }, "/accounts/{id}/service-users": { "get": { "summary": "Read service user collection", "description": "Service users are used to permit or deny access to specific APIs.", "tags": [ "Service users" ], "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/ServiceUser" } } } } } } }, "post": { "summary": "Create a service user", "description": "Creates a new service user and returns the definition.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Account id" } } ], "tags": [ "Service users" ], "responses": { "200": { "description": "The service user was successfully created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceUser" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceUserConfiguration", "description": "The service user definition" } } } } } }, "/accounts/{account_id}/service-users/{id}": { "get": { "summary": "Read a service user", "description": "Service users are used to allow access to specific APIs.", "tags": [ "Service users" ], "parameters": [ { "name": "account_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Account id" } }, { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } } ], "responses": { "200": { "description": "The call was successful", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceUser" } } } } } }, "patch": { "summary": "Update a service user", "description": "Updates the service user and returns the updated definition.", "parameters": [ { "name": "account_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Account id" } }, { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } } ], "tags": [ "Service users" ], "responses": { "200": { "description": "The service user was successfully updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceUser" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceUserConfiguration", "description": "The service user definition" } } } } }, "delete": { "summary": "Delete a service user", "description": "Deletes a service user.", "parameters": [ { "name": "account_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Account id." } }, { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } } ], "tags": [ "Service users" ], "responses": { "200": { "description": "The service user was successfully deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceUser" } } } } } } }, "/address-sets": { "get": { "summary": "Read address set collection", "description": "Returns all the address sets associated with the caller's account.", "tags": [ "Address sets" ], "responses": { "200": { "description": "The address sets were successfully retrieved.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AddressSet" } } } } } } }, "post": { "summary": "Create an address set", "description": "Creates a new address set and returns the definition", "parameters": [ ], "tags": [ "Address sets" ], "responses": { "200": { "description": "The address sets was successfully created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddressSet" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddressSetPost", "description": "The address set definition" } } } } } }, "/address-sets/{id}": { "get": { "summary": "Read an address set", "description": "Retrieves an address set definition", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Address set id" } } ], "tags": [ "Address sets" ], "responses": { "200": { "description": "The address set was successfully retrieved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddressSet" } } } } } }, "patch": { "summary": "Update an address set", "description": "Updates the address set and returns the updated definition", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Address set id" } } ], "tags": [ "Address sets" ], "responses": { "200": { "description": "The address sets was successfully updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddressSet" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddressSetPatch", "description": "The address set definition" } } } } }, "delete": { "summary": "Delete an address set", "description": "The address must belong to the current account", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Address set id" } } ], "tags": [ "Address sets" ], "responses": { "200": { "description": "The address set was successfully deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddressSet" } } } } } } }, "/address-sets/{id}/addresses": { "get": { "summary": "Read addresses for an address set", "description": "Retrieves all address entries contained within the address set. Includes addresses from any and all included sets", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Address set id" } } ], "tags": [ "Address sets" ], "responses": { "200": { "description": "The call was successful", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AddressSetEntry" } } } } } } } }, "/address-sets/metrics": { "get": { "summary": "Read address set collection metrics", "description": "Returns requested metrics for all address sets for the current account.\n", "tags": [ "Address sets", "Metrics" ], "parameters": [ { "name": "names", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string" }, "description": "A comma separated list of metrics names. Allowed metric names: entries_added, entries_extended, entries_expired, entries_deleted" } }, { "$ref": "#/components/parameters/from", "schema": { } }, { "$ref": "#/components/parameters/to", "schema": { } }, { "$ref": "#/components/parameters/resolution", "schema": { } }, { "$ref": "#/components/parameters/summarize", "schema": { } } ], "responses": { "200": { "description": "Metrics for the address set have been returned successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Metrics" } } } } } } }, "/address-sets/{id}/metrics": { "get": { "summary": "Read address set metrics", "description": "Returns requested metrics for a single address set.\n", "tags": [ "Address sets", "Metrics" ], "parameters": [ { "name": "names", "in": "query", "required": true, "schema": { "type": "array", "items": { "type": "string" }, "description": "A comma separated list of metrics names. Allowed metric names:\nentries_added, entries_extended, entries_expired, entries_deleted\n" } }, { "$ref": "#/components/parameters/from", "schema": { } }, { "$ref": "#/components/parameters/to", "schema": { } }, { "$ref": "#/components/parameters/resolution", "schema": { } }, { "$ref": "#/components/parameters/summarize", "schema": { } } ], "responses": { "200": { "description": "Metrics for the address set have been returned successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Metrics" } } } } } } }, "/tests": { }, "/tests/{id}": { "delete": { "summary": "Delete a test configuration", "parameters": [ { "$ref": "#/components/parameters/id", "schema": { } } ], "tags": [ "Application test" ], "responses": { "200": { "description": "The test was successfully deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationTest" } } } } } } }, "/applications": { "get": { "summary": "Read application collection", "description": "Will return all the application resources that the caller is authorized to view.\n", "tags": [ "Applications" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Application" } } } } } } }, "post": { "summary": "Create an application", "description": "", "parameters": [ ], "tags": [ "Applications" ], "responses": { "200": { "description": "The application was successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Application" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationPost", "description": "The application definition." } } } } } }, "/applications/{id}": { "get": { "summary": "Read an application", "description": "Retrieve an application resource.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Application id." } } ], "tags": [ "Applications" ], "responses": { "200": { "description": "The application was successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Application" } } } } } }, "patch": { "summary": "Update an application", "description": "", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Application id." } } ], "tags": [ "Applications" ], "responses": { "200": { "description": "The application was successfully updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Application" } } } }, "201": { "description": "A task was created to patch the application.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Task" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationPatch", "description": "The application definition." } } } } }, "delete": { "summary": "Delete an application", "description": "An application must be in the stopped state to be deleted.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Application id." } } ], "tags": [ "Applications" ], "responses": { "200": { "description": "The call application was successfully deleted.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Application" } } } } } } }, "/applications/{app_id}/actions": { }, "/applications/{app_id}/actions/{action_id}": { }, "/applications/{id}/logs": { "get": { "summary": "Read application logs", "description": "Returns an endpoint for the requested application logs.\n", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Application id." } }, { "$ref": "#/components/parameters/log-type" }, { "$ref": "#/components/parameters/from" }, { "$ref": "#/components/parameters/to" }, { "$ref": "#/components/parameters/format" }, { "name": "select", "in": "query", "description": "A comma-separated sequence of attribute names to be returned in the result\nin the same order. To obtain a list of fields, use the\n[GET /log-schemas](#get-/log-schemas) API.\n", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/filter" }, { "$ref": "#/components/parameters/start" }, { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/order" }, { "$ref": "#/components/parameters/groupby" }, { "$ref": "#/components/parameters/groupfilters" }, { "$ref": "#/components/parameters/grouplimit" }, { "$ref": "#/components/parameters/groupselect" }, { "$ref": "#/components/parameters/grouporder" } ], "tags": [ "Logs" ], "responses": { "200": { "description": "A CSV or a JSON document containing the application access logs. The fields included in the response depend on the parameters specified in the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationLog" } }, "text/csv": { "schema": { "type": "string" } } } } } }, "post": { "summary": "Create application logs", "description": "Submit custom logs.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Application id." } }, { "name": "type", "in": "query", "description": "The type of log being submitted. Currently the only type of log that may be created is `custom`.", "schema": { "type": "string", "enum": [ "custom" ], "default": "custom" } } ], "tags": [ "Logs" ], "responses": { "200": { "description": "Successfully submitted.", "content": { "application/json": { "schema": { "anyOf": [ { "type": "array", "description": "Array of unique IDs for each submitted log.", "items": { "$ref": "#/components/schemas/CustomLogId" } }, { "$ref": "#/components/schemas/CustomLogId" } ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationPost_logs" } } } } } }, "/applications/metrics": { "get": { "summary": "Read application collection metrics", "description": "Returns requested metrics for all applications.\n", "tags": [ "Applications", "Metrics" ], "parameters": [ { "name": "names", "in": "query", "required": true, "description": "A comma separated list of metrics names. For the set of metrics supported, see [GET applications/{id}/authorization](#get-/applications/-id-/metrics)", "schema": { "type": "array", "items": { "type": "string" } } }, { "$ref": "#/components/parameters/from", "schema": { } }, { "$ref": "#/components/parameters/to", "schema": { } }, { "$ref": "#/components/parameters/resolution", "schema": { } }, { "$ref": "#/components/parameters/summarize", "schema": { } } ], "responses": { "200": { "description": "Metrics for the applications are returned successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Metrics" } } } } } } }, "/applications/{id}/metrics": { "get": { "summary": "Read application metrics", "description": "Read named metrics for an application. A time period specified by `from` and\n`to` query parameters is required. A `resolution` parameter optionally\nspecifies the size of the intervals in which metrics are returned. The\nmetrics available are:\n\n### active_requests\n\nAverage request count being serviced by application servers at any instant.\n\n### active_sessions\n\nAverage of the number of sessions active at any instant. A session is active\nfrom its first request until it times out at 30 minutes after its last\nrequest.\n\n### bytes_in\n\nThe number of input bytes received by a data plane for requests.\n\n### bytes_out\n\nThe number of output bytes written by a data plane in responses.\n\n### cdn_bytes_in\n\nThe number of input bytes received by a CDN for requests.\n\n### cdn_bytes_out\n\nThe number of output bytes written by a CDN in responses.\n\n### countries\n\nAn object mapping a country code to a count of requests.\n\n### delivery_status\n\nAn object mapping a delivery status to a count of requests.\n\n### edge_locations\n\nAn object mapping an CDN POP location to a count of requests.\n\n### edge_response_time\n\nThe average elapsed time as measured at CDN POPs.\n\n### edge_response_types\n\nAn object mapping a CDN response type to a count of requests.\n\n### edge_status_codes\n\nAn object mapping response status codes to a count of requests as observed\nat CDN POPs.\n\n### edge_ttfb\n\nThe average time to first byte (TTFB) for responses as observed at CDN POPs.\n\n### edge_useragent_device\n\nAn object mapping a user agent device code to a count of requests as\nobserved at CDN POPs.\n\n### edge_useragent_name\n\nAn object mapping a user agent name to a count of requests as\nobserved at CDN POPs.\n\n### edge_useragent_os\n\nAn object mapping a user agent operating system code to a count of requests\nas observed at CDN POPs.\n\n### page_load_elapsed\n\nAverage page load time as reported by a user agent.\n\n### page_views\n\nCount of page load reports made by user agents.\n\n### rejected_requests\n\nCount of requests that were rejected because the application servers were\nnot responsive and either too many requests were queued or a request was\nqueued for too long.\n\n### requests\n\nCount of requests processed by a data plane.\n\n### status_codes\n\nAn object mapping a response status code to a count of requests as observed\nat a data plane.\n\n### suspended_requests\n\nAverage suspended request count at any given instant because the application\nservers were not responsive.\n\n### useragent_device\n\nAn object mapping a user agent device code to a count of requests as\nobserved at a data plane.\n\n### useragent_name\n\nAn object mapping a user agent name to a count of requests as observed at a\ndata plane.\n\n### useragent_os\n\nAn object mapping a user agent operating code to a count of requests as\nobserved at a data plane.\n\n### webcontrol_hits\n\nAn object mapping a Web Control identifier to a count of requests as\nobserved at a data plane.\n", "tags": [ "Applications", "Metrics" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Application id." } }, { "name": "names", "in": "query", "required": true, "description": "A comma-separated list of metric names. Result arrays will include\nmetric values in the same order as specified here.\n", "schema": { "type": "array", "items": { "type": "string" } } }, { "$ref": "#/components/parameters/from", "schema": { } }, { "$ref": "#/components/parameters/to", "schema": { } }, { "$ref": "#/components/parameters/resolution", "schema": { } }, { "$ref": "#/components/parameters/summarize", "schema": { } } ], "responses": { "200": { "description": "Metrics for the application have been returned successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Metrics" } } } } } } }, "/applications/{app_id}/pagecontrols": { }, "/applications/{app_id}/pagecontrols/{id}": { }, "/applications/{app_id}/webcontrols": { "get": { "summary": "Read web controls", "description": "Returns all web controls for an application", "tags": [ "Applications" ], "parameters": [ { "name": "app_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Application id." } }, { "name": "filter", "in": "query", "schema": { "type": "string", "pattern": "^$", "description": "An optional filter that can be provided. An empty string asks for every web control, including deleted controls." } }, { "name": "attributes", "in": "query", "schema": { "type": "string", "pattern": "^([-+][a-z0-9_]+)(,[-+][a-z0-9_]+)*$", "description": "A comma-separated list of attributes to be returned for web controls. Using a prefix of + or - respectively, will add or remove an attribute from the default set" } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "description": "Web controls in the order of processing", "items": { "$ref": "#/components/schemas/WebControl" } } } } } } } }, "/applications/{app_id}/webcontrols/{id}": { "get": { "summary": "Read a web control", "description": "Reads an application web control configuration.", "tags": [ "Applications" ], "parameters": [ { "name": "app_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Application id" } }, { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^\\d+$", "description": "Web control id" } }, { "name": "attributes", "in": "query", "schema": { "type": "string", "description": "A comma-separated list of attributes to be returned for the web control. Using a prefix of + or - respectively, will add or remove an attribute from the default set" } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebControl" } } } } } } }, "/applications/{id}/subscriptions/{subscription_id}": { }, "/applications/{id}/subscriptions": { }, "/applications/{id}/cache": { }, "/applications/{id}/queue": { }, "/applications/{id}/maintenance-microsite": { }, "/applications/{id}/maintenance-microsite_preview": { }, "/applications/{id}/status": { }, "/archived-logs": { "get": { "summary": "List log status", "description": "Returns a list of archived logs status for the account or applications in\nascending order.\n", "tags": [ "Logs" ], "parameters": [ { "name": "filter", "in": "query", "description": "A URL-encoded string used to filter results.\nSupported fields: `type`, `application`.\n\nEncoding Guide:\n* `=` (Equals) must be `%3D`\n* ` ` (Space) must be `%20`\n", "schema": { "type": "string" }, "example": "type%3Dproxy-logs%20and%20application%3Dapiid" }, { "$ref": "#/components/parameters/from" }, { "$ref": "#/components/parameters/to" } ], "responses": { "200": { "description": "A successful response containing the available archived logs.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArchivedLogs" } } } } } } }, "/archived-logs/{ref}": { "get": { "summary": "Download archived logs", "description": "Streams a Gzip-compressed log file for a specific log type and time range.\n\nStatus Check: It is highly recommended to check the log status via the\n `/archived-logs` listing endpoint first to ensure the state\n is ready. If the state is not ready, use the\n `prepare-for-download` task to make the log available for\n download.\n\nexample:\n```\ncurl 'https://api.lagrange.ninja/v2/archived-logs/applications/app-api-id/proxy-logs?from=2026-05-12T22:00:00Z&to=2026-05-13T23:00:00Z' \\\n -H 'authorization: Bearer ' \\\n -H 'accept: application/gzip' \\\n --output test.log.gz\n```\n", "parameters": [ { "$ref": "#/components/parameters/archived-log-reference" }, { "$ref": "#/components/parameters/from" }, { "$ref": "#/components/parameters/to" } ], "tags": [ "Logs" ], "responses": { "200": { "description": "A successful response.", "content": { "application/gzip": { "schema": { "type": "string", "format": "binary" } } } } } }, "delete": { "summary": "Delete archived logs", "parameters": [ { "$ref": "#/components/parameters/archived-log-reference" }, { "$ref": "#/components/parameters/from" }, { "$ref": "#/components/parameters/to" } ], "description": "Deletes archived logs for a specified time period.\n", "tags": [ "Logs" ], "responses": { "200": { "description": "A successful response containing the deleted archived logs.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArchivedLogs" } } } } } } }, "/builders": { "get": { "summary": "Read builder collection", "description": "Returns all builders the caller is authorized to view.\n", "parameters": [ { "name": "select", "in": "query", "description": "A comma-separated sequence of attribute names to be returned in the result.\n", "schema": { "type": "string" } } ], "tags": [ "Builders" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Builder" } } } } } } }, "post": { "summary": "Create a builder", "description": "Creates a new builder and returns the definition", "tags": [ "Builders" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Builder" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BuilderPost" } } } } } }, "/builders/{id}": { "get": { "summary": "Read a builder", "description": "Retrieves a builder.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "builder id" } } ], "tags": [ "Builders" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Builder" } } } } } }, "patch": { "summary": "Update a builder", "description": "Updates a builder and returns the updated definition", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Builder id" } } ], "tags": [ "Builders" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BuilderConfiguration" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BuilderConfiguration", "description": "The builder parameters to update" } } } } }, "delete": { "summary": "Delete a builder", "description": "Deletes a builder. The final snapshot of the builder is returned.\n", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "builder id" } } ], "tags": [ "Builders" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Builder" } } } } } } }, "/clusters": { "get": { "summary": "Read cluster collection", "description": "Will return all the cluster resources that the caller is authorized to view.\n", "tags": [ "Clusters" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Cluster" } } } } } } }, "post": { "summary": "Create a cluster", "description": "Creates a cluster. Servers for that cluster will be created to meet the minimum_size and manual_size settings.\n", "parameters": [ ], "tags": [ "Clusters" ], "responses": { "201": { "description": "The cluster was successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cluster" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClusterPost", "description": "The cluster definition." } } } } } }, "/clusters/{id}": { "get": { "summary": "Read a cluster", "description": "Will return the cluster resource if the caller's account is authorized to view.\n", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Cluster id." } } ], "tags": [ "Clusters" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cluster" } } } } } }, "patch": { "summary": "Update a cluster", "description": "Select properties of a cluster resource can be modified using this call.\n", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Cluster id." } } ], "tags": [ "Clusters" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cluster" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClusterPatch", "description": "The properties of the cluster resource to be patched.

Patchable properties are limited to those described in the ClusterPatch model." } } } } }, "delete": { "summary": "Delete a cluster", "description": "The cluster will be immediately deleted if it is not in use and has no active servers associated with it. If the cluster has any active servers associated with it, a task will be created to delete all the active after which the cluster itself will be deleted.\n", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Cluster id" } } ], "tags": [ "Clusters" ], "responses": { "200": { "description": "The cluster was successfully deleted.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Cluster" } } } }, "202": { "description": "A task was created to delete the cluster.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Task" } } } } } } }, "/clusters/{id}/metrics": { "get": { "summary": "Read cluster metrics", "description": "Read named metrics for a cluster. A time period specified by `from` and\n`to` query parameters is required. A `resolution` parameter optionally\nspecifies the size of the intervals in which metrics are returned. The\nmetrics available are:\n\n### normalized_load\n\nAverage system load across all machines in a cluster. On UNIX-based\nmachines, it reflects the system load average. On Windows-based machines, it\ncorresponds to the average processor queue length. The value reported by\neach machine is normalized by dividing by the number of its logical\nprocessors, allowing consistent interpretation even when processor counts\nvary across machines or over time.\n\n### cpu_utilization\n\nAverage percent CPU utilization across all machines in a cluster.\n\n### iowait_percent\n\nAverage percentage of available CPU time across all machines in a cluster\nspent by ready tasks waiting for I/O operations to complete.\n\n### memory_utilization\n\nAverage percentage of utilized memory across all machines iin a cluster.\n\n### disk_space\n\nAverage amount of allocated disk space across all machines in a cluster,\nrepresented as an object mapping disk names to allocated disk space in\nbytes.\n\n### disk_utilization\n\nAverage percentage of allocated disk space used across all machines in a\ncluster, represented as an object mapping disk names to space utilization.\n", "tags": [ "Clusters", "Metrics" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Cluster id." } }, { "name": "names", "in": "query", "required": true, "description": "A comma separated list of metrics names. Result arrays will include metric values in the same order as specified here.", "schema": { "type": "array", "items": { "type": "string" } } }, { "$ref": "#/components/parameters/from", "schema": { } }, { "$ref": "#/components/parameters/to", "schema": { } }, { "$ref": "#/components/parameters/resolution", "schema": { } }, { "$ref": "#/components/parameters/summarize", "schema": { } } ], "responses": { "200": { "description": "Metrics for the cluster have been returned successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Metrics" } } } } } } }, "/clusters/metrics": { "get": { "summary": "Read cluster collection metrics", "description": "Returns requested metrics for all clusters.\n", "tags": [ "Clusters", "Metrics" ], "parameters": [ { "name": "names", "in": "query", "required": true, "description": "A comma separated list of metrics names. For the set of metrics supported, see [GET clusters/{id}/metrics](#get-/clusters/-id-/metrics)", "schema": { "type": "array", "items": { "type": "string" } } }, { "$ref": "#/components/parameters/from", "schema": { } }, { "$ref": "#/components/parameters/to", "schema": { } }, { "$ref": "#/components/parameters/resolution" } ], "responses": { "200": { "description": "Metrics for the clusters are returned successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Metrics" } } } } } } }, "/data-planes": { }, "/data-planes/{id}": { }, "/environments": { "get": { "summary": "Read environments collection", "description": "Returns defined environments\n", "tags": [ "Environments" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Environment" } } } } } } }, "post": { "summary": "Create an environment", "description": "Creates a new environment and returns the definition\n", "parameters": [ ], "tags": [ "Environments" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Environment" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentPost" } } } } } }, "/environments/{id}": { "get": { "summary": "Read an environment", "description": "Retrieves an environment.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "environment id" } } ], "tags": [ "Environments" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Environment" } } } } } }, "patch": { "summary": "Update an environment", "description": "Updates an environment and returns the updated definition", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Environment id" } } ], "tags": [ "Environments" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Environment" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentConfiguration" } } } } }, "delete": { "summary": "Delete an environment", "description": "Deletes an environment.\n", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Environment id" } } ], "tags": [ "Environments" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Environment" } } } } } } }, "/files": { "get": { "summary": "Get all files", "description": "Returns all files for the current account.\n", "tags": [ "Files" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/File" } } } } } } }, "post": { "summary": "Create a file.", "description": "Upload a file.", "parameters": [ ], "tags": [ "Files" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/File" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilePost", "description": "The definition of the new file." } } } } } }, "/files/{id}": { "get": { "summary": "Get a file", "description": "Will return the file resource requested.\n", "tags": [ "Files" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "A file id." } } ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/File" } } } } } }, "patch": { "summary": "Update a file", "description": "Edits properties and/or contents of a file.", "parameters": [ ], "tags": [ "Files" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/File" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilePatch", "description": "The definition of the new file." } } } } }, "delete": { "summary": "Delete a file", "description": "The file must belong to the current account.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "File id" } } ], "tags": [ "Files" ], "responses": { "200": { "description": "The file was successfully deleted.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/File" } } } } } } }, "/files/{id}/contents": { "get": { "summary": "Get a file contents", "description": "Will return the contents of the requested file.\n", "tags": [ "Files" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "A file id." } }, { "name": "version", "in": "query", "schema": { "type": "string", "description": "Version number of the file." } } ], "responses": { "200": { "description": "The call was successful." } } } }, "/files/{id}/contents/{path}": { "get": { "summary": "Get contents of a file within a package", "description": "Will return the contents of a file with path within a package.\n", "tags": [ "Files" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "A file id." } }, { "name": "path", "in": "path", "required": true, "schema": { "type": "string", "description": "Relative path of a file within a package.", "pattern": "^[^/]" } }, { "name": "version", "in": "query", "schema": { "type": "string", "description": "Version number of the file." } } ], "responses": { "200": { "description": "The call was successful." } } } }, "/files/{id}/details": { "get": { "summary": "Gets all details.", "description": "", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "A file id." } } ], "tags": [ "Files" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/files/{id}/versions/{version_id}": { "get": { "summary": "Gets properties of a particular version of a file.", "description": "Will return the properties of a particular version of a file.\n", "tags": [ "Files" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "A file id." } }, { "name": "version_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Version number of the file." } } ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileVersion" } } } } } } }, "/files/{id}/versions/{version_id}/contents": { "get": { "summary": "Get contents of a file version", "description": "Serves contents of a file version.", "tags": [ "Files" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "A file id." } }, { "name": "version", "in": "path", "required": true, "schema": { "type": "string", "description": "Version number of the file.", "pattern": "^\\d+$" } } ], "responses": { "200": { "description": "The call was successful." } } } }, "/files/{id}/versions/{version_id}/contents/{path}": { "get": { "summary": "Get contents of a file version within a package.", "description": "Will return the contents of a particular version of file with path within a package.\n", "tags": [ "Files" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "A file id." } }, { "name": "version_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Version number of the file.", "pattern": "^\\d+$" } }, { "name": "path", "in": "path", "required": true, "schema": { "type": "string", "description": "Relative path of a file within a package.", "pattern": "^[^/]" } } ], "responses": { "200": { "description": "The call was successful." } } } }, "/filters": { }, "/filters/{id}": { }, "/handlers": { }, "/handlers/{id}": { }, "/labelers": { }, "/labelers/{id}": { "delete": { "summary": "Delete a labeler", "description": "Deletes the requested labeler.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Labeler id" } } ], "tags": [ "Labelers" ], "responses": { "200": { "description": "The labeler was successfully deleted.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Labeler" } } } } } } }, "/log-schemas": { "get": { "summary": "Read log schemas", "description": "Returns all log schemas usable by an account.", "tags": [ "Log schemas" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "description": "An array of log schemas.", "type": "array", "items": { "$ref": "#/components/schemas/LogSchema" } } } } } } } }, "/metric-prototypes": { "get": { "summary": "Read metric prototypes", "description": "Returns all the metric prototypes for the request account", "tags": [ "Metrics" ], "responses": { "200": { "description": "The metric prototypes were successfully retrieved", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MetricPrototype" } } } } } } }, "post": { "summary": "Create a metric prototype", "description": "Creates a new metric prototype and returns the definition", "parameters": [ ], "tags": [ "Metrics" ], "responses": { "200": { "description": "The metric prototype was successfully created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricPrototype" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricPrototypePost", "description": "The metric prototype definition" } } } } } }, "/metric-prototypes/{id}": { "get": { "summary": "Read a metric prototype", "description": "Retrieves a metric prototype definition", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Metric prototype id" } } ], "tags": [ "Metrics" ], "responses": { "200": { "description": "The metric prototype was successfully retrieved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricPrototype" } } } } } }, "delete": { "summary": "Delete a metric prototype", "description": "The metric prototype must belong to the current account", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Metric prototype id" } } ], "tags": [ "Metrics" ], "responses": { "200": { "description": "The metric prototype was successfully deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricPrototype" } } } } } } }, "/monitors": { "get": { "summary": "Read monitors collection", "description": "Returns all the monitors for the request account", "tags": [ "Monitors" ], "responses": { "200": { "description": "The monitors were successfully retrieved", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Monitor" } } } } } } }, "post": { "summary": "Create a monitor", "description": "Creates a new monitor and returns the definition", "parameters": [ ], "tags": [ "Monitors" ], "responses": { "200": { "description": "The monitor was successfully created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Monitor" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MonitorPost", "description": "The monitor definition" } } } } } }, "/monitors/{id}": { "get": { "summary": "Read a monitor", "description": "Retrieves a monitor definition", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Monitor id" } } ], "tags": [ "Monitors" ], "responses": { "200": { "description": "The monitor was successfully retrieved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Monitor" } } } } } }, "patch": { "summary": "Update a monitor", "description": "Updates the monitor and returns the updated definition", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Monitor id" } } ], "tags": [ "Monitors" ], "responses": { "200": { "description": "The monitor was successfully updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Monitor" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MonitorConfiguration", "description": "The monitor definition" } } } } }, "delete": { "summary": "Delete a monitor", "description": "The monitor must belong to the current account", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Monitor id" } } ], "tags": [ "Monitors" ], "responses": { "200": { "description": "The monitor was successfully deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Monitor" } } } } } } }, "/plans": { }, "/plans/{id}": { }, "/providers": { }, "/providers/{id}": { }, "/providers/{id}/datacenters": { }, "/providers/{provider_id}/datacenters/{datacenter_id}/images": { }, "/providers/{provider_id}/datacenters/{datacenter_id}/images/{image_id}": { }, "/providers/{provider_id}/datacenters/{datacenter_id}/server-groups": { }, "/providers/{id}/firewalls": { }, "/providers/{provider_id}/firewalls/{firewall_id}": { }, "/providers/{id}/images": { }, "/providers/{provider_id}/images/{image_id}": { }, "/providers/{id}/instance-types": { }, "/providers/{id}/networks": { }, "/providers/{provider_id}/networks/{network_id}": { }, "/providers/{id}/regions": { }, "/providers/{provider_id}/regions/{region_id}/images": { }, "/providers/{provider_id}/regions/{region_id}/images/{image_id}": { }, "/providers/{provider_id}/resource-groups/{group_id}/images": { }, "/providers/{provider_id}/resource-groups/{group_id}/regions/{region_id}/images": { }, "/providers/{provider_id}/regions/{region_id}/instance-templates": { }, "/providers/{provider_id}/regions/{region_id}/network-acls": { }, "/providers/{provider_id}/regions/{region_id}/network-acls/{network_acl_id}": { }, "/providers/{provider_id}/regions/{region_id}/networks": { }, "/providers/{provider_id}/regions/{region_id}/networks/{network_id}": { }, "/providers/{provider_id}/regions/{region_id}/security-groups": { }, "/providers/{provider_id}/regions/{region_id}/security-groups/{security_group_id}": { }, "/providers/{provider_id}/regions/{region_id}/subnets": { }, "/providers/{provider_id}/regions/{region_id}/subnets/{subnet_id}": { }, "/providers/{provider_id}/resource-groups/{group_id}/subnets": { }, "/providers/{provider_id}/resource-groups/{group_id}/regions/{region_id}/subnets": { }, "/providers/{provider_id}/regions/{region_id}/zones": { }, "/providers/{provider_id}/resource-groups/{group_id}/identities": { }, "/providers/{provider_id}/resource-groups/{group_id}/regions/{region_id}/identities": { }, "/providers/{provider_id}/resource-groups/{group_id}/instance-types": { }, "/providers/{provider_id}/resource-groups/{group_id}/regions/{region_id}/instance-types": { }, "/providers/{provider_id}/regions/{region_id}/zones/{zone_id}/instance-types": { }, "/providers/{provider_id}/regions/{region_id}/zones/{zone_id}/instance-types/{instance_type_id}": { }, "/providers/{provider_id}/resource-groups/{group_id}/security-groups": { }, "/providers/{provider_id}/resource-groups/{group_id}/regions/{region_id}/security-groups": { }, "/providers/{provider_id}/resource-groups/{group_id}/storage-accounts": { }, "/providers/{provider_id}/resource-groups/{group_id}/regions/{region_id}/storage-accounts": { }, "/reports": { }, "/reports/{id}": { }, "/reports/{report_id}/sections/{section_id}": { "get": { "summary": "Read a test report section", "description": "For reports that have multiple sections, read a particular section.\n", "parameters": [ { "name": "report_id", "in": "path", "required": true, "schema": { "type": "string", "description": "A sectioned report id" } }, { "name": "section_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Section ID" } } ], "tags": [ "Reports" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationTestReport" } } } } } } }, "/resources": { }, "/resources/{id}": { "delete": { "summary": "Delete a resource", "description": "Deletes a resource. The externally manifested resource is unaffected by\nthis operation. The final snapshot of the resource is returned.\n", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Resource id" } } ], "tags": [ "Monitors" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Resource" } } } } } } }, "/resources/{id}/metrics": { }, "/secrets": { "get": { "summary": "Read secret collection", "description": "Will return all the secret resources that the caller is authorized to view.\n", "tags": [ "Secrets" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecretArray" } } } } } }, "post": { "summary": "Create a secret", "description": "", "parameters": [ ], "tags": [ "Secrets" ], "responses": { "200": { "description": "The secret was successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Secret" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecretPost", "description": "The secret definition." } } } } } }, "/secrets/{id}": { "get": { "summary": "Read a secret", "description": "Read metadata about a secret. Secret content is not available.\n", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Secret id." } } ], "tags": [ "Secrets" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Secret" } } } } } }, "delete": { "summary": "Delete a secret", "description": "Secrets referenced by resources cannot be deleted.\n", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Secret id." } } ], "tags": [ "Secrets" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Secret" } } } } } } }, "/servers": { "get": { "summary": "Read server collection", "description": "An array of servers. Servers represent an existing or potential web service at a known address.", "tags": [ "Servers" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ClusterServer" } } } } } } } }, "/servers/{id}": { "delete": { "summary": "Delete a server", "description": "", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "A server id." } } ], "tags": [ "Servers" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/servers/{id}/metrics": { "post": { "x-roles": [ "anonymous" ], "summary": "Create server metrics", "description": "Server periodically posts metrics that helps in making a scaling decision", "parameters": [ ], "tags": [ "Servers" ], "responses": { "200": { "description": "Metrics were posted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServerMeasurements" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServerMeasurements", "description": "Metrics to post" } } } } } }, "/services": { }, "/services/{id}": { }, "/services/{id}/{repo}/images": { }, "/ssh-hosts": { "get": { "summary": "Read SSH host collection", "description": "Return the SSH host resources that the caller is authorized to view.", "tags": [ "SSH Hosts" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SshHost" } } } } } } }, "post": { "summary": "Create SSH host", "description": "Create a new SSH host resource.", "tags": [ "SSH Hosts" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshHostPost", "description": "Registration information for the new SSH host." } } } }, "responses": { "200": { "description": "Returns the created SSH host definition", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshHost" } } } } } } }, "/ssh-hosts/{id}": { "get": { "summary": "Read SSH host", "description": "Return the SSH host resource if the caller's account is authorized to view.\n", "tags": [ "SSH Hosts" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "SSH host id." } } ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshHost" } } } } } }, "patch": { "summary": "Update SSH Host", "description": "Update an existing SSH host.\n", "tags": [ "SSH Hosts" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "SSH host id." } } ], "responses": { "200": { "description": "The SSH host was successfully updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshHost" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshHostPatch", "description": "The SSH host update parameters." } } } } }, "delete": { "summary": "Delete SSH host", "description": "Delete an existing SSH host.\n", "tags": [ "SSH Hosts" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "SSH host id." } } ], "responses": { "200": { "description": "The SSH host was successfully deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshHost" } } } } } } }, "/ssh-hosts/{id}/authorization": { }, "/ssh-hosts/{id}/logs": { "get": { "summary": "Read SSH logs", "description": "Return the SSH host logs for a particular host.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "SSH host id." } }, { "$ref": "#/components/parameters/from" }, { "$ref": "#/components/parameters/to" }, { "$ref": "#/components/parameters/format" }, { "name": "select", "in": "query", "description": "A comma-separated sequence of attribute names to be returned in the result\nin the same order. To obtain a list of fields, use the\n[GET /log-schemas](#get-/log-schemas) API.\n", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/filter" }, { "$ref": "#/components/parameters/start" }, { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/order" }, { "$ref": "#/components/parameters/groupby" }, { "$ref": "#/components/parameters/groupfilters" }, { "$ref": "#/components/parameters/grouplimit" }, { "$ref": "#/components/parameters/groupselect" }, { "$ref": "#/components/parameters/grouporder" } ], "tags": [ "SSH Hosts" ], "responses": { "200": { "description": "A CSV or a JSON document containing the SSH host logs. The fields included in the response depend on the parameters specified in the request.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SshHostLog" } } }, "text/csv": { "schema": { "type": "string" } } } } } } }, "/stacks": { "get": { "summary": "Read stack collection", "description": "Return all stacks the caller is authorized to view.", "tags": [ "Environments" ], "responses": { "200": { "description": "The call was successful", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Stack" } } } } } } }, "post": { "summary": "Create a stack", "description": "Create a new stack. The stack will be scheduled to synchronize immediately.", "tags": [ "Environments" ], "responses": { "200": { "description": "A stack was created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Stack" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StackPost", "description": "The stack configuration" } } } } } }, "/stacks/{id}": { "get": { "summary": "Read a stack", "description": "Read a single stack object\n", "tags": [ "Environments" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Stack id" } } ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Stack" } } } } } }, "patch": { "summary": "Update a stack", "description": "Update attributes on a specified stack\n", "tags": [ "Environments" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Stack id" } } ], "responses": { "200": { "description": "The stack was successfully updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Stack" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StackPatch", "description": "Attributes to be applied to a specified stack" } } } } }, "delete": { "summary": "Delete a stack", "description": "Delete an existing stack.\n", "tags": [ "Environments" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Stack id" } } ], "responses": { "200": { "description": "The stack was successfully deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Stack" } } } } } } }, "/status": { }, "/tasks": { "get": { "summary": "Read task collection", "description": "Returns all tasks that the caller is authorized to view.", "tags": [ "Tasks" ], "parameters": [ { "$ref": "#/components/parameters/from", "schema": { } }, { "$ref": "#/components/parameters/to", "schema": { } }, { "$ref": "#/components/parameters/start", "schema": { } }, { "$ref": "#/components/parameters/limit", "schema": { } }, { "$ref": "#/components/parameters/order", "schema": { } } ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Task" } } } } } } }, "post": { "summary": "Create a task", "description": "This API will create a task that may be long running and may be targeted attempt a specific resource. If the task is long running a 200 code is returned. Otherwise a 201 code with be returned. The task can be fetched throughout its lifecycle and used to track the progress and completion of the task.", "parameters": [ ], "tags": [ "Tasks" ], "responses": { "200": { "description": "The task has been created and is complete.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Task" } } } }, "201": { "description": "The task has been created and has not yet completed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Task" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskPost", "description": "The task definition. The target must be an href for the resource that the task is to be performed on. For example: Starting an application. type is 'start' and endpoint is something like '/v2/applications/abcxyz'." } } } } } }, "/tasks/{id}": { "get": { "summary": "Read a task", "description": "Retrieve a task resource.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "task id." } } ], "tags": [ "Tasks" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Task" } } } } } } }, "/tasks/{id}/logs": { "get": { "summary": "Read task logs", "description": "Retrieve the logs recorded for a task", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "task id." } }, { "$ref": "#/components/parameters/from", "schema": { } }, { "$ref": "#/components/parameters/to", "schema": { } }, { "$ref": "#/components/parameters/limit", "schema": { } } ], "tags": [ "Tasks", "Logs" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ProcessLog" } } } } } } } }, "/templates": { "get": { "summary": "Read template collection", "description": "Gets all templates", "tags": [ "Templates" ], "responses": { "200": { "description": "The templates were successfully retrieved.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Template" } } } } } } }, "post": { "summary": "Create a template", "description": "Creates a new template and returns the definition", "parameters": [ ], "tags": [ "Templates" ], "responses": { "200": { "description": "The template was successfully created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Template" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateConfiguration", "description": "The template definition" } } } } } }, "/templates/{id}": { "get": { "summary": "Read a template", "description": "Retrieves a template definition", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Template id" } } ], "tags": [ "Templates" ], "responses": { "200": { "description": "The template was successfully retrieved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Template" } } } } } }, "patch": { "summary": "Update a template", "description": "Updates the template and returns the updated definition", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Template id" } } ], "tags": [ "Templates" ], "responses": { "200": { "description": "The template was successfully updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Template" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateConfiguration", "description": "The Template definition" } } } } }, "delete": { "summary": "Delete a template", "description": "The template must belong to the current account", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Template id" } } ], "tags": [ "Templates" ], "responses": { "200": { "description": "The template was successfully deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Template" } } } } } } }, "/url-maps": { "get": { "summary": "Read URL map collection", "description": "Gets all URL maps", "tags": [ "URL maps" ], "responses": { "200": { "description": "The URL maps were successfully retrieved.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UrlMap" } } } } } } }, "post": { "summary": "Create a URL map", "description": "Creates a new URL map and returns the definition", "parameters": [ ], "tags": [ "URL maps" ], "responses": { "200": { "description": "The URL map was successfully created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UrlMap" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UrlMapConfiguration", "description": "The URL map definition" } } } } } }, "/url-maps/{id}": { "get": { "summary": "Read a URL map", "description": "Retrieves an URL map definition", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "URL map id" } } ], "tags": [ "URL maps" ], "responses": { "200": { "description": "The URL map was successfully retrieved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UrlMap" } } } } } }, "patch": { "summary": "Update a URL map", "description": "Updates the URL map and returns the updated definition", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "URL map id" } } ], "tags": [ "URL maps" ], "responses": { "200": { "description": "The URL map was successfully updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UrlMap" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UrlMapConfiguration", "description": "The URL map definition" } } } } }, "delete": { "summary": "Delete a URL map", "description": "The URL map must belong to the current account", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "URL map id" } } ], "tags": [ "URL maps" ], "responses": { "200": { "description": "The URL map was successfully deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UrlMap" } } } } } } }, "/users": { "get": { "summary": "Read user collection", "description": "Returns all users for the current account.", "tags": [ "Users" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } } } } }, "/users/{id}": { "get": { "summary": "Read a user", "description": "Will return the current user. If the id is 'self' then get the current user", "tags": [ "Users" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id or 'self'" } } ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } } } }, "patch": { "summary": "Update a user", "description": "Properties of the specified user can be updated. Users can only update their own self, and can pass 'self' for the id", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id or 'self'" } } ], "tags": [ "Users" ], "responses": { "200": { "description": "The user was successfully updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserPatch", "description": "The user parameters to update." } } } } } }, "/users/{id}/access-keys": { "get": { "summary": "Read access keys collection", "description": "Return all access keys for the current user", "tags": [ "Users" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } } ], "responses": { "200": { "description": "An array of access keys", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AccessKey" } } } } } } }, "post": { "summary": "Create an access key", "description": "For users authorized to multiple accounts an authorization to a different account is created with this call", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } } ], "tags": [ "Users" ], "responses": { "200": { "description": "The access key that was created. The secret for the access key is available only as a result of creating it and cannot be obtained afterward.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKeySecret" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKeyConfiguration", "description": "Configuration for the access key to be created" } } } } } }, "/users/{user_id}/access-keys/{id}": { "delete": { "summary": "Delete an access key", "description": "Delete an access key for the current user", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } }, { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "Access key id" } } ], "tags": [ "Users" ], "responses": { "200": { "description": "The access key was deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKey" } } } } } } }, "/users/{id}/authorization": { "get": { "summary": "Read authorization", "description": "Return properties describing the current authorization", "tags": [ "Users" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } } ], "responses": { "200": { "description": "The current authorization.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKey" } } } } } }, "post": { "summary": "Create authorization", "description": "For users authorized to multiple accounts an authorization to a different account is created with this call", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } } ], "tags": [ "Users" ], "responses": { "200": { "description": "The authorization was created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKeySecret" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuthorizationAccount", "description": "The authorization to create" } } } } } }, "/users/{id}/group-invitations": { "get": { "summary": "Read group invitations", "description": "Group invitations are used to invite a user to multiple roles at once", "tags": [ "Users" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } } ], "responses": { "200": { "description": "The call was successful", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GroupInvitation" } } } } } } } }, "/users/{id}/group-invitations/{group-invitation-id}": { "get": { "summary": "Read a group invitation", "description": "Group invitations are used to invite a user to multiple roles at once", "tags": [ "Users" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } }, { "name": "group-invitation-id", "in": "path", "required": true, "schema": { "type": "string", "description": "The group invitation id" } } ], "responses": { "200": { "description": "The call was successful", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GroupInvitation" } } } } } } }, "patch": { "summary": "Update a group invitation", "description": "Accept or decline a specific group invitation", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } }, { "name": "group-invitation-id", "in": "path", "required": true, "schema": { "type": "string", "description": "The group invitation id" } } ], "tags": [ "Users" ], "responses": { "200": { "description": "The group invitation was successfully accepted or declined", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupInvitation" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupInvitationConfiguration", "description": "The group invitation definition" } } } } } }, "/users/{id}/groups": { "get": { "summary": "Read user group collection", "description": "Groups can be used to grant users many roles at once", "tags": [ "Users" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } } ], "responses": { "200": { "description": "The call was successful", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Group" } } } } } } } }, "/users/{id}/groups/{group_id}": { "get": { "summary": "Read group membership", "description": "Groups can be used to grant users many roles at once", "tags": [ "Users" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User 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" } } } } } }, "delete": { "summary": "Delete group membership", "description": "Removes a user from a group to which they have accepted an invitation.\nAfter vacating a group, the user will lose access to the associated\nroles\n", "tags": [ "Users" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User 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" } } } } } } }, "/users/{id}/invitations": { "get": { "summary": "Read role invitations", "description": "Invitations are used to grant roles to users", "tags": [ "Users" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } } ], "responses": { "200": { "description": "The call was successful", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RoleInvitation" } } } } } } } }, "/users/{id}/invitations/{invitation_id}": { "get": { "summary": "Read a role invitation", "description": "Invitations are used to grant roles to users", "tags": [ "Users" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User 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": { "type": "array", "items": { "$ref": "#/components/schemas/RoleInvitation" } } } } } } }, "patch": { "summary": "Update a role invitation", "description": "Accept or decline a specific invitation", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } }, { "name": "invitation_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Invitation id" } } ], "tags": [ "Users" ], "responses": { "200": { "description": "The invitation was successfully accepted or declined", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleInvitation" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleInvitationConfiguration", "description": "The invitation definition" } } } } } }, "/users/{id}/roles": { "get": { "summary": "Read role membership collection", "description": "Roles can be accepted by users", "tags": [ "Users" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } } ], "responses": { "200": { "description": "The call was successful", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Role" } } } } } } } }, "/users/{id}/roles/{role_id}": { "get": { "summary": "Read role membership", "description": "Roles can be accepted by users", "tags": [ "Users" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User 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" } } } } } }, "delete": { "summary": "Delete role membership", "description": "The role must have been accepted by this user", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id" } }, { "name": "role_id", "in": "path", "required": true, "schema": { "type": "string", "description": "Role id" } } ], "tags": [ "Users" ], "responses": { "200": { "description": "The user successfully left the role", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Role" } } } } } } }, "/users/{id}/mfa-secret": { }, "/users/{id}/ssh-public-keys": { "get": { "summary": "Read SSH public key collection", "description": "Returns all the SSH public key resources for the current user.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id." } } ], "tags": [ "SSH Public Keys" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SshPublicKey" } } } } } } }, "post": { "summary": "Create an SSH public key", "description": "Creates a new SSH public key and returns the definition.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id." } } ], "tags": [ "SSH Public Keys" ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshPublicKey" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshPublicKeyPost", "description": "The SSH public key definition." } } } } } }, "/users/{id}/ssh-public-keys/{key_id}": { "get": { "summary": "Read an SSH public key", "tags": [ "SSH Public Keys" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id." } }, { "name": "key_id", "in": "path", "required": true, "schema": { "type": "string", "description": "SSH public key id." } } ], "responses": { "200": { "description": "The call was successful.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshPublicKey" } } } } } }, "patch": { "summary": "Update an SSH public key", "description": "", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id." } }, { "name": "key_id", "in": "path", "required": true, "schema": { "type": "string", "description": "SSH public key id." } } ], "tags": [ "SSH Public Keys" ], "responses": { "200": { "description": "The SSH public key was successfully updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshPublicKey" } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshPublicKeyPatch", "description": "The SSH public key parameters to update." } } } } }, "delete": { "summary": "Delete an SSH public key", "description": "Deletes the requested SSH public key.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "User id." } }, { "name": "key_id", "in": "path", "required": true, "schema": { "type": "string", "description": "SSH public key id." } } ], "tags": [ "SSH Public Keys" ], "responses": { "200": { "description": "The SSH public key was successfully deleted.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SshPublicKey" } } } } } } } }, "components": { "schemas": { "AccessKey": { "description": "A key that is used to authorize access to the Webscale API", "allOf": [ { "$ref": "#/components/schemas/AccessKeyState" }, { "$ref": "#/components/schemas/AccessKeyConfiguration" } ] }, "AccessKeyConfiguration": { "type": "object", "required": [ "type" ], "description": "An authorization granted to a user", "properties": { "account": { "description": "A reference to the account to which the access key authorizes", "$ref": "#/components/schemas/AccountHref" }, "expiry": { "$ref": "#/components/schemas/Timestamp", "description": "The time at which the access key expires" }, "type": { "description": "The type of key. Currently, only 'bearer' tokens are supported", "type": "string", "enum": [ "bearer" ], "default": "bearer" } } }, "AccessKeySecret": { "allOf": [ { "$ref": "#/components/schemas/AccessKey" }, { "type": "object", "properties": { "secret_key": { "description": "The secret part of the authorization", "type": "string" } } } ] }, "AccessKeyState": { "type": "object", "properties": { "durability": { "description": "The durability of the key.", "type": "string", "enum": [ "persistent", "session" ] }, "href": { "type": "string", "description": "A reference to this key" }, "last_used": { "description": "The last time at which the key was used for access", "$ref": "#/components/schemas/Timestamp" } } }, "Account": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/AccountIdentity" }, { "$ref": "#/components/schemas/AccountConfiguration" }, { "$ref": "#/components/schemas/AccountState" } ], "additionalProperties": false }, "AccountConfiguration": { "type": "object", "properties": { "name": { "type": "string", "description": "The name for the account." }, "keyword": { "type": "string", "description": "Used when including an account’s name into system components like VM\ninstance names or file names. If not specified during account creation,\nthe keyword attribute is automatically generated by transliterating the\nname to lowercase US-ASCII and replacing any sequences of punctuation and\nspaces to a dash. For instance, the name \"Éxito S.A.\" results in a keyword\nof `exito-s-a`. Note that the keyword will not be automatically updated if\nthe account is renamed. Modifying the keyword after resources have been\ncreated for an account may lead to unexpected issues. It is advised to\nperform this change only with the assistance of Webscale support.\n" }, "log_retention": { "type": "array", "description": "Configuration for retention of logs that are not application-related.\n", "items": { "$ref": "#/components/schemas/AccountLogRetention" } }, "owner": { "type": "string", "pattern": "/v2/users/[a-z0-9]+", "description": "An account owner." } }, "additionalProperties": false }, "AccountHref": { "type": "string", "description": "A reference to an account", "pattern": "^/v2/accounts/[a-z0-9]+$" }, "AccountIdentity": { "type": "object", "required": [ "href", "id" ], "properties": { "href": { "$ref": "#/components/schemas/AccountHref" }, "marketing_banners": { "type": "array", "description": "The marketing banners awaiting selection from the account owner." } }, "additionalProperties": false }, "AccountLogRetention": { "type": "object", "additionalProperties": false, "required": [ "type" ], "properties": { "type": { "type": "string", "description": "Type of log retention", "enum": [ "events" ] }, "online_days": { "type": "integer", "description": "Number of online days", "minimum": 1 }, "archive_days": { "type": "integer", "description": "Number of archive days", "minimum": 1 }, "online_space_allowance": { "type": "integer", "description": "Allowance for online space", "minimum": 1 }, "archive_space_allowance": { "type": "integer", "description": "Allowance for archive space", "minimum": 1 } } }, "AccountPatch": { "type": "object", "description": "Specifies attributes of an account to be updated.", "$ref": "#/components/schemas/AccountConfiguration" }, "AccountPost": { "type": "object", "description": "Specifies attributes of an account to be posted.", "allOf": [ { "required": [ "name" ] }, { "$ref": "#/components/schemas/AccountConfiguration" } ] }, "AccountState": { "type": "object", "properties": { "marketing_banners": { "type": "array", "description": "The marketing banners awaiting resolution by the account owner." } }, "additionalProperties": false }, "Action": { "description": "An action to be executed on a referenced subject", "type": "object", "allOf": [ { "required": [ "id", "url" ] }, { "$ref": "#/components/schemas/ActionKey" }, { "$ref": "#/components/schemas/ActionConfiguration" } ] }, "ActionConfiguration": { "description": "Configuration for an action", "type": "object", "properties": { "url": { "type": "string", "description": "An http/https URL giving the address of the agent receiving the request to initiate the action", "pattern": "^https?://[^/]+/.*$" }, "name": { "type": "string", "description": "A human-readable name. If not specified, a name will be generated from the id" }, "http_method": { "type": "string", "description": "The request method name to be used when making the action request to an agent. Usually POST. Defaults to POST", "default": "POST", "minLength": 1 }, "description": { "type": "string", "description": "A textual description of an action. This should describe the effect of the action because it will be presented to the operator who requests running the action before confirming it" }, "secret_key": { "type": "string", "description": "A key used to sign requests made to an agent. This is 44 characters (32-bytes, base64-encoded). If not specified, a secret will be generated at creation", "pattern": "^[A-Za-z0-9+/]+={0,3}$" }, "certificates": { "type": "string", "description": "A chain of PEM-encoded certificates that can be used to authenticate the agent receiving action requests. If the agent uses a publicly valid X509 certificate that matches the hostname specified in its URL, then this is not needed. This is necessary for self-signed certificates using HTTPS, because the agent is always authenticated. Multiple certificates may be used, for example, when migrating from one certificate to another" } } }, "ActionKey": { "type": "object", "properties": { "id": { "description": "An unchanging identifier for an action that is used when creating a task to run it. All action ids for a subject must be unique", "type": "string", "pattern": "^[a-z]([a-z0-9-]*[a-z0-9])$" } } }, "Actions": { "description": "An array of actions", "type": "array", "items": { "$ref": "#/components/schemas/Action" } }, "AddressSet": { "type": "object", "description": "An address set record details", "allOf": [ { "$ref": "#/components/schemas/AddressSetState" }, { "$ref": "#/components/schemas/AddressSetConfiguration" }, { "type": "object", "properties": { "entries": { "$ref": "#/components/schemas/AddressSetEntry" } } } ] }, "Address": { "description": "IP address", "type": "string", "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))?$" }, "AddressWithPort": { "description": "IP address with port number(optional).", "type": "string", "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))?(:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[1-5](\\d){4}|[1-9](\\d){0,3}))?$" }, "AddressSetConfiguration": { "type": "object", "description": "An address set record details", "properties": { "name": { "description": "The name of the address set", "type": "string", "minLength": 1, "maxLength": 50 }, "description": { "type": "string", "description": "Description of the addresses contained in the address set", "maxLength": 500 }, "type": { "description": "The type of the address set:\n A 'manual' address set type implies that it includes IP addresses/CIDR values that are statically defined by the user or the system.\n A 'dynamic' address set type is one where the IP addresses are dynamically added by the system (e.g. via a web control). Addresses may not be edited for a 'dynamic' address set. A 'combined' set is composed of other sets using the 'inclusions' attribute. A 'text-file' type gets addresses using a 'url' and 'interval' specified in 'params'. A 'json-file' type gets addresses using a 'url', 'interval', and 'query' specified in 'params'", "type": "string", "enum": [ "combined", "domains", "dynamic", "json-file", "manual", "text-file" ] }, "entries": { "type": "array", "description": "List of address entries that are part of this address set", "items": { "$ref": "#/components/schemas/AddressSetEntryConfiguration" } }, "inclusions": { "type": "array", "description": "List of other address set references that are included in this address set, valid only for 'combined' types", "items": { "$ref": "#/components/schemas/AddressSetHref" } }, "parameters": { "description": "Parameters for configuring an address set", "$ref": "#/components/schemas/AddressSetParameters" } }, "additionalProperties": false }, "AddressSetDomainsParameters": { "type": "object", "description": "Parameters for domains address set type", "required": [ "domains" ], "properties": { "domains": { "type": "array", "description": "If a forward-confirmed reverse DNS lookup of a tested address belongs to one of these domains, then the address is considered to belong to the set", "items": { "$ref": "#/components/schemas/DomainName" }, "minItems": 1, "uniqueItems": true } }, "additionalProperties": false }, "AddressSetEntry": { "type": "object", "description": "An IP address or a CIDR block", "allOf": [ { "$ref": "#/components/schemas/AddressSetEntryState" }, { "$ref": "#/components/schemas/AddressSetEntryConfiguration" } ] }, "AddressSetEntryConfiguration": { "type": "object", "description": "Configuration for address entries for address sets", "required": [ "address" ], "properties": { "description": { "type": "string", "description": "Description of the address" }, "address": { "$ref": "#/components/schemas/Cidr" }, "expiry": { "$ref": "#/components/schemas/Timestamp", "description": "Expiry time associated with this address" } } }, "AddressSetEntryState": { "type": "object", "description": "State values for address entries for address sets", "properties": { "created": { "$ref": "#/components/schemas/Timestamp", "description": "Creation time associated with this address" }, "created_by": { "type": "string", "description": "Reference to the user that created this id" } } }, "AddressSetHref": { "type": "string", "pattern": "^/v2/address-sets/[a-z0-9]+$", "description": "The endpoint for an address set resource" }, "AddressSetJsonFileParameters": { "type": "object", "description": "Parameters for json-file address set type", "required": [ "interval", "query", "url" ], "properties": { "url": { "type": "string", "description": "A URL from which a JSON object is read", "pattern": "^https?://[a-z].*$" }, "interval": { "type": "integer", "description": "An interval, given in seconds, that sets the frequency at which the set is updated", "minimum": 60 }, "query": { "type": "string", "description": "A JMESPath expression (http://jmespath.org) that is used to extract addresses. This expression applied over the result of fetching a url must produce an array of IP addresses or CIDR blocks" } }, "additionalProperties": false }, "AddressSetParameters": { "description": "Parameters for configuring an address set", "anyOf": [ { "$ref": "#/components/schemas/AddressSetJsonFileParameters" }, { "$ref": "#/components/schemas/AddressSetTextFileParameters" }, { "$ref": "#/components/schemas/AddressSetDomainsParameters" } ] }, "AddressSetPatch": { "type": "object", "description": "An address set record details to update", "allOf": [ { "$ref": "#/components/schemas/AddressSetConfiguration" } ] }, "AddressSetPost": { "type": "object", "description": "An address set record details needed to create a new set", "allOf": [ { "required": [ "name", "type" ] }, { "$ref": "#/components/schemas/AddressSetConfiguration" } ] }, "AddressSetState": { "type": "object", "required": [ "href", "created", "updated" ], "properties": { "href": { "$ref": "#/components/schemas/AddressSetHref" }, "owner": { "type": "string", "description": "A reference to an account that owns an address set" }, "created": { "$ref": "#/components/schemas/Timestamp", "description": "Address set created time" }, "updated": { "$ref": "#/components/schemas/Timestamp", "description": "Timestamp reflecting when the address set was last updated" } } }, "AddressSetTextFileParameters": { "type": "object", "description": "Parameters for text-file address set type", "required": [ "interval", "url" ], "properties": { "url": { "type": "string", "description": "A URL from which addresses are retrieved", "pattern": "^https?://[a-z].*$" }, "interval": { "type": "integer", "description": "An interval, given in seconds, that sets the frequency at which the set is updated", "minimum": 60 } }, "additionalProperties": false }, "AnyObject": { "description": "Any JSON object.", "type": "object" }, "ApplicationLogRetention": { "type": "object", "additionalProperties": false, "required": [ "type" ], "properties": { "type": { "type": "string", "description": "Type of log retention", "enum": [ "default", "cdn", "custom", "csp-reports", "pageviews", "proxy-logs", "sessions" ] }, "online_days": { "type": "integer", "description": "Number of online days.", "minimum": 1 }, "archive_days": { "type": "integer", "description": "Number of archive days. Currently not in use.", "minimum": 1 }, "online_space_allowance": { "type": "integer", "description": "Allowance for online space in bytes. Either online_days or\nonline_space_allowance must be specified. If both are specified, then both\nonline_days and online_space_allowance will be used to retain logs.\n", "minimum": 1 }, "archive_space_allowance": { "type": "integer", "description": "Allowance for archive space. Currently not in use.", "minimum": 1 } } }, "ApplicationProxy": { "type": "object", "required": [ "type" ], "additionalProperties": false, "properties": { "type": { "type": "string", "enum": [ "varnish" ] }, "engage": { "description": "If made false, the resources associated with the proxy are still\nmaintained, but the proxy is no longer used.\n", "type": "boolean", "default": true }, "cluster": { "description": "A reference to a cluster created during the initial store of an\napplication proxy object. Thereafter, it serves as an explicit identifier\nfor a proxy and is required during PATCH operations that specify an entire\nproxy (it can be omitted if using JSON Patch).\n", "type": "string" }, "magento": { "description": "When true, standard Magento-compatible VCL rules are configured.\n", "type": "boolean" }, "vcl_file": { "description": "A reference to a package file of type `vcl-bundle` with a `custom.vcl`\nfile at the package root containing Varnish Configuration Language (VCL).\nMutually exclusive with `magento = true`.\n", "type": "string", "pattern": "^/v2/files/[a-z0-9]{1,16}(?:/versions/[0-9]+)?$" }, "exclude_paths": { "description": "An array of path patterns matched to a request path that should not be\nprocessed by an application proxy. A pattern can contain wildcards that\nmatch zero or more characters. For example:\n\n - /media/*\n - /static/*.jpg\n", "type": "array", "uniqueItems": true, "items": { "type": "string", "pattern": "^/[a-zA-Z0-9._\\-.*$/~\"'@:+]*$", "maxLength": 300 } }, "tag_invalidation_behavior": { "description": "Behavior when a tag-based cache invalidation is requested. When set to\n`x_magento_tags`, ban expressions based on the header `X-Magento-Tags` are\nused. When set to `xkey`, tags are invalidated using the `xkey.purge`.\n", "type": "string", "enum": [ "x_magento_tags", "xkey" ] } } }, "ApplicationTest": { "description": "An Application Test contains test information", "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/ApplicationTestingInitializer" }, { "$ref": "#/components/schemas/ApplicationTestingIdentity" }, { "$ref": "#/components/schemas/ApplicationTestConfiguration" }, { "$ref": "#/components/schemas/ApplicationTestState" } ] }, "ApplicationTestingInitializer": { "description": "ID for an application test", "additionalProperties": false, "properties": { "id": { "type": "string", "description": "ID of the test", "pattern": "^[a-z]([-a-z0-9]*[a-z0-9])?$" } } }, "ApplicationTestingIdentity": { "description": "Identifier for an application test", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to the test", "pattern": "^/v2/tests/[a-z]([-a-z0-9]*[a-z0-9])?$" } } }, "ApplicationTestPost": { "description": "The fields required to run the test", "additionalProperties": true, "required": [ "id", "duration", "virtualUsers", "assignCost" ], "properties": { "id": { "type": "string", "description": "ID of the test", "pattern": "^[a-z]([-a-z0-9]*[a-z0-9])?$", "maxLength": 50 }, "duration": { "type": "integer", "description": "Duration to run the test in seconds", "minimum": 1 }, "virtualUsers": { "type": "integer", "description": "Virtual users to be created when test runs", "minimum": 1 }, "assignCost": { "type": "boolean", "description": "Determines if this test run will be charged to the account that ran it", "default": true }, "targets": { "type": "string", "description": "target application ID to be used to send requests" } } }, "ApplicationTestState": { "type": "object", "description": "State for an application test", "additionalProperties": false, "properties": { "created": { "type": "string", "format": "date-time", "description": "Time when the test was created" }, "updated": { "type": "string", "format": "date-time", "description": "Time when the test was last updated" } } }, "ApplicationTestConfiguration": { "type": "object", "description": "ID for an application test", "additionalProperties": false, "properties": { "attrs": { "type": "object", "description": "User configured parameters for the test" }, "description": { "type": "string", "description": "Short description of the test" } } }, "MainApplicationTestConfiguration": { "description": "Json configuration for main application test file.", "type": "object", "required": [ "probabilities", "models" ], "properties": { "probabilities": { "type": "number", "description": "Probability a particular session will run" }, "users": { "type": "array", "description": "Users credentials to be used for the requests", "items": { "$ref": "#/components/schemas/ApplicationTestUser" } }, "models": { "type": "object", "description": "Application Test session properties.", "anyOf": [ { "description": "Application Test session property.", "additionalProperties": false, "type": "object", "properties": { "file": { "type": "string", "description": "File path for test configuration" } } }, { "$ref": "#/components/schemas/SessionTypeConfiguration" } ] }, "parameters": { "type": "object", "description": "Additional parameters configured by user.", "additionalProperties": { "type": "object", "$ref": "#/components/schemas/ApplicationTestParameters" } } } }, "ApplicationTestUser": { "description": "User credentials for requests", "type": "object", "required": [ "username", "password" ], "properties": { "name": { "type": "string", "description": "Name of the user" }, "username": { "type": "string", "description": "Username of the user" }, "password": { "type": "string", "description": "Password for the described username" } } }, "ApplicationTestParameters": { "description": "User configured parameter.", "type": "object", "required": [ "type", "description", "title" ], "properties": { "type": { "type": "string", "description": "Type of the parameter", "enum": [ "string", "integer", "number", "boolean" ] }, "title": { "type": "string", "description": "Title associated with the parameter" }, "description": { "type": "string", "description": "Description of the parameter" } } }, "SessionTypeConfiguration": { "type": "object", "description": "Single session for application-test", "required": [ "requests", "type" ], "properties": { "name": { "type": "string", "description": "Name of the session" }, "requests": { "type": "array", "description": "An array of requests in a session.", "items": { "$ref": "#/components/schemas/ApplicationTestRequest" } }, "constants": { "type": "array", "description": "An array of constants to be called after each request", "items": { "$ref": "#/components/schemas/ApplicationTestRequest" } }, "length": { "type": "number", "description": "Number of requests a particular session will send", "minimum": 0 }, "type": { "type": "string", "description": "Type of session random or static", "enum": [ "user.RandomSession", "user.StaticSession" ] }, "wait-time": { "type": "integer", "description": "Wait time after each request", "minimum": 1 } } }, "ApplicationTestRequest": { "type": "object", "description": "Describes a single request in a session", "required": [ "name", "method", "url" ], "properties": { "name": { "type": "string", "description": "Name of the request" }, "headers": { "type": "object", "description": "Request header to set", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "method": { "type": "string", "description": "Http request method", "enum": [ "GET", "POST", "PUT", "PATCH", "DELETE", "HEAD" ] }, "url": { "type": "string", "description": "Url of the request", "format": "uri" }, "probability": { "type": "number", "description": "Probability of the request to be picked" }, "wait": { "type": "boolean", "description": "Wait after the request or not" }, "cookies": { "nullable": true, "type": "array", "description": "An array of requests in a session.", "items": { "$ref": "#/components/schemas/ApplicationTestCookie" } }, "injections": { "type": "array", "description": "An array of injections in a session.", "items": { "$ref": "#/components/schemas/ApplicationTestInjections" } }, "scrape": { "type": "array", "description": "An array of scrape in a session.", "items": { "$ref": "#/components/schemas/ApplicationTestScrape" } }, "call-constants": { "type": "boolean", "description": "Call contansts in a request or not" }, "encode": { "type": "boolean", "description": "Determine if URL is URL encoded for injections" } } }, "ApplicationTestCookie": { "type": "object", "description": "Cookie to be used in request", "required": [ "name", "value" ], "properties": { "name": { "type": "string", "description": "Name of the cookie" }, "value": { "type": "string", "description": "Value of the cookie" }, "Max-Age": { "type": "integer", "description": "Max age of cookie" }, "Path": { "type": "string", "description": "Path of the cookie" } } }, "ApplicationTestInjections": { "type": "object", "description": "Injections allow injecting data from previous responses into the next outgoing request", "required": [ "from", "location" ], "properties": { "from": { "type": "string", "description": "Injection from", "enum": [ "formdata", "cookie", "header", "inserts", "forminject" ] }, "location": { "type": "string", "description": "Injection location", "enum": [ "formdata", "cookie", "header", "forminject", "url", "body" ] }, "name": { "type": "string", "description": "Name of injection" }, "from-name": { "type": "string", "description": "Injection from name" } } }, "ApplicationTestScrape": { "type": "object", "description": "Scrapes allow scraping data from a response so it can be injected into later requests", "required": [ "id", "sep-start", "sep-end", "insertid" ], "properties": { "id": { "type": "string", "description": "String is that is searched for in the response. If found, it is scraped." }, "sep-start": { "type": "string", "description": "The beginning token to split the element." }, "sep-end": { "type": "string", "description": "The last token to split the element." }, "insertid": { "type": "string", "description": "Insert ID of scrape" }, "transform": { "type": "array", "description": "An array of transform.", "items": { "$ref": "#/components/schemas/ApplicationTestTransform" } } } }, "ApplicationTestTransform": { "type": "object", "description": "Transform", "required": [ "type" ], "properties": { "type": { "type": "string", "description": "Transform type", "enum": [ "transform.DecodeBase64", "transform.MultiTransform", "transform.DecodeJSONandSelect" ] }, "config": { "type": "object", "description": "Transform object", "additionalProperties": { "type": "string" } } } }, "Application": { "description": "An application configuration and its state.", "type": "object", "allOf": [ { "$ref": "#/components/schemas/ApplicationIdentifier" }, { "$ref": "#/components/schemas/ApplicationInitializer" }, { "$ref": "#/components/schemas/ApplicationState" }, { "$ref": "#/components/schemas/ApplicationConfiguration" } ] }, "ApplicationCheckResult": { "type": "object", "description": "The result of running a check for an application", "properties": { "url": { "type": "string", "description": "The url being checked", "format": "uri" }, "components": { "type": "array", "description": "The state of the components that were checked", "items": { "$ref": "#/components/schemas/ApplicationComponent" } }, "probe_results": { "type": "array", "description": "The result of probes on individual servers", "items": { "$ref": "#/components/schemas/ApplicationProbeResult" } } } }, "ApplicationComponent": { "type": "object", "description": "A logical component of the application", "properties": { "probed_addresses": { "type": "array", "description": "The public addresses that have been probed", "items": { "type": "string", "format": "ipv4" } }, "description": { "type": "string", "description": "A brief description of the component" }, "messages": { "type": "array", "description": "Messages reflecting the status of the component", "items": { "$ref": "#/components/schemas/ApplicationComponentMessage" } }, "type": { "type": "string", "description": "The type of component. The current types are: dns|adc|application|unknown_proxies|unknown_servers|cloudflare_proxies|cloudflare_servers. Additional types may be added in the future." }, "status": { "type": "string", "description": "The status of the component. Can be operational|degraded|partially_disrupted|disrupted" } } }, "ApplicationComponentMessage": { "type": "object", "description": "A message for an application component", "properties": { "content": { "type": "string", "description": "The text content of the message" }, "severity": { "type": "string", "description": "The description of the message" } } }, "ApplicationConfiguration": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the application.", "minLength": 1, "maxLength": 255 }, "aliases": { "type": "array", "description": "Unordered array of application host names.\n", "items": { "$ref": "#/components/schemas/Hostname" }, "minItems": 1, "uniqueItems": true }, "cdn_aliases": { "type": "array", "description": "Unordered array of alaises whose requests are processed by the\nCDN if enabled by this application.\n", "items": { "$ref": "#/components/schemas/Hostname" }, "minItems": 1, "uniqueItems": true }, "components": { "type": "array", "description": "List of resource layers that are attached to this application. Examples of such resources include EC2 or RDS instances available in an AWS cloud provider.", "items": { "$ref": "#/components/schemas/Component" } }, "cdn_configuration": { "type": "object", "description": "Configuration for the CDN distribution.", "$ref": "#/components/schemas/CdnConfiguration" }, "cdn_service": { "description": "A href to the cdn service configured for the application.", "type": "string", "pattern": "^/v2/services/[a-z0-9]+$" }, "default_hostname": { "description": "The default alias for an application.", "$ref": "#/components/schemas/Hostname" }, "dns_service": { "description": "A href to the dns service configured for the application.", "type": "string", "nullable": true, "pattern": "^/v2/services/[a-z0-9]+$" }, "servers_hostname": { "nullable": true, "description": "A fully qualified domain name (FQDN) whose addresses are used to set the backend servers to which traffic should be sent", "$ref": "#/components/schemas/Hostname" }, "delivery": { "type": "string", "description": "The mode of delivery for an application. One of 'cdn', 'without-cdn', or 'rewrite-to-cdn'. The 'rewrite-to-cdn' mode is not recommended for new applications", "enum": [ "cdn", "rewrite-to-cdn", "without-cdn" ] }, "enable_rum": { "type": "boolean", "description": "Enable RUM for the application." }, "enable_tls": { "type": "boolean", "description": "Enable TLS for the application. The tls_configuration is required\nif true.\n", "default": false }, "tls_configuration": { "type": "object", "description": "TLS configuration that is applied when TLS is enabled.", "$ref": "#/components/schemas/TlsConfiguration" }, "metrics": { "type": "array", "description": "Array of metric configurations attached for the application", "items": { "$ref": "#/components/schemas/MetricConfiguration" }, "uniqueItems": true }, "monitoring": { "$ref": "#/components/schemas/Monitoring" }, "whitelist_href": { "$ref": "#/components/schemas/AddressSetHref", "description": "A reference to an address set. Addresses that are part of this set will always be allowed access" }, "blacklist_href": { "$ref": "#/components/schemas/AddressSetHref", "description": "A reference to an address set. Addresses that are part of this set will continue to have restricted access" }, "blacklist_user_agents": { "type": "string", "nullable": true, "description": "A regular expression of user agents to be restricted access.", "minLength": 0, "maxLength": 5000, "format": "regex" }, "concurrent_limit": { "$ref": "#/components/schemas/ConcurrentLimit" }, "maximum_queue_time": { "$ref": "#/components/schemas/MaximumQueueTime" }, "suspend_limit": { "$ref": "#/components/schemas/SuspendLimit" }, "probes": { "type": "array", "items": { "type": "string", "format": "uri", "description": "A list of urls to be probed in application status checks." } }, "protection": { "type": "string", "description": "The protection mode.", "enum": [ "normal", "maximum" ] }, "cluster": { "$ref": "#/components/schemas/ClusterHref", "description": "Application cluster." }, "servers": { "nullable": true, "type": "array", "description": "Application static servers.", "items": { "$ref": "#/components/schemas/ApplicationServer" }, "minItems": 1, "uniqueItems": true }, "request_timeout": { "type": "integer", "description": "Time for which Webscale proxy will wait for a backend server to respond. If proxy does not receive response in a specified time from the backend server, a maintenance page with status 502 Bad Gateway will be returned", "minimum": 1, "maximum": 60, "default": 30 }, "shields": { "type": "array", "description": "References to security groups or firewalls that are updated with the\naddresses of the data plane used by this application. Application servers\nconfigured to use the same security group will only be accessible by\nthe Webscale service, making direct attacks impossible.\n", "items": { "type": "string", "description": "A reference to a security group or firewall obtained through a provider\nservice API call.\n" } }, "shields_include_whitelist": { "type": "boolean", "description": "Add the application allowlist to the addresses configured for shields.\nThis should only be used when the allowlist is relatively small because\ncloud provider security groups only support a limited number of addresses.\n", "default": false }, "site_cache": { "nullable": true, "description": "A configuration for Dynamic Site Cache", "$ref": "#/components/schemas/SiteCache" }, "trusted_proxies": { "nullable": true, "description": "Trust requests only from the referenced peers. The address from the\n`trusted_proxies_header` is accepted as the request address only from a\ntrusted peer. If the array is empty the address of the peer that connects\nto the Webscale data plane is used as the request address.\n", "type": "array", "items": { "$ref": "#/components/schemas/AddressSetHref" }, "uniqueItems": true }, "trusted_proxies_only": { "type": "boolean", "description": "Blocks traffic that does not come from a trusted proxy.\n", "default": false }, "trusted_proxies_header": { "type": "string", "description": "The name of the header from a trusted proxy that is used to obtain\nthe request address. When not set, `X-Forwarded-For` is used.\n", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$", "default": "X-Forwarded-For" }, "data_planes": { "type": "array", "description": "Configured data planes", "items": { "type": "string", "description": "A reference to the data plane.", "pattern": "^/v2/data-planes/[a-z0-9]+$" }, "minItems": 1, "maxItems": 1 }, "labels": { "type": "array", "description": "Array of labels that will be attached to the application.", "items": { "$ref": "#/components/schemas/Label" } }, "merge_slashes": { "$ref": "#/components/schemas/MergeSlashes" }, "translate_path": { "$ref": "#/components/schemas/TranslatePath", "default": "preserve" }, "pagespeed_disallow": { "type": "array", "description": "A set of URL patterns to exclude from PageSpeed optimization. When not\nset or when it includes either the pattern `*` or `/*`, then PageSpeed is\ndisabled for an application.\n", "items": { "type": "string", "pattern": "(?:[\\w.\\-~!$&'()*+,;=:@?/]|%[A-Fa-f0-9]{2})*" } }, "pagespeed_exclude_agents": { "type": "string", "description": "User agents that match this regular expression are excluded from pagespeed" }, "pagespeed_map_proxy_domains": { "type": "array", "description": "A set of domains that are integrated into the pages for this site", "items": { "type": "string", "pattern": "(https?://)?(?:[\\w_\\-]{1,63}\\.){1,}[\\w_\\-]{2,63}(?:/(?:[\\w.\\-~!$&'()*+,;=:@?/]|%[A-Fa-f0-9]{2})*)?" } }, "microsite": { "description": "A reference to the file that the application will use as its default microsite.", "$ref": "#/components/schemas/FileHref" }, "web_controls": { "type": "array", "description": "An array of specific mode web controls processed in sequence to modify the behavior of request processing", "items": { "$ref": "#/components/schemas/WebControlConfiguration" }, "minItems": 0, "uniqueItems": true }, "log_retention": { "type": "array", "description": "An array of application log retention configuration objects", "items": { "$ref": "#/components/schemas/ApplicationLogRetention" } }, "trusted_proxies_auth_header_name": { "nullable": true, "type": "string", "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,100}$", "description": "Along with `trusted_proxies_auth_header_value`, provides a means to\nauthenticate a proxy downstream from the Webscale data plane. If the\nconfigured header and value are provided, then the downstream peer for\na request is treated as trusted, and the request IP address is taken\nfrom the value of the header specified as `trusted_proxies_header`,\nor its default `X-Forwarded-For`. If the attribute\n`trusted-proxies-only` is set to true, then requests that arrive\nwithout a matching header value will be denied. Note that this attribute is\nignored when `delivery` is set to `cdn`.\n", "minLength": 1, "maxLength": 100 }, "trusted_proxies_auth_header_value": { "nullable": true, "type": "string", "pattern": "^[!\"#$%&'()*+,\\-./0-9:;<=>?@A-Z\\[\\\\\\]^_`a-z{|}~ ]{0,8190}$", "description": "Along with `trusted_proxies_auth_header_name`, provides a means to\nauthenticate a proxy downstream from the Webscale data plane. If the\nconfigured header and value are provided, then the downstream peer for\na request is treated as trusted, and the request IP address is taken\nfrom the value of the header specified as `trusted_proxies_header`,\nor its default `X-Forwarded-For`. If the attribute\n`trusted-proxies-only` is set to true, then requests that arrive\nwithout a matching header value will be denied. Note that this attribute is\nignored when `delivery` is set to `cdn`.\n", "minLength": 1, "maxLength": 100 }, "trusted_proxies_request_id_header": { "nullable": true, "type": "string", "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,100}$", "description": "If a request arrives from a trusted proxy, either by matching an\naddress in `trusted_proxies` or by matching the value specified by\n`trusted_proxies_auth_header_name`, then a request id for each request\nwill be extracted from the value of this header, when present.\n", "minLength": 1, "maxLength": 100 } } }, "ApplicationHref": { "type": "string", "pattern": "^/v2/applications/[a-z0-9]+$", "description": "The endpoint for the application resource." }, "ApplicationIdentifier": { "type": "object", "properties": { "href": { "type": "string", "description": "The API endpoint for an application resource." } } }, "ApplicationInitializer": { "type": "object", "properties": { "endpoint": { "type": "string", "pattern": "^([a-zA-Z0-9][a-zA-Z0-9\\-_]*\\.){2,}[a-zA-Z0-9-]{2,}$", "description": "The DNS endpoint for the application." }, "subscriptions": { "type": "array", "description": "Plans that this application will be subscribed to.", "items": { "anyOf": [ { "type": "object", "required": [ "plan" ], "properties": { "plan": { "type": "string", "description": "A reference to a plan.\n", "pattern": "^/v2/plans/[A-Za-z0-9-_]+$" } }, "additionalProperties": false } ] }, "minItems": 1, "uniqueItems": true } } }, "ApplicationLog": { "type": "object", "required": [ "from", "group", "records", "to" ], "properties": { "from": { "$ref": "#/components/schemas/Timestamp" }, "to": { "$ref": "#/components/schemas/Timestamp" }, "group": { "type": "object", "required": [ "fields", "result" ], "properties": { "fields": { "type": "array", "description": "A list of attribute names specified by the 'groupselect' parameter in the request.", "items": { "type": "string" } }, "result": { "type": "array", "description": "A list with each item containing a list of attribute values for the fields included the 'fields' attribute.", "items": { "type": "object" } } } }, "records": { "type": "object", "required": [ "count", "fields", "result", "start" ], "properties": { "count": { "type": "number", "description": "Number of items included in the result." }, "fields": { "type": "array", "items": { "type": "string" }, "description": "A sequence of attribute names specified by the `select` parameter\nin the request.\n" }, "next": { "type": "number", "description": "The starting record number representing the first item not already\nincluded in the 'result'. This is the value that must be specified\nas the 'start' value to fetch consecutive result records. This\nvalue along with the 'start' value enables server side pagination\namongst the result records.\n" }, "result": { "type": "array", "description": "An array with each item consisting of an a array of attribute values\nfor the attribute names included the 'fields' attribute.\n", "items": { "type": "object" } }, "start": { "type": "number", "description": "The starting record number representing the first item included\nin the 'result'. This will mirror the 'start' value specified\nin the request. This value along with the 'next' value enables\nserver side pagination amongst the result records. The first\nrecord starts at 1.\n" } } } } }, "ApplicationMonitorParameters": { "type": "object", "description": "The configuration of an application monitor", "additionalProperties": false, "properties": { "certificate_expiration": { "type": "object", "description": "This parameter configures the monitor to trigger on certificates that will expire within a user-defined timeframe.\n", "additionalProperties": false, "required": [ "first_warning" ], "properties": { "first_warning": { "description": "Represents number of days to begin alerting about the certificate expiry.\n", "type": "integer", "minimum": 1 } } } } }, "ApplicationPatch": { "$ref": "#/components/schemas/ApplicationConfiguration" }, "ApplicationPost": { "type": "object", "required": [ "name", "aliases" ], "allOf": [ { "$ref": "#/components/schemas/ApplicationInitializer" }, { "$ref": "#/components/schemas/ApplicationConfiguration" } ] }, "ApplicationPost_logs": { "anyOf": [ { "type": "object", "$ref": "#/components/schemas/LogPost" }, { "type": "array", "items": { "$ref": "#/components/schemas/LogPost" } } ] }, "ApplicationPost_subscriptions": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/SubscriptionReadWrite" } ] }, "ApplicationPut_subscriptions": { "type": "array", "description": "An array of subscription configurations. At least one plan must be\na primary plan.\n", "minItems": 1, "items": { "type": "object", "required": [ "plan" ], "properties": { "plan": { "type": "string", "description": "A reference to a plan.\n", "pattern": "^/v2/plans/[A-Za-z0-9-_]+$" } }, "additionalProperties": false } }, "ApplicationProbeResult": { "type": "object", "description": "The results of an individual server probe.", "properties": { "address": { "type": "string", "format": "ipv4", "description": "The public address of the server being probed." }, "result": { "type": "string", "description": "A message indicating the result of the probe." }, "response_time": { "type": "number", "format": "float", "description": "How long the request took in milliseconds." }, "redirect_location": { "type": "string", "format": "uri", "description": "If the server responds with a redirect, the redirect location is returned." }, "success": { "type": "boolean", "description": "True if the probe is considered successful, false otherwise" } } }, "ApplicationServer": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/Server" }, { "properties": { "description": { "type": "string", "description": "Description of the server.", "default": "", "minLength": 0, "maxLength": 255 } } } ] }, "ApplicationState": { "type": "object", "required": [ "created", "current_outage", "state" ], "properties": { "cdn_ready": { "type": "boolean", "description": "True when a `delivery = cdn` has been configured and is ready.\n", "readOnly": true }, "cdn_state": { "description": "When `delivery = rewrite-to-cdn` is used, specifies the state of the\nCDN assigned to the application.\n", "type": "string", "deprecated": true, "readOnly": true }, "created": { "type": "string", "format": "date-time", "description": "Application created time.", "readOnly": true }, "current_outage": { "type": "boolean", "description": "Indicates if the application is currently experiencing an outage.\n", "default": false, "readOnly": true }, "last_outage": { "type": "string", "format": "date-time", "description": "Last time the application had an outage.", "readOnly": true }, "state": { "type": "string", "description": "The current state of the application.", "enum": [ "running", "maintenance", "entering_maintenance", "exiting_maintenance", "starting", "stopped", "stopping" ], "readOnly": true } } }, "ApplicationStatus": { "type": "array", "description": "The checks that were run in querying status for an application", "items": { "$ref": "#/components/schemas/ApplicationCheckResult" } }, "ArchivedLog": { "type": "object", "description": "Archived log information", "required": [ "href", "ranges" ], "properties": { "href": { "type": "string", "description": "The endpoint for the resource" }, "ranges": { "type": "array", "description": "Details of the available archived logs.", "items": { "$ref": "#/components/schemas/Range" } } } }, "ArchivedLogs": { "type": "array", "description": "The available archived logs.", "items": { "$ref": "#/components/schemas/ArchivedLog" } }, "Asn": { "description": "An Autonomous System Number (ASN) as a decimal string.", "type": "string", "pattern": "^[1-9][0-9]*$" }, "AuthorizationAccount": { "type": "object", "description": "The account for which an authorization is to be created", "required": [ "account" ], "properties": { "account": { "$ref": "#/components/schemas/AccountHref", "description": "A reference to the account to be authorized" } } }, "Billing": { "type": "object", "description": "Billing information for an account.", "required": [ "invoices", "payments" ], "properties": { "invoices": { "type": "array", "description": "A list of invoices for the account in descending order by due_date.", "items": { "$ref": "#/components/schemas/InvoiceItem" } }, "payments": { "type": "array", "description": "A list of payments for the account in descending order by date.", "items": { "$ref": "#/components/schemas/PaymentItem" } } } }, "BillingService": { "nullable": true, "type": "object", "required": [ "type", "quickbooks_id" ], "properties": { "type": { "type": "string", "description": "Type of billing service used for the account", "enum": [ "quickbooks" ] }, "quickbooks_id": { "type": "integer", "description": "Id of the account in quickbooks" } }, "additionalProperties": false }, "Blacklist": { "type": "array", "description": "A list of addresses for which access is restricted.", "items": { "$ref": "#/components/schemas/BlacklistItem" }, "uniqueItems": true }, "BlacklistItem": { "type": "object", "required": [ "address", "description" ], "properties": { "address": { "$ref": "#/components/schemas/Cidr", "description": "An ip address to be black listed." }, "description": { "type": "string", "description": "A description of the black listed address." }, "expiry": { "type": "string", "description": "An iso8601 compatible timestamp for when the blacklist should expire.", "format": "date-time" } } }, "BlacklistItemPut": { "type": "object", "required": [ "description" ], "properties": { "description": { "type": "string", "description": "A description of the black listed address." }, "expiry": { "type": "string", "description": "An iso8601 compatible timestamp for when the blacklist should expire.", "format": "date-time" } } }, "Blueprint": { "type": "object", "description": "The endpoint resource reference to the blueprint of the servers.\n", "properties": { "docker_registry_service": { "type": "string", "pattern": "^/v2/services/[a-z0-9]+$", "description": "A reference to a docker registry service from which images are to be\nretrieved.\n" }, "files": { "type": "array", "description": "A set of files to be made available on servers created with this blueprint.", "items": { "$ref": "#/components/schemas/MetadataFileEntry" } }, "helm_chart_reference": { "$ref": "#/components/schemas/FileHref", "description": "A reference to a file object containing a Helm chart.\n" }, "helm_chart_values": { "type": "string", "description": "A Base64 encoded string of the YAML values to be passed into the Helm\nchart on creation.\n" }, "helm_release_name": { "type": "string", "description": "The name of the Helm release to install. Each deployment installs its\nown copy of the release into its own namespace.\n", "minLength": 1, "maxLength": 53, "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" }, "helm_service_name": { "type": "string", "description": "The name of the Kubernetes Service in the release that receives request\ntraffic. It has to be a NodePort Service exposing exactly one port, and\nits node addresses become the origins for the cluster.\n", "minLength": 1, "maxLength": 63, "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" }, "iam_instance_profile": { "type": "string", "description": "An Amazon Resource Name (ARN) specifying an IAM instance profile. This\ncan be used for blueprints that use an EC2 service provider. It is ignored\notherwise.\n" }, "identity": { "$ref": "#/components/schemas/IdentityConfiguration", "description": "Azure identity to be assigned to cluster servers." }, "image": { "$ref": "#/components/schemas/ProviderResourceHref", "description": "Object endpoint resource reference for the image being specified.\n" }, "instance_template": { "$ref": "#/components/schemas/InstanceTemplate", "description": "Object endpoint resource reference for instance template being specified.\n" }, "instance_type": { "$ref": "#/components/schemas/ProviderResourceHref", "description": "Object endpoint resource reference for the instance type being specified.\n" }, "logs": { "type": "object", "description": "Configuration that specifies which logs are collected from instances using\nthe Webscale Monitoring Agent (WMA).\n", "properties": { "applications": { "type": "array", "items": { "$ref": "#/components/schemas/BlueprintLogsApplication" } } } }, "metadata": { "type": "array", "description": "A set of key/value pairs that will be provided to servers created with this blueprint. Server blueprint metadata overrides the cluster metadata on a key-by-key basis.", "items": { "$ref": "#/components/schemas/MetadataEntry" } }, "name": { "type": "string", "description": "The name of the blueprint used for managing deployments. Required for\nKubernetes blueprints and not accepted on VM blueprints.\n", "enum": [ "helm" ] }, "networks": { "type": "array", "description": "List of network or subnet endpoint resource references to associate the server with. Network availability may be limited to specific zones depending on the cloud provider.\n", "items": { "$ref": "#/components/schemas/ProviderResourceHref" } }, "network_tags": { "type": "array", "description": "List of network tags to associate with the server. Only applicable for Google provider.", "items": { "type": "string" } }, "placement": { "$ref": "#/components/schemas/ProviderResourceHref", "description": "Endpoint resource reference specifying placement for resources created\nusing this blueprint.\n" }, "provider": { "description": "Provider used to create the blueprint.\n", "$ref": "#/components/schemas/Provider" }, "security_groups": { "type": "array", "description": "List of security group endpoint resource references to associate with the server. Only applicable for AWS provider.", "items": { "$ref": "#/components/schemas/SecurityGroupHref" } }, "service": { "type": "string", "pattern": "^/v2/services/[a-z0-9]+$", "description": "A reference to a service used to create instances from this blueprint." }, "storage_account": { "$ref": "#/components/schemas/ProviderResourceHref", "description": "Storage account reference." }, "zone": { "$ref": "#/components/schemas/ProviderResourceHref", "description": "Deprecated. Must use placement instead of zones. Object endpoint resource reference for the zone being specified.\n" } }, "additionalProperties": false }, "BlueprintLogsApplication": { "type": "object", "description": "The application logs config object to specify which cluster logs are sent to\ncustom logs.\n", "required": [ "href", "streams" ], "properties": { "href": { "$ref": "#/components/schemas/ApplicationHref" }, "streams": { "type": "array", "description": "Streams to be collected for an application.", "items": { "$ref": "#/components/schemas/BlueprintLogStream" } } }, "additionalProperties": false }, "BlueprintLogStream": { "type": "object", "description": "A log stream configuration for use with Webscale Monitoring Agent.\n", "required": [ "file_paths", "name" ], "properties": { "file_paths": { "type": "array", "description": "The file paths to collect logs from.", "items": { "$ref": "#/components/schemas/BlueprintLogStreamFilePath" } }, "multiline_start_regex": { "type": "string", "description": "The regex that defines the start of a log line. The log lines after a\nregex match will be sent as a single log entry until the next match is\nfound.\n" }, "name": { "type": "string", "description": "An arbitrary name allowing for logs to be identified by their source or\npurpose.\n" }, "filter_regex": { "type": "string", "description": "A regular expression to match against log lines.\n\nWhen provided, only log lines that match the regular expression are\ncaptured. Log lines that do not match the regular expression are\nexcluded.\n", "nullable": true }, "filters": { "type": "array", "description": "A list of substrings to match against log lines.\n\nWhen provided, only log lines that contain at least one of the specified\nsubstrings are captured. Log lines that do not contain any of these\nsubstrings are excluded.\n", "nullable": true, "items": { "type": "string" } } }, "additionalProperties": false }, "BlueprintLogStreamFilePath": { "type": "string", "description": "An absolute file path to collect logs from. Can have a wildcard match with an\nasterisk for the file name but not directory name.\n", "pattern": "^/.*[^/]$" }, "BootstrapConfiguration": { "type": "object", "required": [ "file", "command" ], "properties": { "file": { "$ref": "#/components/schemas/FileHref", "description": "Cloud Init payload (.tar.gz) to deliver on all newly commissioned servers." }, "command": { "type": "string", "description": "Cloud Init command to run once the server is commissioned.", "minLength": 1 } } }, "BotManagement": { "type": "object", "required": [ "user_agent" ], "properties": { "user_agent": { "type": "boolean", "description": "When set to true, bot identification takes place using user-agent of the request.", "default": false } }, "additionalProperties": false }, "Builder": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/BuilderIdentity" }, { "$ref": "#/components/schemas/BuilderInitializer" }, { "$ref": "#/components/schemas/BuilderConfiguration" }, { "$ref": "#/components/schemas/BuilderState" } ], "additionalProperties": false }, "BuilderConfiguration": { "description": "Universally configurable attributes for a builder object.\n", "properties": { "name": { "description": "A unique name for a builder.", "type": "string" }, "included_branches": { "type": "array", "description": "Specifies branches that will be selected by this builder. Branch names\nmay contain wildcard characters (*) to mach zero or more characters in a\nbranch name.\n", "default": [ "‘*’" ], "items": { "type": "string" } }, "excluded_branches": { "type": "array", "description": "Specifies exclusion patterns for branches that are otherwise selected by\nincluded_branches. Branch names may contain wildcard characters (*) to\nmach zero or more characters in a branch name.\n", "default": [ ], "items": { "type": "string" } }, "dockerfile": { "description": "A path to a dockerfile within the repository. The dockerfile is used to\ncreate a docker image.\n", "type": "string" }, "image_registry": { "description": "A service that will receive the result of this builder needs to be an\naws ECR. The service must have been previously added in provider.\n", "type": "string", "pattern": "/v2/services/[a-z0-9]+" }, "image_repository": { "description": "Repository that will receive the result of this builder.", "type": "string" }, "image_tags": { "description": "A set of tags to attach to the built image.\n", "type": "array", "items": { "type": "string", "maxLength": 128 } }, "include_commit_tags": { "description": "When true, source repository tags associated with the commit being built\nwill be included in the built image. When false, only tags specified in\nimage_tags will be included in the built image.\n", "type": "boolean" }, "build_on_commit": { "description": "When true, build automatically each time a commit is pushed to a\nmatching branch. When false, a build may be started using the\nstart-build task.\n", "type": "boolean", "default": false }, "platform": { "description": "The platform to use when building the image.\n", "type": "string", "enum": [ "linux/amd64", "linux/arm64" ] }, "cpu": { "description": "The amount of CPU to allocate to the container running the build (in millicores).\n", "type": "integer" }, "memory": { "description": "The amount of memory to allocate to the container running the build (in MiB).\n", "type": "integer" }, "files": { "type": "array", "description": "A set of files to include in the build context.\n", "items": { "$ref": "#/components/schemas/BuilderFileEntry" } }, "environment": { "type": "array", "description": "A set of environment variables to include in the build context.\n", "items": { "$ref": "#/components/schemas/BuilderEnvironmentVariable" } }, "clusters": { "type": "array", "items": { "type": "string", "pattern": "/v2/clusters/[a-z0-9]+" }, "description": "List of cluster references to be automatically deployed with the\nresulting image upon successful completion of a build.\n" } } }, "BuilderFileEntry": { "type": "object", "required": [ "file", "path" ], "description": "A file to include in the build context and where it should be placed within the context.", "properties": { "file": { "type": "string", "pattern": "^/v2/files/.*$", "description": "A reference to a Webscale file." }, "path": { "type": "string", "description": "The relative path within the build context where the file should be placed.", "pattern": "^[^\\0]*$" }, "template_substitution": { "type": "boolean", "description": "When true, the file will be processed for template substitutions before being placed in the build context.", "default": false } }, "additionalProperties": false }, "BuilderEnvironmentVariable": { "type": "object", "required": [ "key", "value" ], "description": "A key/value pair representing an environment variable to set in the build context.\n", "properties": { "key": { "type": "string", "description": "The name of the environment variable." }, "value": { "type": "string", "description": "The value of the environment variable. This may include value template syntax." } }, "additionalProperties": false }, "BuilderIdentity": { "type": "object", "properties": { "href": { "type": "string", "pattern": "/v2/builders/[a-z0-9]+", "description": "A reference to a builder object." } } }, "BuilderInitializer": { "type": "object", "properties": { "source_repository": { "type": "string", "pattern": "/v2/resources/[a-z0-9]+", "description": "References a repository from which source code is obtained to build an\nimage. The repository must have been previously connected.\n" } } }, "BuilderPatch": { "$ref": "#/components/schemas/BuilderConfiguration" }, "BuilderPost": { "description": "A Docker builder creates a Docker image from it and then pushes the image to\nan AWS ECR registry.\n", "type": "object", "required": [ "source_repository", "dockerfile", "image_registry", "image_repository" ], "allOf": [ { "$ref": "#/components/schemas/BuilderInitializer" }, { "$ref": "#/components/schemas/BuilderConfiguration" } ] }, "CacheKeyConfiguration": { "type": "object", "description": "The request attributes used to construct the cache key for requests matching this rule. Note that the request path is always included in the cache key construction.", "properties": { "browser": { "type": "boolean", "description": "When set to true, browser attributes used for content optimization are used in the cache key construction, ignored otherwise.", "default": false }, "cookie": { "type": "string", "description": "The value of the specified cookie will be used to construct the cache key. If the value is null, it will be ignored.", "default": "null", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "hostname": { "type": "boolean", "description": "When set to true, the host name is used in the cache key construction, ignored otherwise.", "default": false }, "header": { "type": "array", "nullable": true, "description": "Header names whose values are included in cache key construction.\n", "items": { "type": "string", "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,100}$" }, "uniqueItems": true }, "query": { "type": "boolean", "description": "When set to true, query parameters are used in the cache key construction, ignored otherwise.", "default": false } } }, "CacheTagConfiguration": { "type": "object", "description": "The configuration to populate cache tags.", "required": [ "name", "from" ], "properties": { "from": { "type": "string", "description": "The tags are used from the request header by default.", "enum": [ "header" ] }, "name": { "description": "Header names to be included in the cache tag.", "type": "string", "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,100}$", "minLength": 1 } } }, "CdnCacheKey": { "type": "object", "description": "Specifies which headers, cookies, and query parameters are used as a key for\ncache entries. A request that has a cache key value shared by a request for\nwhich a response is cached may deliver that response.\n", "required": [ "headers", "cookies", "queries" ], "properties": { "headers": { "description": "Specifies how HTTP request headers are used in constructing a cache key.\nIf `none`, then headers are not used. If `include-specified`, then the\n`header_names` attribute specifies which HTTP headers are used.\n", "type": "string", "enum": [ "none", "include-specified" ] }, "header_names": { "description": "When `headers = include-specified`, specifies which headers to include\nin a cache key.\n", "type": "array", "items": { "type": "string", "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,100}$" }, "uniqueItems": true }, "cookies": { "description": "Specifies how HTTP cookies are used in constructing a cache key.\n\n| Value | Description |\n| ----------------- | --------------------- |\n| none | Cookies are not used. |\n| include-specified | Include only the specified cookies. |\n| exclude-specified | Use all cookies except those specified. |\n| all | All cookies are used. |\n\nTo improve caching performance, the least inclusive option that produces\na correct result should be used.\n", "type": "string", "enum": [ "none", "include-specified", "exclude-specified", "all" ] }, "cookie_names": { "description": "When `cookies = include-specified`, specifies the names of cookies to\ninclude. When `cookies = exclude-specified`, specifies the names of\ncookies to exclude.\n", "type": "array", "items": { "type": "string", "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "uniqueItems": true }, "queries": { "description": "Specifies how HTTP query parameters are used in constructing a cache key.\n\n| Value | Description |\n| ----------------- | --------------------- |\n| none | The query is not used. |\n| include-specified | Include only the specified query parameters. |\n| exclude-specified | Use all query parameters except those specified. |\n| all | The entire query is used. |\n\nTo improve caching performance, the least inclusive option that produces\na correct result should be used.\n", "type": "string", "enum": [ "none", "all", "include-specified", "exclude-specified" ] }, "query_names": { "description": "When `queries = include-specified`, specifies the names of query\nparameters to include. When `queries = exclude-specified`, specifies the\nnames of query parameters to exclude.\n", "type": "array", "items": { "type": "string", "pattern": "^[a-zA-Z0-9._\\-~!$&'()*+,;=:@/%]*$" }, "uniqueItems": true } } }, "CdnConfiguration": { "type": "object", "description": "Configuration for the CDN of an application.", "required": [ "controls" ], "properties": { "controls": { "type": "array", "description": "Specifies caching and origin request behaviors for requests that match a\npattern.\n\nSpecifies CloudEDGE workers to activate edge functions. If\nmultiple controls match for a request, the first matchis used.\n", "items": { "$ref": "#/components/schemas/CdnControl" } }, "consistent_hash_type": { "nullable": true, "type": "string", "description": "Specifies which characteristics of requests are used to determine\nsimilarity in order to repeatably route similar requests to the same cache\ninstance.\n", "enum": [ "path", "path-query" ], "default": "path" } }, "additionalProperties": false }, "CdnControl": { "type": "object", "required": [ "path_pattern", "cache_key" ], "properties": { "path_pattern": { "$ref": "#/components/schemas/CdnControlPath" }, "default_ttl": { "description": "The default time-to-live (TTL), in seconds, for entries cached by this\ncontrol for responses that do not include a `Cache-Control` header.\n", "type": "integer", "minimum": 0, "maximum": 31536000, "default": 0 }, "maximum_ttl": { "description": "The maximum time-to-live (TTL), in seconds. A response whose Cache-Control\nor Expires header specifies that it may be cached for longer than this\nvalue will be stored in the Webscale CDN cache for no longer than\nmaximum_ttl. This does not remove or modify headers in the response, and\nso user agents may still cache resources for the duration specified in the\nheaders.\n", "type": "integer", "minimum": 0, "maximum": 31536000 }, "cache_key": { "$ref": "#/components/schemas/CdnCacheKey" }, "origin_request": { "description": "A configuration that determines whether headers, cookies and query parameters of the viewer request needs to be sent to the origin or not.", "$ref": "#/components/schemas/CdnOriginRequest" }, "origin_request_handlers": { "type": "array", "description": "The handler to run for matching requests made when Webscale CDN contacts origin.", "items": { "$ref": "#/components/schemas/HandlerHref" }, "maxItems": 1 }, "origin_response_handlers": { "type": "array", "description": "The handler to run for matching requests made when origin responds to Webscale CDN.", "items": { "$ref": "#/components/schemas/HandlerHref" }, "maxItems": 1 } } }, "CdnControlAssociation": { "type": "object", "description": "The application and CDN control paths with which the handler is associated.", "additionalProperties": false, "properties": { "application": { "$ref": "#/components/schemas/ApplicationHref" }, "cdn_controls": { "type": "array", "items": { "$ref": "#/components/schemas/CdnControlPath" } } } }, "CdnControlPath": { "type": "string", "description": "A pattern that is matched to a request path to determine if the control is\nused for a request. A pattern can contain wildcards that match zero or more\ncharacters. For example:\n\n- /media/*\n- /static/*.jpg\n", "pattern": "^[a-zA-Z0-9._\\-.*$/~\"'@:+]*$", "maxLength": 255, "minLength": 1 }, "CdnOriginRequest": { "type": "object", "required": [ "headers", "cookies", "queries" ], "properties": { "headers": { "description": "Determines whether any HTTP headers in viewer requests (and if so, which headers) needs to be sent to the origin.", "type": "string", "enum": [ "none", "all", "include-specified" ] }, "header_names": { "description": "Array of header names to be included or excluded in origin request.", "type": "array", "items": { "type": "string", "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,100}$" }, "uniqueItems": true }, "cookies": { "description": "Determines whether any cookies in viewer requests (and if so, which cookies) needs to be sent to the origin.", "type": "string", "enum": [ "none", "all", "include-specified" ] }, "cookie_names": { "description": "Array of cookie names to be included or excluded in origin request.", "type": "array", "items": { "type": "string", "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "uniqueItems": true }, "queries": { "description": "Determines whether any URL query strings in viewer requests (and if so, which query strings) needs to be sent to the origin.", "type": "string", "enum": [ "none", "all", "include-specified" ] }, "query_names": { "description": "Array of query names to be included or excluded in origin request.", "type": "array", "items": { "type": "string", "pattern": "^[a-zA-Z0-9._\\-~!$&'()*+,;=:@/%]*$" }, "uniqueItems": true } } }, "Challenge": { "type": "object", "required": [ "alias", "verified" ], "description": "A challenge verifying ownership of an application alias. An application cannot be started until all it's challenges have been verified. The Tasks api is used to validate an application and verify outstanding challenges.", "properties": { "alias": { "description": "The application alias that this challenge applies to.", "type": "string", "format": "uri" }, "verified": { "description": "Boolean indicating whether the challenge has been verified or not.", "type": "boolean" }, "url": { "description": "Ownership of the alias is demonstrated by making specified challenge content available here.", "type": "string", "format": "uri" }, "content": { "description": "This content (and no other content) must be available at the challenge url for the challenge to pass verification.", "type": "string" } } }, "Check": { "type": "object", "required": [ "url" ], "properties": { "url": { "description": "URL to perform server verification on.", "type": "string", "format": "uri" }, "allowed_status_code": { "description": "Regular expression to check the status code for responses to verification requests, when it is not satisfied the check will be deemed as a failure. Defaults to `^[23]`", "type": "string", "format": "regex", "default": "^[23]" }, "body": { "description": "Request body which needs to be sent with verification request. Defaults to empty string.", "type": "string" }, "headers": { "description": "Array of headers that needs to be included in the verification request. Defaults to no headers.", "type": "array", "items": { "$ref": "#/components/schemas/Header" } }, "permitted_redirect_hosts": { "description": "A list of host names to follow when redirect responses are received during verification. Defaults to empty list.", "type": "array", "items": { "$ref": "#/components/schemas/Hostname" }, "default": [ ] }, "prohibit_content": { "description": "A regular expression applied on the response body that if matched fails the check. Defaults to no regular expression.", "type": "string", "format": "regex" }, "request_method": { "description": "HTTP request method to use when sending verification requests. Defaults to 'GET'", "type": "string", "pattern": "^(GET|HEAD|POST|PUT|PATCH|DELETE)$", "default": "GET" }, "require_content": { "description": "A regular expression applied on the response body that must match for the check to succeed. Defaults to no regular expression.", "type": "string", "format": "regex" }, "timeout": { "description": "Number of seconds to wait for the response from server. Defaults to 30 seconds.", "type": "integer", "default": 30 }, "verify_certificates": { "description": "Flag when set to true directs the check to verify the validity of the offered certificates. Defaults to true.", "type": "boolean", "default": true } } }, "Cidr": { "type": "string", "description": "A ip address or range.", "pattern": "^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))?|(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|([0-9a-fA-F]{1,4}:)(:[0-9a-fA-F]{1,4}){1,6}|:(:[0-9a-fA-F]{1,4}){1,7}|::)(/([0-9]|[1-9][0-9]|1[01][0-9]|12[0-8]))?)$" }, "Cluster": { "description": "A cluster configures and manages a set of service deployments that\nperform some service on behalf of an application. Initially, clusters\nwere created to manage web server workloads on cloud-based virtual machines.\nSince then, the initial capability has been expanded to encompass all kinds of\nservices, including generic workers, cron servers, indexing services, cache\nservices, and database servers. Deployment targets now include Kubernetes\nservices such as EKS as well as highly customizable VM-based Docker hosting.\n", "type": "object", "allOf": [ { "$ref": "#/components/schemas/ClusterState" }, { "$ref": "#/components/schemas/ClusterConfiguration" } ] }, "ClusterAccess": { "description": "Describes a method for accessing a service deployment.\n", "type": "object", "required": [ "hostname" ], "properties": { "hostname": { "description": "A hostname to which a service deployment responds on HTTP or HTTPS.\n", "$ref": "#/components/schemas/Hostname" } } }, "ClusterConfiguration": { "type": "object", "properties": { "name": { "$ref": "#/components/schemas/Name", "description": "The name of the cluster." }, "access": { "description": "Describes how a service deployment is accessible.\n", "type": "array", "items": { "$ref": "#/components/schemas/ClusterAccess" } }, "minimum_size": { "$ref": "#/components/schemas/NonNegativeInteger", "description": "The minimum size that the cluster will auto scale in to." }, "maximum_size": { "$ref": "#/components/schemas/NonNegativeInteger", "description": "The maximum size that the cluster will auto scale out to." }, "manual_size": { "description": "The explicit size that a cluster will scale to. Overrides automatic size.", "nullable": true, "$ref": "#/components/schemas/NonNegativeInteger" }, "scale_in_conditions": { "type": "array", "description": "When any of these conditions become true for a server, then the cluster automatic size will be reduced by one.", "items": { "$ref": "#/components/schemas/ScalingCondition" }, "default": [ ] }, "scale_out_conditions": { "type": "array", "description": "When any of these conditions become true for a server, then the cluster automatic size will be increased by one.", "items": { "$ref": "#/components/schemas/ScalingCondition" }, "default": [ ] }, "server_blueprints": { "type": "array", "description": "Specifies how servers in this cluster are to be built.", "items": { "$ref": "#/components/schemas/Blueprint" }, "minItems": 1, "uniqueItems": true }, "minimum_increment": { "$ref": "#/components/schemas/PositiveInteger", "description": "When an automatic scale out operation occurs, specifies the minimum number of servers that will be created to satisfy the scale out. This is useful for applications whose servers are prone to failure in the presence of moderate increases in load by quickly scaling out additional servers.", "default": 1 }, "server_failure_timeout": { "$ref": "#/components/schemas/Duration", "description": "Amount of time (in seconds) after which an unreachable server will be considered failed. A server is unreachable while attempts to connect to it are unsuccessful. Once a server is failed, a replacement server is created, and after verification, the failed server is destroyed. Defaults to a period of 90 seconds.", "default": 90 }, "servers_update_webhook": { "description": "If configured, this URL will be posted with contents equivalent to getting the cluster whenever its servers have been updated.", "$ref": "#/components/schemas/HttpUrl", "default": "" }, "verify_timeout": { "type": "integer", "description": "The time to wait for a new server to verify. If a server does not respond to a GET / with a non-5xx status code after this many seconds, then it fails verification and will be replaced or destroyed", "default": 600, "minimum": 60 }, "failed_server_disposition": { "description": "If set to detach, failed servers won't be deleted from cloud provider after deletion.", "type": "string", "enum": [ "destroy", "detach" ], "default": "destroy" }, "allocate_public_address": { "description": "When set to true, server will have a public address associated with it. If set to false, the server will not have public address. Before making this change, please make sure that the proxy and servers with private addresses are in the same network. NOTE: As of now, this functionality is only supported for Centurylink cloud.", "type": "boolean", "default": true }, "measurement_type": { "description": "When self-reporting, server will post its measurements to /v2/servers/metrics periodically. When lg-status, server needs to be installed with lg_mod_status and Webscale will pull the measurements from the server periodically. When none, Webscale will not monitor the cluster", "type": "string", "enum": [ "none", "lg-status", "self-reporting" ], "default": "lg-status" }, "checks": { "type": "array", "description": "List of checks that needs to be performed to verify cluster server.", "items": { "$ref": "#/components/schemas/Check" }, "maxItems": 50 }, "metadata": { "nullable": true, "type": "array", "description": "A set of key/value pairs that will be provided to servers created in this cluster. Server blueprint metadata overrides the cluster metadata on a key-by-key basis.", "items": { "$ref": "#/components/schemas/MetadataEntry" } }, "files": { "nullable": true, "type": "array", "description": "A set of files to be made available on servers created for this cluster. Blueprint files override cluster files on a key-by-key basis.", "items": { "$ref": "#/components/schemas/MetadataFileEntry" } }, "manage_deployments": { "type": "boolean", "description": "Indicates whether the deployment process is blue/green.", "default": false }, "destroy_delay": { "type": "integer", "minimum": 0, "default": 3600, "description": "For a managed cluster, this is the delay, in seconds, before\ndestroying resources created for a cluster that is no longer needed.\nRollbacks to a previous configuration that happen within this\ninterval will be fast because the servers or pods from the previous\nconfiguration will still exist. Rollbacks after this delay has\npassed will take longer because new servers or pods will have to be\ncreated and it carries the additional risk that resources such as\nimages may no longer exist.\n" }, "retained_configuration_count": { "type": "integer", "minimum": 0, "maximum": 25, "default": 1, "description": "For a managed cluster, the number of configurations that will be\nretained in the configuration history. To be able to rollback to a\nprevious version, retain at least one configuration. When retaining\nconfigurations, those that were not deployed successfully will be\nremoved first, with the older configurations being removed before\nnewer configurations.\n" }, "enter_maintenance_during_deployment": { "type": "boolean", "default": false, "description": "For managed deployments clusters only. When true for a cluster then\nall applications using it will be placed in maintenance mode until\nthe new deployment is verified and available. In the event of a\ndeployment failure, the applications will continue to remain in\nmaintenance mode.\n" }, "labels": { "type": "array", "description": "Arbitrary labels applied to a resource For example, labels can be used to\norganize resources into categories such as production, staging, or\ndevelopment.\n", "items": { "$ref": "#/components/schemas/Label" } }, "environment": { "description": "A reference to an environment to which a cluster belongs.\n", "type": "string", "pattern": "/v2/environments/[^/]+", "nullable": true }, "hooks": { "description": "A set of hook commands to run during a deployment.\n", "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "enum": [ "started", "verified" ] }, "command": { "type": "string" } } } }, "via": { "type": "string", "description": "A reference to an SSH host through which all servers in a cluster must be\naccessed. When set, all servers will be accessed using their private\naddresses. When not set, servers are accessed using their public\naddresses.\n", "pattern": "^/v2/ssh-hosts/[a-z0-9]+$", "nullable": true }, "auxiliary_clusters": { "type": "array", "items": { "type": "string", "description": "A reference to another cluster that is an auxiliary to this one. At the\nstart of deployment of this cluster, all auxiliary clusters will be\ndeprovisioned (`min=max=0`). At the activation of a deployment for this\ncluster, auxiliary clusters will be re-provisioned at their former size.\nIn addition, if auxiliary clusters reference the same VM or container\nimages as this cluster at the start of a deployment, their images are\nupdated to match before re-provisioning. A failed deployment must be\ncorrected manually.\n", "pattern": "^/v2/clusters/[a-z0-9]+$" } } } }, "ClusterDns": { "type": "object", "required": [ "service", "domain" ], "properties": { "service": { "description": "A reference to a DNS service that is updated when the active cluster\nmembers change.\n", "type": "string", "pattern": "/v2/services/[a-z0-9]+" }, "domain": { "description": "A domain name under which an entry for the configuring cluster id is\npublished. For example, if the cluster reference is `/v2/clusters/xyz`\nand the domain is `ninja`, the published name will be `xyz.ninja`.\n", "type": "string", "pattern": "^[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$" } } }, "ClusterHref": { "type": "string", "nullable": true, "pattern": "^/v2/clusters/[a-z0-9]+$", "description": "The endpoint for the cluster resource." }, "ClusterPatch": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/ClusterConfiguration" } ] }, "ClusterPost": { "type": "object", "allOf": [ { "required": [ "name", "minimum_size", "maximum_size", "scale_in_conditions", "scale_out_conditions", "server_blueprints" ] }, { "$ref": "#/components/schemas/ClusterConfiguration" } ] }, "ClusterServer": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/Server" }, { "required": [ "href", "name", "state", "networks" ], "properties": { "active_since": { "$ref": "#/components/schemas/Timestamp", "description": "Time since the server started accepting connections" }, "created": { "$ref": "#/components/schemas/Timestamp", "description": "Time when the virtual machine instance was created in the cloud but it was not set up to accept connections" }, "href": { "type": "string", "description": "The endpoint for the server resource" }, "is_failed": { "type": "boolean", "description": "This will be true for a server that has been unreachable for longer than the server failure timeout for its cluster. Once a server has failed, it is not recoverable and will be replaced or destroyed" }, "name": { "type": "string", "description": "The name of the server", "minLength": 1 }, "networks": { "type": "array", "items": { "$ref": "#/components/schemas/ServerNetwork" } }, "private_address": { "type": "string", "description": "The private address of the server" }, "public_address": { "type": "string", "description": "The public address of the server" }, "replacement_for": { "type": "string", "description": "A reference to a server being replaced by this one" }, "server_blueprint": { "$ref": "#/components/schemas/Blueprint" }, "state": { "type": "string", "description": "The current state of the server. The state 'creating' indicates that the virtual machine instance is getting created in the cloud but it is not ready to accept connections. The state 'verifying' indicates that the server was created successfully and it is being verified to check if the web service is responding on that server. The state 'joining' indicates that the server verification was successful and the system is being reconfigured so that the server will begin receiving traffic. The state 'active' indicates that the server is either serving the traffic or ready to accept connections. The state 'failed' indicates that the server has been unreachable for longer than the server failure timeout for its cluster and it is not recoverable and will be replaced or destroyed. The state 'leaving' indicates that the server is about to leave the cluster and the system is being reconfigured so that the server will stop receiving the traffic. The state 'destroying' indicates that the server has stopped receiving the traffic and the instance is getting deleted from the cloud", "enum": [ "creating", "joining", "active", "verifying", "leaving", "failed", "destroying" ] }, "unreachable_since": { "$ref": "#/components/schemas/Timestamp", "description": "Time since the server stopped accepting connections" } } } ] }, "ClusterState": { "type": "object", "required": [ "href", "automatic_size", "active", "servers" ], "properties": { "href": { "$ref": "#/components/schemas/ClusterHref", "description": "The endpoint for the cluster resource." }, "automatic_size": { "type": "integer", "description": "The size that the cluster is currently auto scaled to." }, "active": { "type": "boolean", "description": "Indicates if the cluster is active. Active clusters may auto scale and are monitored." }, "servers": { "type": "array", "items": { "$ref": "#/components/schemas/ClusterServer" } }, "created": { "$ref": "#/components/schemas/Timestamp", "description": "When the cluster was created." }, "delete_pending": { "description": "Indicates that the cluster is about to be deleted.", "type": "boolean", "default": false } } }, "Component": { "type": "object", "description": "", "properties": { "layer_name": { "type": "string", "description": "Name of the resource layer being referenced here.", "minLength": 1 }, "element": { "$ref": "#/components/schemas/ServicesHref" } } }, "ConcurrentLimit": { "type": "integer", "description": "Maximum number of concurrently active requests that can be run in a load balancer before requests are put in the suspend queue. This attribute may only be set by system administrators", "minimum": 1, "maximum": 1024 }, "ConditionAddressIsNotThreat": { "type": "object", "description": "True if the requester's IP address is not a known malicious source.", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "address_is_not_threat" ] } }, "additionalProperties": false }, "ConditionAddressIsNotWhitelisted": { "type": "object", "description": "True if the requester's IP address is not on the application whitelist.", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "address_is_not_whitelisted" ] } }, "additionalProperties": false }, "ConditionAddressInSet": { "type": "object", "description": "Tests if requester's IP address is in the specified address set.", "required": [ "type", "address_set" ], "properties": { "type": { "type": "string", "enum": [ "address_in_set" ] }, "address_set": { "$ref": "#/components/schemas/AddressSetHref" } }, "additionalProperties": false }, "ConditionAddressIsThreat": { "type": "object", "description": "True if the requester's IP address is a known malicious source.", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "address_is_threat" ] } }, "additionalProperties": false }, "ConditionAddressIsWhitelisted": { "type": "object", "description": "True if the requester's IP address is on the application whitelist.", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "address_is_whitelisted" ] } }, "additionalProperties": false }, "ConditionAddressNotInSet": { "type": "object", "description": "Tests if requester's IP address is not in the specified address set", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "address_not_in_set" ] }, "address_set": { "$ref": "#/components/schemas/AddressSetHref" } }, "additionalProperties": false }, "ConditionAsnIs": { "type": "object", "description": "True if the ASN of a request is included in the specified list.", "required": [ "list", "type" ], "properties": { "list": { "description": "A list of ASNs", "type": "array", "items": { "$ref": "#/components/schemas/Asn" }, "minItems": 1 }, "type": { "type": "string", "enum": [ "asn_is" ] } }, "additionalProperties": false }, "ConditionAsnIsNot": { "type": "object", "description": "True if the ASN of a request is not in the specified list.", "required": [ "list", "type" ], "properties": { "list": { "description": "A list of ASNs", "type": "array", "items": { "$ref": "#/components/schemas/Asn" }, "minItems": 1 }, "type": { "type": "string", "enum": [ "asn_is_not" ] } }, "additionalProperties": false }, "ConditionAuthCookieIsNotSet": { "type": "object", "description": "True when a specified authorization cookie is not set or is expired.", "required": [ "name", "type" ], "properties": { "name": { "description": "Name of the cookie to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "type": { "type": "string", "enum": [ "auth_cookie_is_not_set" ] } }, "additionalProperties": false }, "ConditionAuthCookieIsSet": { "type": "object", "description": "True when a specified authorization cookie is set and not expired.", "required": [ "name", "type" ], "properties": { "name": { "description": "Name of the cookie to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "type": { "type": "string", "enum": [ "auth_cookie_is_set" ] } }, "additionalProperties": false }, "ConditionCookieIsNotSet": { "type": "object", "description": "True if a named cookie is not set.", "required": [ "name", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "name": { "description": "Name of the cookie to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "type": { "type": "string", "enum": [ "cookie_is_not_set" ] } }, "additionalProperties": false }, "ConditionCookieIsSet": { "type": "object", "description": "True to see if a named cookie is set.", "required": [ "name", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "name": { "description": "Name of the cookie to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "type": { "type": "string", "enum": [ "cookie_is_set" ] } }, "additionalProperties": false }, "ConditionCookieValueDoesNotMatch": { "description": "Test to check if the named cookie value does not match the specified pattern. If the specified cookie does not exist, this condition will evaluate to true. Cookie value pattern must be a regular expression.", "type": "object", "required": [ "name", "pattern", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "name": { "description": "Name of the cookie to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "pattern": { "description": "A regular expression to match with cookie value", "type": "string", "minLength": 1, "maxLength": 255, "format": "regex" }, "type": { "type": "string", "enum": [ "cookie_value_does_not_match" ] } } }, "ConditionCookieValueMatches": { "description": "Test to check if the named cookie value matches the specified pattern. Cookie value pattern must be a regular expression.", "type": "object", "required": [ "name", "pattern", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "name": { "description": "Name of the cookie to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "pattern": { "description": "A regular expression to match with cookie value", "type": "string", "minLength": 1, "maxLength": 255, "format": "regex" }, "type": { "type": "string", "enum": [ "cookie_value_matches" ] } } }, "ConditionHeader": { "type": "object", "required": [ "name", "pattern" ], "properties": { "name": { "description": "Name of the header to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "pattern": { "description": "A regular expression to match with header value", "type": "string", "minLength": 1, "maxLength": 255, "format": "regex" } } }, "ConditionHeaderValueMatches": { "description": "Test to check if the header value matches the specified pattern. Header value pattern must be a regular expression.", "type": "object", "required": [ "name", "pattern", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "name": { "description": "Name of the header to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "pattern": { "description": "A regular expression to match with header value", "type": "string", "minLength": 1, "maxLength": 255, "format": "regex" }, "type": { "type": "string", "enum": [ "header_value_matches" ] } } }, "ConditionHeaderValueDoesNotMatch": { "description": "Test to check if the header value does not match the specified pattern. If the specified header does not exist, this condition will evaluate to true. Header value pattern must be a regular expression.", "type": "object", "required": [ "name", "pattern", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "name": { "description": "Name of the header to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "pattern": { "description": "A regular expression to match with header value", "type": "string", "minLength": 1, "maxLength": 255, "format": "regex" }, "type": { "type": "string", "enum": [ "header_value_does_not_match" ] } } }, "ConditionHeadersNotMatch": { "type": "object", "description": "Test to check if the list of named header values does not match their respective specified patterns.", "required": [ "list", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "list": { "description": "Array of headers match conditions", "$ref": "#/components/schemas/ConditionHeaders", "minItems": 1 }, "type": { "type": "string", "enum": [ "headers_not_match", "response_headers_not_match" ] } }, "additionalProperties": false }, "ConditionHeadersMatch": { "type": "object", "description": "Test to check if the list of named header values match their respective specified patterns.", "required": [ "list", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "list": { "description": "Array of headers match conditions", "$ref": "#/components/schemas/ConditionHeaders" }, "type": { "type": "string", "enum": [ "headers_match", "response_headers_match" ] } }, "additionalProperties": false }, "ConditionHeaders": { "type": "array", "description": "Array of headers conditions", "items": { "$ref": "#/components/schemas/ConditionHeader" }, "minItems": 1 }, "ConditionIsCrawler": { "type": "object", "description": "True if the requester's IP address is a known Web Crawler.", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "is_crawler" ] } }, "additionalProperties": false }, "ConditionMatchesFilter": { "type": "object", "description": "True if a request matches the given filter. The matches filter condition supports filtering on query parameters in the URL, and JSON and formdata in the request body.", "required": [ "filter", "type", "scope" ], "properties": { "filter": { "description": "A [filter expression](https://control.webscale.com/docs/api) to be evaluated over the specified scopes.\n\nFor query or formdata scopes, boolean, float and integer filter values should always be quoted strings.\n\nFor JSON scopes, boolean, float and integer filter values should not be quoted strings.\n\nFor nested scopes, attributes can be accessed using dot notation. For example,\n\"cart.items.1\" will access the second element of \"items\" array defined on the\n\"cart\" object. Arrays indexing starts at zero.\n", "type": "string", "maxLength": 1000 }, "type": { "type": "string", "enum": [ "matches_filter" ] }, "scope": { "type": "string", "enum": [ "query", "body" ] } } }, "ConditionMethodIs": { "type": "object", "description": "True if the method name of a request is included in the specified list.", "required": [ "values", "type" ], "properties": { "values": { "description": "A list of method names.", "$ref": "#/components/schemas/MethodNames" }, "type": { "type": "string", "enum": [ "method_is" ] } } }, "ConditionMethodIsNot": { "type": "object", "description": "True if the method name of a request is not included in the specified list.", "required": [ "values", "type" ], "properties": { "values": { "description": "A list of method names.", "$ref": "#/components/schemas/MethodNames" }, "type": { "type": "string", "enum": [ "method_is_not" ] } } }, "ConditionCountryIs": { "type": "object", "description": "True if the country of origin of a request is included in the specified list.", "required": [ "list", "type" ], "properties": { "list": { "description": "A list of country codes", "$ref": "#/components/schemas/CountryCodes" }, "type": { "type": "string", "enum": [ "country_is" ] } }, "additionalProperties": false }, "ConditionCountryIsNot": { "type": "object", "description": "True if the country of origin of a request is not in the specified list.", "required": [ "list", "type" ], "properties": { "list": { "description": "A list of country codes", "$ref": "#/components/schemas/CountryCodes" }, "type": { "type": "string", "enum": [ "country_is_not" ] } }, "additionalProperties": false }, "ConditionRandom": { "type": "object", "description": "True if a value from a uniform random variable from 0.0 to 1.0 is less than or equal to the specified probability.", "required": [ "probability", "type" ], "properties": { "probability": { "description": "Probability for which condition is true", "type": "number", "minimum": 0, "maximum": 1 }, "type": { "type": "string", "enum": [ "random" ] } }, "additionalProperties": false }, "ConditionRateLimit": { "description": "True when the number of request during a duration is greater than a specified threshold.", "type": "object", "required": [ "duration", "display_unit", "threshold" ], "properties": { "client_id": { "type": "string", "description": "A [value template](/docs/api#value-template) evaluated to set the client\nid\n", "default": "$(request_address)" }, "duration": { "type": "integer", "description": "The amount of time, in number of seconds, over which to accumulate the request count", "minimum": 5 }, "display_unit": { "$ref": "#/components/schemas/DurationDisplayUnit" }, "threshold": { "description": "Maximum number of requests in the given duration before the condition is triggered", "type": "integer", "minimum": 1 }, "type": { "type": "string", "enum": [ "rate_limit" ] } }, "additionalProperties": false }, "ConditionReferrerDoesNotMatch": { "type": "object", "description": "True for a request for which request referrer does not match any referrer pattern from a list", "required": [ "list", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "list": { "$ref": "#/components/schemas/ReferrerPatterns" }, "type": { "type": "string", "enum": [ "referrer_is_not" ] } }, "additionalProperties": false }, "ConditionReferrerIsDefined": { "type": "object", "description": "True for a request for which request referrer hostname matches a hostname for this application", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "referrer_is_defined" ] } }, "additionalProperties": false }, "ConditionReferrerIsNotDefined": { "type": "object", "description": "True for a request for which request referrer hostname does not match a hostname for this application.", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "referrer_is_not_defined" ] } }, "additionalProperties": false }, "ConditionReferrerMatches": { "type": "object", "description": "True for a request for which request referrer matches a referrer pattern from a list", "required": [ "list", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "list": { "$ref": "#/components/schemas/ReferrerPatterns" }, "type": { "type": "string", "enum": [ "referrer_is" ] } }, "additionalProperties": false }, "ConditionStatusCodeMatches": { "type": "object", "description": "True if the response code matches the pattern.", "required": [ "pattern", "type" ], "properties": { "pattern": { "description": "A regular expression to match against the response status code.", "type": "string", "minLength": 1, "maxLength": 255, "format": "regex" }, "type": { "type": "string", "enum": [ "status_code_matches" ] } }, "additionalProperties": false }, "ConditionUrl": { "type": "object", "description": "A wildcard or regular expression url definition used for triggering page\ncontrols on requests.\n", "anyOf": [ { "type": "object", "properties": { "scheme": { "type": "string", "description": "Http scheme used for matching against requests. If this field is\nnot specified then both http and https will match.\n", "pattern": "^(http|https|\\*)$" }, "domain": { "type": "string", "description": "Wildcard domain used for matching against requests. If this field\nis not specified then all configured application domains will match.\n", "maxLength": 255, "pattern": "^[0-9a-zA-Z\\-*.]+$" }, "path": { "type": "string", "description": "Wildcard path used for matching against requests. If this field\nis not specified then all paths will match.\n", "maxLength": 760, "pattern": "^[a-zA-Z0-9._\\-~!$&'()*+,;=:@/%]*$" }, "query": { "type": "string", "description": "Wildcard query used for matching against requests. If this field\nis not specified then all query values will match.\n", "maxLength": 760, "pattern": "^[a-zA-Z0-9._\\-~!$&'()*+,;=:@/%]*$" } }, "additionalProperties": false }, { "type": "object", "required": [ "regex" ], "properties": { "regex": { "type": "string", "description": "A regular expression that is tested against a normalized and unescaped\nunicode URL string. Capture groups for a matching expression are\nassigned to variables `$1` through `$9` and can be substituted in the\nvalue template for an action. Most of [ECMAScript regular expression]\n(https://262.ecma-international.org/11.0/#sec-regexp-regular-expression-objects),\nis implemented. However, some features such as lookahead and lookbehind\nare not supported and will generate validation errors if an attempt is\nmade to use them. No line-begin (`^`) or line-end (`$`) assertions are\nadded to a configured regular expression; if needed for correctness\nthey must be written explicitly. For example, to match the host, and\nassign it to `$1`, use expression\n`://([^/]+)`.\n", "format": "regex" } }, "additionalProperties": false } ] }, "ConditionUrlDoesNotMatch": { "type": "object", "description": "True for a request URL that does not match any URL pattern from a list.", "required": [ "list", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "list": { "description": "Array of url objects", "$ref": "#/components/schemas/ConditionUrls" }, "type": { "type": "string", "enum": [ "url_is_not" ] } }, "additionalProperties": false }, "ConditionUrlMatches": { "type": "object", "description": "True for a request URL that matches a URL pattern from a list.", "required": [ "list", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "list": { "description": "Array of url objects", "$ref": "#/components/schemas/ConditionUrls" }, "type": { "type": "string", "enum": [ "urls" ] } }, "additionalProperties": false }, "ConditionUrls": { "type": "array", "description": "Array of url objects", "items": { "$ref": "#/components/schemas/ConditionUrl" }, "minItems": 1 }, "ConditionUserAgentDoesNotMatch": { "type": "object", "description": "True for a request user-agent that does not match a specified regular expression", "required": [ "pattern", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "pattern": { "description": "A regular expression", "type": "string", "minLength": 1, "format": "regex" }, "type": { "type": "string", "enum": [ "user_agent_does_not_match" ] } }, "additionalProperties": false }, "ConditionUserAgentMatches": { "type": "object", "description": "True for a request user-agent that matches a specified regular expression", "required": [ "pattern", "type" ], "properties": { "case_sensitive": { "description": "Flag for determining if the condition is case sensitive", "type": "boolean" }, "pattern": { "description": "A regular expression", "type": "string", "minLength": 1, "format": "regex" }, "type": { "type": "string", "enum": [ "user_agent_matches" ] } }, "additionalProperties": false }, "ConnectRepositoryResult": { "description": "Results of a connect repository task", "properties": { "matches": { "type": "object", "properties": { "authorization_link": { "type": "string", "description": "An authorization link" } } } } }, "TagName": { "description": "Name of different tags.", "type": "string", "pattern": "^[!\"#$%&'()*+,\\-./0-9:;<=>?@A-Z\\[\\\\\\]^_`a-z{|}~ ]{0,8190}$", "minLength": 1, "maxLength": 200 }, "CountryCode": { "description": "Two letter country code defined as per the ISO 3166-1 standard.", "type": "string", "pattern": "^[a-zA-Z]{2}$" }, "CountryCodes": { "description": "A list of country codes", "type": "array", "items": { "$ref": "#/components/schemas/CountryCode" }, "minItems": 1 }, "CustomLogId": { "type": "string", "description": "Unique ID for submitted log." }, "MethodName": { "description": "Name of different HTTP methods.", "type": "string", "minLength": 3, "maxLength": 20, "pattern": "^[A-Z\\-]{3,20}$" }, "MethodNames": { "description": "A list of method names.", "type": "array", "items": { "$ref": "#/components/schemas/MethodName" }, "minItems": 1 }, "Currency": { "type": "number", "minimum": 0, "description": "US currency.", "multipleOf": 0.01 }, "DataPlane": { "description": "A data plane acts as the proxy between application servers and its users.", "allOf": [ { "$ref": "#/components/schemas/DataPlaneConfiguration" }, { "$ref": "#/components/schemas/DataPlaneIdentity" }, { "$ref": "#/components/schemas/DataPlaneState" } ] }, "DataPlaneConfiguration": { "description": "The configurable attributes of a data plane", "properties": { "name": { "type": "string", "description": "Name describing the data plane", "minLength": 1, "maxLength": 100 }, "account": { "description": "A reference to the account to which the data plane belongs to.", "$ref": "#/components/schemas/AccountHref" }, "minimum_size": { "type": "integer", "description": "Minimum number of proxies in this data plane", "minimum": 0, "default": 0 }, "maximum_size": { "type": "integer", "description": "Maximum number of proxies in this data plane" }, "maximum_assignments_per_proxy": { "type": "integer", "description": "Maximum number of application assignments per proxy", "minimum": 1 }, "blueprints": { "type": "array", "description": "Array of blueprints", "items": { "$ref": "#/components/schemas/Blueprint" } } } }, "DataPlaneIdentity": { "description": "Identifier for a data plane.", "properties": { "href": { "type": "string", "description": "A reference to this data plane", "pattern": "^/v2/data-planes/[a-z0-9]+$" } } }, "DataPlaneState": { "type": "object", "description": "State for a data plane", "properties": { "assigned_applications": { "type": "array", "description": "Array of applications assigned to this data plane", "items": { "type": "string" } }, "proxies": { "type": "array", "description": "Array of the assigned proxies to this data plane", "items": { "$ref": "#/components/schemas/Proxy" } } } }, "DataTransferBillingMonitorParameters": { "type": "object", "description": "The configuration of a data transfer billing monitor", "additionalProperties": false, "properties": { "budget": { "description": "The number of data transfer allowance in GB this account is entitled.", "type": "number" }, "thresholds": { "type": "array", "description": "An array of thresholds.", "items": { "$ref": "#/components/schemas/DataTransferBillingThreshold" } } } }, "DataTransferBillingThreshold": { "type": "object", "required": [ "type", "percent" ], "additionalProperties": false, "properties": { "type": { "type": "string", "description": "The type of threshold.", "enum": [ "budget", "allowance" ] }, "percent": { "type": "number", "description": "The percent of data transfer when this threshold will trigger." } } }, "Date": { "type": "string", "description": "An iso8601 formatted date.", "pattern": "^(?:[1-9][0-9]{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9][0-9](?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$" }, "DomainName": { "type": "string", "description": "A domain name as specified by RFC1035, RFC1123, and RFC2181 with the exception that no space character or double quote (\") can be part of the name", "pattern": "^([^.\"\\s]+){1,63}(?:\\.[^.\"\\s]{1,63})+$", "minLength": 1, "maxLength": 253 }, "Duration": { "$ref": "#/components/schemas/NonNegativeInteger", "description": "Duration in seconds, no fractional values." }, "DurationDisplayUnit": { "type": "string", "description": "Unit to use for displaying the time duration specified.", "enum": [ "seconds", "minutes", "hours" ] }, "Email": { "type": "string", "description": "An email address", "pattern": "^.+@.+\\..+$", "minLength": 1, "maxLength": 255 }, "EmptyObject": { "type": "object", "additionalProperties": false, "properties": { } }, "Entitlement": { "description": "A generic entitlement", "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/EntitlementConfiguration" }, { "$ref": "#/components/schemas/EntitlementIdentity" }, { "$ref": "#/components/schemas/EntitlementState" } ] }, "EntitlementConfiguration": { "description": "The configurable parts of an entitlement", "additionalProperties": false, "properties": { "plan_id": { "type": "string", "description": "Api ID of the associated plan" }, "started": { "nullable": true, "$ref": "#/components/schemas/Timestamp" } } }, "EntitlementPost": { "type": "object", "required": [ "plan_id" ], "$ref": "#/components/schemas/EntitlementConfiguration" }, "EntitlementPatch": { "type": "object", "required": [ "started" ], "$ref": "#/components/schemas/EntitlementConfiguration" }, "EntitlementIdentity": { "description": "Identifier for a entitlement", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to this entitlement", "pattern": "^/v2/accounts/[a-z0-9]+/entitlements/[a-z0-9]+$" } } }, "EntitlementState": { "description": "The current state of an entitlement", "additionalProperties": false, "properties": { "created": { "$ref": "#/components/schemas/Timestamp" } } }, "EnumValue": { "description": "An enumerated value.", "type": "object", "required": [ "value", "display" ], "additionalProperties": false, "properties": { "value": { "description": "Value of an enum element.", "type": "string" }, "display": { "description": "How an enum element should be displayed.", "type": "string" } } }, "Environment": { "description": "An environment is a collection of resources.\n", "type": "object", "allOf": [ { "$ref": "#/components/schemas/EnvironmentIdentity" }, { "$ref": "#/components/schemas/EnvironmentConfiguration" } ] }, "EnvironmentConfiguration": { "description": "Universally configurable attributes for an environment object.\n", "properties": { "name": { "description": "A name for an environment.\n", "type": "string" }, "keyword": { "description": "Used when including an environment’s name into system components like VM\ninstance names or file names. If not specified during environment\ncreation, the keyword attribute is automatically generated by\ntransliterating the name to lowercase US-ASCII and replacing any sequences\nof punctuation and spaces to a dash. For instance, the name \"R & D\"\nresults in a keyword of `r-d`. Note that the keyword will not be\nautomatically updated if the environment is renamed. Modifying the keyword\nafter resources have been created for an environment may lead to\nunexpected issues. It is advised to perform this change only with the\nassistance of Webscale support.\n", "type": "string" } } }, "EnvironmentIdentity": { "type": "object", "properties": { "href": { "type": "string", "pattern": "/v2/environments/[a-z0-9]+", "description": "A reference to an environment object." } } }, "EnvironmentPatch": { "$ref": "#/components/schemas/EnvironmentConfiguration" }, "EnvironmentPost": { "description": "Representation of new environment.\n", "type": "object", "allOf": [ { "required": [ "name" ] }, { "$ref": "#/components/schemas/EnvironmentConfiguration" } ] }, "Error": { "type": "object", "required": [ "type", "description" ], "properties": { "type": { "type": "string", "description": "Specific error type." }, "description": { "type": "string", "description": "Description of what occurred." } } }, "Event": { "type": "object", "required": [ "created", "incident", "message", "severity", "type" ], "properties": { "created": { "$ref": "#/components/schemas/Timestamp" }, "details": { "description": "Additional structured information about the event. The specific structure depends on the type of the event. For custom user events this can be any JSON object.", "anyOf": [ { "$ref": "#/components/schemas/EventActionDetails" }, { "$ref": "#/components/schemas/EventActionDetails" }, { "$ref": "#/components/schemas/EventCreateDetails" }, { "$ref": "#/components/schemas/EventDeleteDetails" }, { "$ref": "#/components/schemas/EventUpdateDetails" }, { "$ref": "#/components/schemas/AnyObject" } ] }, "incident": { "$ref": "#/components/schemas/IncidentHref" }, "message": { "$ref": "#/components/schemas/EventMessage" }, "severity": { "$ref": "#/components/schemas/EventSeverity" }, "subject": { "$ref": "#/components/schemas/EventSubjectHref" }, "type": { "$ref": "#/components/schemas/EventTypeHref" }, "origin": { "type": "string", "maxLength": 200, "description": "The third-party entity that generated the event." }, "originated": { "$ref": "#/components/schemas/Timestamp", "description": "The ISO 8601-formatted date when the third-party generated the event." } } }, "EventActionDetails": { "type": "object", "description": "Event log details of type action", "required": [ "name" ], "properties": { "name": { "type": "string", "description": "Name of the action that was executed on the system" }, "snapshot": { "$ref": "#/components/schemas/EventConfigurationModel" } } }, "EventConfigurationModel": { "anyOf": [ { "$ref": "#/components/schemas/ApplicationConfiguration" }, { "$ref": "#/components/schemas/ClusterConfiguration" }, { "$ref": "#/components/schemas/GenericConfigurationModel" } ] }, "EventCreateDetails": { "type": "object", "description": "Event log details of type create", "required": [ "snapshot" ], "properties": { "snapshot": { "$ref": "#/components/schemas/EventConfigurationModel" } } }, "EventDeleteDetails": { "type": "object", "description": "Event log details of type delete", "required": [ "snapshot" ], "properties": { "snapshot": { "$ref": "#/components/schemas/EventConfigurationModel" } } }, "EventMessage": { "type": "string", "description": "Text that describes the occurrence of an event.", "minLength": 1 }, "EventPost": { "type": "object", "required": [ "subject", "message", "severity", "type" ], "properties": { "subject": { "$ref": "#/components/schemas/EventSubjectHref" }, "message": { "$ref": "#/components/schemas/EventMessage" }, "severity": { "$ref": "#/components/schemas/EventSeverity" }, "type": { "type": "string", "description": "The type of event. For external events, the type may not begin with 'system-'.", "pattern": "^(?!system-).+" }, "details": { "type": "object", "nullable": true, "description": "Optional additional structured information about this event." }, "origin": { "type": "string", "maxLength": 200, "description": "The third-party entity that generated the event." }, "originated": { "$ref": "#/components/schemas/Timestamp", "description": "The ISO 8601-formatted date when the third-party generated the event." } } }, "Events": { "type": "array", "items": { "$ref": "#/components/schemas/Event" } }, "EventSeverity": { "type": "string", "description": "The severity of the event. There are three levels: info is informational and no action is needed, warning may indicate that an error will occur if action is not taken, severe is critical and requires immediate attention (e.g. the application is down).", "enum": [ "info", "severe", "warning" ] }, "EventSubjectHref": { "type": "string", "description": "The object that is affected by the event (e.g. A cluster scale out event for cluster w234fs will have a subject of /v2/cluster/w234fs).", "pattern": "^/v2/(applications|clusters|adcs|servers)/[A-Za-z0-9]+$" }, "EventTypeHref": { "type": "string", "description": "The type of event that has occurred." }, "EventUpdateDetails": { "type": "object", "description": "Event log details of type update", "required": [ "snapshot", "change" ], "properties": { "snapshot": { "$ref": "#/components/schemas/EventConfigurationModel" }, "change": { "$ref": "#/components/schemas/JsonPatch" } } }, "Field": { "description": "A log field.", "type": "object", "required": [ "name", "display", "type", "description", "is_metric" ], "additionalProperties": false, "properties": { "name": { "description": "The name of the field.", "type": "string" }, "type": { "$ref": "#/components/schemas/Type" }, "display": { "description": "Display name for the defined field type.", "type": "string" }, "description": { "description": "A description of the field.", "type": "string" }, "is_metric": { "description": "Indicates whether the field can be used in a groupselect.", "type": "boolean" }, "aliases": { "description": "A collection of alternate names for the field.", "type": "array", "items": { "type": "string" } } } }, "File": { "type": "object", "description": "A file object", "properties": { "href": { "$ref": "#/components/schemas/FileHref" }, "name": { "type": "string" }, "description": { "type": "string" }, "type": { "type": "string", "enum": [ "bootstrap", "geo-db", "handler", "microsite", "waf-rules", "helm-chart" ] }, "details": { "$ref": "#/components/schemas/FileArchiveDetails" }, "created_by": { "type": "string", "description": "Reference to the user that created this file." }, "created": { "$ref": "#/components/schemas/Timestamp", "description": "Creation time associated with this file." }, "updated": { "$ref": "#/components/schemas/Timestamp", "description": "Timestamp reflecting when the file was last updated." }, "current_version": { "type": "integer", "description": "Currently used version of the file." }, "versions": { "type": "array", "description": "All versions of the file.", "items": { "$ref": "#/components/schemas/FileVersion" } } } }, "FileArchiveDetails": { "type": "object", "description": "Details for an archive file.", "properties": { "directory": { "type": "array", "description": "Files contained in the archive", "items": { "$ref": "#/components/schemas/FileArchiveDirectory" } } } }, "FileArchiveDirectory": { "type": "object", "description": "Metadata for an archive file.", "properties": { "path": { "type": "string", "description": "Path of the file relative to its root." }, "size": { "type": "number", "description": "The size of the file in bytes." }, "updated": { "$ref": "#/components/schemas/Timestamp", "description": "Timestamp reflecting when the file was last updated." } } }, "FileConfiguration": { "type": "object", "description": "The configurable attributes of a file.", "properties": { "content": { "type": "string", "description": "The content of the file." }, "file_name": { "type": "string", "maxLength": 250, "description": "The file name of the file." }, "name": { "type": "string", "maxLength": 250, "description": "The name of the file." }, "description": { "type": "string", "maxLength": 250, "description": "A description of the file." }, "label": { "type": "string", "maxLength": 50, "description": "Description for this version of the file." }, "current_version": { "type": "integer", "description": "Raw version number for the file." } } }, "FileHref": { "type": "string", "pattern": "^/v2/files/[a-z0-9]+$", "description": "Endpoint resource reference to a file." }, "FileVersionHref": { "type": "string", "pattern": "^/v2/files/[a-z0-9]+/versions/[0-9]+$", "description": "Endpoint reference to a particular version of a file." }, "FileInitializer": { "type": "object", "description": "File attributes that cannot be changed after creation.", "properties": { "type": { "type": "string", "description": "A type that specifies the purpose of a file.", "enum": [ "bootstrap", "geo-db", "handler", "microsite", "vcl-bundle" ] } } }, "FilePatch": { "type": "object", "description": "Used to patch a file.", "properties": { "content": { "type": "string", "description": "The content of the file" }, "current_version": { "type": "string", "description": "Set to the version number that will be used or 'latest' to use the most recent version." }, "description": { "type": "string", "maxLength": 250, "description": "A description of the file." }, "file_name": { "type": "string", "maxLength": 250, "description": "The file name of the file." }, "label": { "type": "string", "maxLength": 50, "description": "Description for this version of the file." }, "name": { "type": "string", "maxLength": 250, "description": "The name of the file." } } }, "FilePost": { "type": "object", "description": "Used to create a new file", "required": [ "content", "file_name", "name" ], "allOf": [ { "$ref": "#/components/schemas/FileInitializer" }, { "$ref": "#/components/schemas/FileConfiguration" } ] }, "FileVersion": { "type": "object", "description": "A file version object", "properties": { "file_name": { "type": "string", "description": "The file name of the file." }, "version": { "type": "integer", "description": "Raw version number for the file." }, "details": { "$ref": "#/components/schemas/FileArchiveDetails" }, "content_type": { "type": "string", "description": "Type of the content for this version of the file." }, "label": { "type": "string", "description": "Description for this version of the file." }, "created": { "$ref": "#/components/schemas/Timestamp", "description": "Creation time associated with this file." } } }, "Filter": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/FilterIdentity" }, { "$ref": "#/components/schemas/FilterConfiguration" } ], "additionalProperties": false }, "FilterConfiguration": { "type": "object", "additionalProperties": false, "properties": { "name": { "$ref": "#/components/schemas/Name", "maxLength": 100, "description": "Name of the filter.\n" }, "description": { "type": "string", "maxLength": 255, "description": "Description of the filter.\n" }, "value": { "type": "string", "maxLength": 10000, "description": "String predicate expression valid for the specified log type.\n" }, "log_type": { "type": "string", "description": "The type of log to which the filter applies.\n", "enum": [ "cdn", "csp-reports", "pageviews", "proxy-logs", "events", "custom" ] } } }, "FilterIdentity": { "description": "Identifier for a filter", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to this filter", "pattern": "^/v2/filters/[a-z0-9]+$" } } }, "FilterPatch": { "type": "object", "additionalProperties": false, "properties": { "name": { "$ref": "#/components/schemas/Name", "maxLength": 100, "description": "Name of the filter.\n" }, "description": { "type": "string", "maxLength": 255, "description": "Description of the filter.\n" }, "value": { "type": "string", "maxLength": 10000, "description": "String predicate expression valid for the specified log type.\n" } } }, "FilterPost": { "type": "object", "description": "Used to create a new filter\n", "required": [ "name", "description", "value", "log_type" ], "$ref": "#/components/schemas/FilterConfiguration" }, "FirewallHref": { "type": "string", "pattern": "^/v2/providers/[a-z0-9]+(/regions/[a-zA-Z0-9-_.]+)?/firewalls/[a-z0-9-_]+$", "description": "Endpoint resource reference to the firewall rule." }, "GenericConfigurationModel": { "type": "object", "description": "A generic configuration model object that is to be used when an object specific configuration model schema is not found." }, "Group": { "description": "A collection of roles granted to users of an account", "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/GroupConfiguration" }, { "$ref": "#/components/schemas/GroupIdentity" }, { "$ref": "#/components/schemas/GroupedRoleState" } ] }, "GroupConfiguration": { "description": "The configurable parts of a group", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the group", "minLength": 1, "maxLength": 50 }, "description": { "type": "string", "description": "Description of the group", "minLength": 0, "maxLength": 100 }, "roles": { "type": "array", "description": "Roles grant permissions to users", "items": { "type": "string", "pattern": "^/v2/accounts/[a-z0-9]+/roles/[a-z0-9]+$" }, "uniqueItems": true } } }, "GroupConfigurationPost": { "type": "object", "required": [ "name" ], "$ref": "#/components/schemas/GroupConfiguration" }, "GroupIdentity": { "description": "Identifier for a group", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to this group", "pattern": "^/v2/(accounts|users)/[a-z0-9]+/groups/[a-z0-9]+$" } } }, "GroupInvitation": { "description": "An invitation to a group.", "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/GroupInvitationConfiguration" }, { "$ref": "#/components/schemas/GroupInvitationIdentity" }, { "$ref": "#/components/schemas/GroupInvitationState" }, { "$ref": "#/components/schemas/GroupInvitationInitializer" } ] }, "GroupInvitationConfiguration": { "description": "The configurable parts of a group invitation", "additionalProperties": false, "properties": { "state": { "type": "string", "description": "The current state of the group invitation.", "enum": [ "queued", "accepted", "sent", "declined" ] } } }, "GroupInvitationIdentity": { "description": "The identifier for a group invitation.", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to this group", "pattern": "^/v2/accounts/[a-z0-9]+/group-invitations/[a-z0-9]+$" } } }, "GroupInvitationInitializer": { "description": "A group invitation invites a user to a particular group.", "additionalProperties": false, "properties": { "user_email": { "description": "Email of the user", "$ref": "#/components/schemas/Email" }, "group": { "type": "string", "description": "A reference to this group", "pattern": "^/v2/accounts/[a-z0-9]+/groups/[a-z0-9]+$" } } }, "GroupInvitationPost": { "type": "object", "required": [ "user_email", "group" ], "$ref": "#/components/schemas/GroupInvitationInitializer" }, "GroupInvitationState": { "description": "The current state of a group invitation", "additionalProperties": false, "properties": { "created": { "$ref": "#/components/schemas/Timestamp" }, "sent": { "$ref": "#/components/schemas/Timestamp" }, "accepted": { "$ref": "#/components/schemas/Timestamp" }, "granted_by": { "type": "string", "description": "The user that sent the invitation", "pattern": "^/v2/users/[a-z0-9]+$" } } }, "GroupedRoleState": { "description": "The current state of a group", "additionalProperties": false, "properties": { "created": { "$ref": "#/components/schemas/Timestamp" }, "updated": { "$ref": "#/components/schemas/Timestamp" } } }, "GroupState": { "type": "object", "description": "The states of the distinct groups over which a monitor monitors. A monitor is triggering if any state is triggered.", "properties": { "monitor_id": { "type": "string", "description": "The ID of the monitor.", "minLength": 12, "maxLength": 12 }, "subject": { "type": "string", "description": "The subject of the monitor.", "maxLength": 200 }, "scope": { "type": "object", "description": "The unique scope of defines this monitoring state." }, "state": { "type": "boolean", "description": "Whether or not this state is triggered." }, "updated": { "$ref": "#/components/schemas/Timestamp" } } }, "Handler": { "type": "object", "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/HandlerInitializer" }, { "$ref": "#/components/schemas/HandlerIdentity" }, { "$ref": "#/components/schemas/HandlerConfiguration" }, { "$ref": "#/components/schemas/HandlerState" } ] }, "HandlerConfiguration": { "type": "object", "description": "The configurable properties of a handler.", "properties": { "description": { "type": "string", "description": "Describes the functionality provided by the handler.", "minLength": 0, "maxLength": 100 }, "file": { "$ref": "#/components/schemas/FileVersionHref" }, "function": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "runtime" ], "properties": { "name": { "type": "string", "description": "The handler function's name.", "minLength": 0, "maxLength": 50 }, "type": { "type": "string", "description": "The handler function's type. One of 'handle-request', 'handle-response' or 'compute'", "enum": [ "handle-request", "handle-response", "compute" ] }, "runtime": { "type": "string", "enum": [ "nodejs16", "nodejs18" ], "description": "The version of the runtime in which the handler function runs." } } }, "memory": { "type": "integer", "description": "The amount of memory, in MB, allocated to the handler during execution." }, "service": { "type": "string", "pattern": "^/v2/services/[a-zA-Z0-9]+$", "description": "The service into which the handler will publish resources." } } }, "HandlerHref": { "type": "string", "description": "A reference to the handler.", "pattern": "^/v2/handlers/[a-z0-9]+$" }, "HandlerIdentity": { "type": "object", "description": "The properties used to uniquely identify a handler.", "additionalProperties": false, "properties": { "href": { "$ref": "#/components/schemas/HandlerHref" } } }, "HandlerInitializer": { "type": "object", "description": "Handler properties that are set once at creation.", "properties": { "name": { "type": "string", "description": "The name of the handler.", "minLength": 0, "maxLength": 50 }, "account": { "$ref": "#/components/schemas/AccountHref" } } }, "HandlerPost": { "type": "object", "description": "Used to create a new handler.", "required": [ "name", "file", "function", "memory", "service" ], "allOf": [ { "type": "object", "$ref": "#/components/schemas/HandlerInitializer" }, { "type": "object", "$ref": "#/components/schemas/HandlerConfiguration" } ] }, "HandlerState": { "type": "object", "description": "The properties of a handler that are updated automatically as it modified.", "additionalProperties": false, "properties": { "associations": { "type": "array", "description": "The applications and CDN control paths with which the handler is associated.", "items": { "$ref": "#/components/schemas/CdnControlAssociation" } }, "created": { "type": "string", "format": "date-time", "description": "The time when the handler was created." }, "updated": { "type": "string", "format": "date-time", "description": "The time when the handler was last updated." }, "xref": { "type": "string", "description": "A reference to the provider resource implementing the handler." } } }, "Header": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "description": "The name of the header to be set.", "type": "string", "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,100}$" }, "value": { "description": "The value for the specified header.", "type": "string", "pattern": "^[!\"#$%&'()*+,\\-./0-9:;<=>?@A-Z\\[\\\\\\]^_`a-z{|}~ ]{0,8190}$" } } }, "HostMeasurement": { "type": "object", "description": "Measurements of resource usage for a particular interval", "required": [ "time", "duration" ], "properties": { "time": { "$ref": "#/components/schemas/Timestamp", "description": "Time at the end of the interval for which the measurements are made. It is expected that systems will synchronize with an accurate external time source to ensure that the correct measurements can be used to make scaling decisions" }, "cpu": { "type": "number", "description": "The total number of CPU cores available on the resource.", "minimum": 1 }, "cpu_percent": { "type": "number", "description": "Percent used of all available CPU time. This is expected to be provided by all resources", "minimum": 0 }, "loadavg_norm": { "type": "array", "description": "For UNIX-based resources, three load averages over 1-, 5-, and 15-minute time periods. For Windows-based resources, three average processor queue length values over 1-, 5-, and 15-minute time periods. All values are divided by the number of CPUs on the server so that scaling parameters based on load average do not have to change if the size of the machine changes.", "items": { "type": "number" }, "minItems": 1, "maxItems": 3 }, "iowait_percent": { "type": "number", "description": "Percentage of available CPU time spent by ready tasks waiting for I/O operations to complete. This is expected to be provided by UNIX-based resources.", "minimum": 0 }, "memory": { "type": "number", "description": "Total physical RAM memory available allocated to the resource, measured in GiB.", "minimum": 0 }, "memory_used_percent": { "type": "number", "description": "Average percentage of memory used. This is expected to be provided by all resources.", "minimum": 0, "maximum": 100 }, "duration": { "type": "integer", "description": "The size of the interval ending at 'time' to which the metrics apply. Providers of metrics are expected to periodically supply metrics in adjacent intervals with identical duration, preferably every 20 seconds." }, "disks": { "description": "Measurement of disks that are owned by a resource.\n", "type": "array", "items": { "$ref": "#/components/schemas/HostMeasurementDisk" } }, "storage": { "type": "number", "description": "Total capacity of the root block hardware storage device, measured in GB.", "minimum": 0 } }, "additionalProperties": false }, "HostMeasurementDisk": { "description": "A measurement of a disk or partition.", "type": "object", "required": [ "name", "free", "total" ], "properties": { "name": { "description": "A mountpoint or drive letter.", "type": "string", "minLength": 1 }, "free": { "description": "An amount of free space, in bytes.", "type": "integer", "minimum": 0 }, "total": { "description": "The size of a disk, in bytes.", "type": "integer", "minimum": 0 }, "free_inodes": { "description": "The number of free inodes on a disk.", "type": "integer", "minimum": 0 }, "total_inodes": { "description": "The number of inodes on a disk.", "type": "integer", "minimum": 0 } } }, "Hostname": { "type": "string", "pattern": "^([a-zA-Z0-9][a-zA-Z0-9\\-_]*\\.){1,}[a-zA-Z0-9-]{2,}$", "format": "hostname" }, "HttpUrl": { "type": "string", "description": "An HTTP URL address.", "format": "uri" }, "IdentityConfiguration": { "type": "object", "description": "Configuration of the identity assigned to cluster servers.", "required": [ "name", "client_id", "principal_id" ], "properties": { "name": { "type": "string", "description": "Name of the identity." }, "client_id": { "type": "string", "description": "Client ID for the identity to be assigned." }, "principal_id": { "type": "string", "description": "Principal ID for the identity to be assigned." } }, "additionalProperties": false }, "Incident": { "type": "object", "description": "Represents a time-bounded condition, typically a failure of some system element or service", "properties": { "href": { "$ref": "#/components/schemas/IncidentHref" }, "state": { "type": "string", "description": "Current state of the incident", "enum": [ "identified", "monitoring", "resolved" ] }, "severity": { "$ref": "#/components/schemas/EventSeverity" }, "summary": { "type": "string", "description": "A short description of the incident" }, "type": { "type": "string", "description": "Identifies the category of the incident. For example proxy-unreachable" }, "created": { "$ref": "#/components/schemas/Timestamp" }, "resolved": { "$ref": "#/components/schemas/Timestamp" }, "updated": { "$ref": "#/components/schemas/Timestamp" }, "subject": { "type": "string", "description": "A reference to the subject of the incident. May be null" } } }, "IncidentHref": { "type": "string", "description": "The identifier for the underlying incident that triggered the event.", "pattern": "^/v2/incidents/[a-z0-9]+$" }, "InstanceFlavor": { "type": "string", "description": "Specifies the type (size) of instances to be created.", "enum": [ "micro", "small", "medium", "large", "xlarge" ] }, "InstanceTemplate": { "type": "string", "pattern": "^/v2/services/[a-z0-9]+(/regions/[a-zA-Z0-9-_.]+)?/instance-templates/[a-z0-9-_]+$", "description": "The endpoint resource identifier for the instance template." }, "InvoiceItem": { "type": "object", "required": [ "due_date", "remaining_amount_due", "total_amount" ], "properties": { "due_date": { "description": "When payment for the invoice is due.", "$ref": "#/components/schemas/Date" }, "remaining_amount_due": { "description": "The amount remaining for the invoice.", "$ref": "#/components/schemas/Currency" }, "total_amount": { "description": "The total amount of the invoice.", "$ref": "#/components/schemas/Currency" } } }, "JsonPatch": { "description": "An array of JSON patch operations as defined by RFC 6902", "type": "array", "items": { "$ref": "#/components/schemas/JsonPatchOperation" } }, "JsonPatchOperation": { "description": "A JSON patch operation as defined by RFC 6902", "required": [ "op", "path" ], "properties": { "op": { "type": "string", "description": "The operation to be performed", "enum": [ "add", "remove", "replace", "move", "copy", "test" ] }, "path": { "type": "string", "description": "A JSON-Pointer", "pattern": "^(/([^/]+))+$" }, "value": { "description": "The value to be used within the operations.", "anyOf": [ { "type": "boolean", "nullable": true }, { "type": "string", "nullable": true }, { "type": "array", "nullable": true }, { "type": "object", "nullable": true }, { "type": "number", "nullable": true } ] }, "from": { "type": "string", "description": "A string containing a JSON Pointer value.", "pattern": "^(/(.*))*(/(.+))+$" } }, "additionalProperties": false }, "Labeler": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/LabelerIdentity" }, { "$ref": "#/components/schemas/LabelerConfiguration" } ], "additionalProperties": false }, "LabelerConfiguration": { "type": "object", "properties": { "name": { "$ref": "#/components/schemas/Name", "maxLength": 255, "description": "The name of the labeler." }, "description": { "type": "string", "maxLength": 100, "description": "A description of the labeler." }, "log_type": { "type": "string", "description": "The type of logs the labeler applies to", "enum": [ "csp-reports", "pageviews", "proxy-logs" ] }, "filter": { "type": "string", "maxLength": 1000, "description": "A [filter expression](https://control.webscale.com/docs/api) to be evaluated for each relevant log\n" }, "label": { "$ref": "#/components/schemas/Label", "maxLength": 100, "description": "Label to be added to logs that match the filter." }, "selector": { "$ref": "#/components/schemas/Selector" } } }, "LabelerIdentity": { "description": "Identifier for a labeler", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to this labeler", "pattern": "^/v2/labelers/[a-z0-9]+$" } } }, "LabelerPatch": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/LabelerConfiguration" } ] }, "LabelerPost": { "type": "object", "description": "Used to create a new labeler", "required": [ "name", "log_type", "filter", "label" ], "allOf": [ { "$ref": "#/components/schemas/LabelerConfiguration" } ] }, "LogAddress": { "type": "string", "description": "The address of the server that recorded the log.", "$ref": "#/components/schemas/Cidr" }, "LogMessage": { "type": "string", "description": "The contents of the log.", "minLength": 1 }, "LogPost": { "type": "object", "required": [ "created", "stream", "message", "address", "filename", "hostname" ], "properties": { "created": { "type": "string", "format": "date-time", "description": "The time when the log was recorded." }, "stream": { "$ref": "#/components/schemas/LogStream" }, "message": { "$ref": "#/components/schemas/LogMessage" }, "address": { "$ref": "#/components/schemas/LogAddress" }, "filename": { "$ref": "#/components/schemas/LogFilename" }, "hostname": { "$ref": "#/components/schemas/LogHostname" } }, "additionalProperties": false }, "LogSchema": { "description": "A schema describing a particular log.", "type": "object", "required": [ "type", "display", "default_order", "fields", "retention" ], "additionalProperties": false, "properties": { "type": { "description": "The type of log being defined.", "type": "string", "enum": [ "access", "cdn", "csp-reports", "custom", "pageviews", "events" ] }, "display": { "description": "Display name for the type of log being defined.", "type": "string", "enum": [ "CDN logs", "CSP reports", "Pageview logs", "Traffic viewer", "Event logs" ] }, "default_order": { "description": "Defines the default behavior for sorting logs based on log fields. Ties are broken with the next log fields described in the ordering.", "type": "string" }, "fields": { "description": "An array of fields.", "type": "array", "items": { "$ref": "#/components/schemas/Field" } }, "retention": { "anyOf": [ { "type": "array", "description": "Array of applications' Log retention.", "items": { "$ref": "#/components/schemas/Retention" } }, { "type": "object", "description": "Account's Log retention.", "$ref": "#/components/schemas/Retention" } ] } } }, "LogFilename": { "type": "string", "description": "The file where the log was written." }, "LogHostname": { "type": "string", "description": "The hostname of the machine running the Webscale Monitoring Agent." }, "LogStream": { "type": "string", "description": "The custom defined category to associate the log with." }, "MaximumQueueTime": { "type": "integer", "description": "Maximum amount of time a request can spend in the suspend queue of a load balancer before it is failed with a timeout. This attribute may only be set by system administrators", "minimum": 1 }, "MergeSlashes": { "type": "boolean", "description": "Controls whether the server merges consecutive slashes in URLs. By default, consecutive slashes are merged into a single slash." }, "MetadataEntry": { "type": "object", "description": "A key/value pair to be made available on servers made with this metadata.", "properties": { "key": { "type": "string", "description": "A key name." }, "value": { "type": "string", "description": "A value associated with the given key." } }, "additionalProperties": false }, "MetadataFileEntry": { "type": "object", "description": "A file to be created on newly created servers.", "properties": { "file": { "nullable": true, "type": "string", "pattern": "^/v2/files/.*$", "description": "A reference to a file object." }, "content": { "nullable": true, "type": "string", "description": "Base64-encoded content to be stored at the specified path on created\nservers.\n" }, "path": { "type": "string", "description": "The absolute path where the file is made available on new servers.", "pattern": "^/[^\\0]*[^/]$" } }, "additionalProperties": false }, "MetricConfiguration": { "type": "object", "required": [ "prototype" ], "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the metric", "minLength": 1, "maxLength": 50, "pattern": "^[a-z0-9-_]+$" }, "frequency": { "type": "integer", "description": "Frequency at which metrics are populated", "default": 60 }, "prototype": { "type": "string", "description": "A reference to the metric prototype", "pattern": "^/v2/metric-prototypes/[a-z0-9]+$" } } }, "MetricPrototype": { "description": "A metric prototype that can be used to configure a custom metric", "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/MetricPrototypeConfiguration" }, { "$ref": "#/components/schemas/MetricPrototypeIdentity" }, { "$ref": "#/components/schemas/MetricPrototypeState" } ] }, "MetricPrototypeConfiguration": { "description": "The configurable attributes of a metric prototype", "properties": { "default_frequency": { "type": "integer", "description": "Frequency at which the value of the metrics will be populated in timeseries" }, "default_name": { "$ref": "#/components/schemas/Name", "description": "The name of the metric prototype", "maxLength": 50, "pattern": "^[a-z0-9-_]+$" }, "description": { "type": "string", "description": "Description about the metric prototype" }, "display": { "type": "string", "description": "Display name of the metric prototype. If not provided it will be populated from the default name.", "pattern": "^[a-z0-9-_]+$" }, "expression": { "type": "string", "description": "Computation query to calculate the value of the metric", "minLength": 1 }, "filter": { "nullable": true, "type": "string", "description": "String predicate expression involving log attributes for the specified log type" }, "group_by": { "type": "string", "description": "An string attribute name for the specified log type that specify grouping" }, "log_type": { "type": "string", "description": "The type of logs from which the metric values need to be fetched", "enum": [ "cdn-logs", "csp-reports", "pageviews", "proxy-logs" ] } } }, "MetricPrototypeIdentity": { "description": "Identifier for a metric prototype", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to this metric prototype", "pattern": "^/v2/metric-prototypes/[a-z0-9]+$" } } }, "MetricPrototypePost": { "type": "object", "allOf": [ { "required": [ "default_name", "expression", "log_type" ] }, { "$ref": "#/components/schemas/MetricPrototypeConfiguration" } ] }, "MetricPrototypeState": { "type": "object", "description": "State values for metric prototype", "properties": { "created": { "$ref": "#/components/schemas/Timestamp", "description": "Creation time of this metric prototype" }, "created_by": { "type": "integer", "description": "Reference to the user that created this metric prototype" } } }, "Metrics": { "description": "Metrics for the given specifications.", "type": "object", "required": [ "from", "to", "resolution", "metrics" ], "properties": { "from": { "$ref": "#/components/schemas/Timestamp", "description": "Start time for the metrics." }, "to": { "$ref": "#/components/schemas/Timestamp", "description": "End time for the metrics." }, "resolution": { "type": "integer", "description": "Resolution of the time series data returned." }, "metrics": { "type": "object", "description": "Metrics returned", "additionalProperties": { "anyOf": [ { "$ref": "#/components/schemas/MetricValues" }, { "$ref": "#/components/schemas/MetricSummary" }, { "$ref": "#/components/schemas/MultiMetrics" } ] } } } }, "MetricsMonitorParameters": { "type": "object", "description": "Configuration of a metrics monitor", "additionalProperties": false, "required": [ "category", "duration", "condition" ], "properties": { "category": { "type": "string", "description": "Category of resources that will be monitored.\n", "enum": [ "host" ] }, "duration": { "description": "Duration in seconds determining the interval size evaluated by a monitor.\n", "type": "integer", "minimum": 60 }, "condition": { "type": "string", "pattern": "^([a-z_]+)\\s*(<|>|<=|>=)\\s*(\\d+(?:\\.\\d+)?)$", "description": "Simple predicate of the form _metric-name_ _op_ _value_. Metric name is\nany valid metric for the category of a monitor. Op is one of `<`, `>`,\n`<=`, `>=`. Value is a floating point constant.\n" } } }, "MultiMetrics": { "description": "An Array of metrics for multiple objects", "type": "array", "items": { "description": "Identification and metric values for objects", "type": "object", "properties": { "name": { "description": "Name of the object", "type": "string" }, "href": { "description": "Href of the object", "type": "string" }, "metrics": { "description": "Requested metrics of the object", "anyOf": [ { "$ref": "#/components/schemas/MetricValues" }, { "$ref": "#/components/schemas/MetricSummary" } ] } } } }, "MetricValues": { "description": "An array of metric values, one per resolution period", "type": "array", "items": { "type": "number" } }, "MetricSummary": { "description": "A summary value of a metric across the entire returned time range", "type": "number" }, "MicrositeArchiveDetails": { "type": "object", "description": "Details for a microsite archive file", "properties": { "files": { "type": "array", "description": "Files contained in the microsite archive", "items": { "$ref": "#/components/schemas/MicrositeFileDetails" } } } }, "MicrositeFile": { "type": "object", "description": "A file object", "properties": { "updated": { "$ref": "#/components/schemas/Timestamp" }, "name": { "type": "string" }, "role": { "type": "string", "enum": [ "microsite" ] }, "content_type": { "type": "string" }, "details": { "$ref": "#/components/schemas/MicrositeArchiveDetails" } } }, "MicrositeFileDetails": { "type": "object", "description": "Metadata for a microsite file", "properties": { "path": { "type": "string", "description": "Path of the file relative to its root" }, "size": { "type": "number", "description": "The size of the file in bytes" }, "updated": { "$ref": "#/components/schemas/Timestamp" } } }, "MonitorPost": { "type": "object", "required": [ "name", "type", "labels", "parameters" ], "allOf": [ { "$ref": "#/components/schemas/MonitorInitializer" }, { "$ref": "#/components/schemas/MonitorConfiguration" }, { "properties": { "parameters": { "anyOf": [ { "$ref": "#/components/schemas/ApplicationMonitorParameters" }, { "$ref": "#/components/schemas/LogsMonitorParameters" }, { "$ref": "#/components/schemas/MetricsMonitorParameters" }, { "$ref": "#/components/schemas/ObjectMonitorParameters" }, { "$ref": "#/components/schemas/SignalMonitorParameters" } ] } } } ] }, "Monitor": { "description": "A generic monitor for monitoring applications, clusters, and other account-level resources and automatically creating and sending notifications", "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/MonitorInitializer" }, { "$ref": "#/components/schemas/MonitorConfiguration" }, { "$ref": "#/components/schemas/MonitorIdentity" }, { "$ref": "#/components/schemas/MonitorState" } ] }, "MonitorAction": { "description": "An action to be executed when the monitor triggers.", "discriminator": { "propertyName": "type" }, "anyOf": [ { "$ref": "#/components/schemas/MonitorActionEnableShieldMode" }, { "$ref": "#/components/schemas/MonitorActionLogEvents" }, { "$ref": "#/components/schemas/MonitorActionNotify" }, { "$ref": "#/components/schemas/MonitorActionReplaceServer" }, { "$ref": "#/components/schemas/MonitorActionManageTickets" } ] }, "MonitorActionEnableShieldMode": { "description": "Enables shield mode for the monitored application(s).", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "enable_shield_mode" ] } }, "additionalProperties": false }, "MonitorActionLogEvents": { "description": "Publishes monitor activity to the event log.", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "log_events" ] } }, "additionalProperties": false }, "MonitorActionNotify": { "description": "Sends monitor notifications to configured recipients.", "type": "object", "required": [ "type", "message", "notify" ], "properties": { "type": { "type": "string", "enum": [ "notify" ] }, "message": { "type": "string" }, "notify": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "MonitorActionReplaceServer": { "description": "Replaces server identified by the monitor", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "replace_server" ] } }, "additionalProperties": false }, "MonitorActionManageTickets": { "description": "Manage the tickets through alerts", "type": "object", "required": [ "type", "message" ], "properties": { "type": { "type": "string", "enum": [ "manage_tickets" ] }, "message": { "type": "string", "description": "General text message for manage_tickets action to update in the ticket" } }, "additionalProperties": false }, "MonitorConfiguration": { "description": "The configurable attributes of a monitor", "properties": { "actions": { "type": "array", "description": "A sequence of actions executed when the monitor triggers.", "items": { "$ref": "#/components/schemas/MonitorAction" } }, "name": { "type": "string", "description": "Name of the monitor", "minLength": 1, "maxLength": 50 }, "description": { "type": "string", "description": "Description of the monitor", "minLength": 0, "maxLength": 100 }, "labels": { "type": "array", "description": "An array of labels to which this monitor applies", "items": { "$ref": "#/components/schemas/Label" }, "uniqueItems": true }, "message": { "type": "string", "description": "The template to use to generate the notification message", "minLength": 0, "maxLength": 10000 }, "notify": { "type": "array", "description": "An array of URLs to which the notification may be sent", "items": { "$ref": "#/components/schemas/MonitorNotification" }, "uniqueItems": true }, "log_events": { "type": "boolean", "description": "A boolean that determines if monitor state changes are added to the event log." }, "parameters": { "discriminator": { "propertyName": "type" }, "anyOf": [ { "$ref": "#/components/schemas/ApplicationMonitorParameters" }, { "$ref": "#/components/schemas/DataTransferBillingMonitorParameters" }, { "$ref": "#/components/schemas/LogsMonitorParameters" }, { "$ref": "#/components/schemas/MetricsMonitorParameters" }, { "$ref": "#/components/schemas/ObjectMonitorParameters" }, { "$ref": "#/components/schemas/SignalMonitorParameters" }, { "$ref": "#/components/schemas/EmptyObject" } ] } } }, "MonitorIdentity": { "description": "Identifier for a monitor", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to this monitor", "pattern": "^/v2/monitors/[a-z0-9]+$" } } }, "MonitorInitializer": { "type": "object", "description": "Monitor attributes that cannot be changed after creation.", "properties": { "type": { "type": "string", "description": "Type of the monitor", "enum": [ "application", "logs", "metrics", "object-data-plane", "signal" ] } } }, "MonitorNotification": { "type": "string", "description": "A notification to enact when monitoring is completed.", "pattern": "^(mailto:.+@.+\\..+)|((https?:)?//([\\w-]{1,63}\\.){1,}[\\w-]{2,63})?((??@A-Z\\[\\\\\\]^_`a-z{|}~]{0,200}" } }, "additionalProperties": false }, "PageControlActionSetCookie": { "description": "Set a response cookie.", "required": [ "name", "type", "value" ], "properties": { "type": { "type": "string", "enum": [ "set-cookie" ] }, "name": { "description": "The name of the cookie to be set", "type": "string", "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "value": { "description": "The value to set for the cookie", "type": "string", "pattern": "^[!#$%&'()*+\\-./0-9:<=>?@A-Z\\[\\]^_`a-z{|}~]{0,100}$" }, "max_age": { "description": "The maximum age of the cookie, in seconds", "$ref": "#/components/schemas/NonNegativeInteger" }, "path": { "description": "The path to which the cookie applies", "type": "string", "pattern": "^[!\"#$%&'()*+,\\-./0-9:<=>?@A-Z\\[\\\\\\]^_`a-z{|}~]{0,200}" } }, "additionalProperties": false }, "PageControlActionSetPagespeedOptions": { "description": "Provides options for the pagespeed integration", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "set-pagespeed-options" ] }, "disable_filters": { "type": "array", "description": "Array of filter names to disable. See the enable_filters attribute for the filters enabled by default", "items": { "$ref": "#/components/schemas/PagespeedFilterName" } }, "enable": { "type": "boolean", "description": "Set to false to disable pagespeed processing", "default": "true" }, "enable_filters": { "type": "array", "description": "Array of filter names to enable. The filters enabled by default are: add_head, canonicalize_javascript_libraries, combine_css, convert_meta_tags, extend_cache, fallback_rewrite_css_urls, flatten_css_imports, inline_css, inline_import_to_link, inline_javascript, insert_dns_prefetch, rewrite_css, rewrite_images, rewrite_javascript, and rewrite_style_attributes_with_url", "items": { "$ref": "#/components/schemas/PagespeedFilterName" } } }, "additionalProperties": false }, "PageControlActionSetRequestHeader": { "description": "Set a request header before a request is sent to a backend server.", "required": [ "name", "type", "value" ], "properties": { "type": { "type": "string", "enum": [ "set-request-header" ] }, "name": { "description": "The name of the header to be set", "type": "string", "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,100}$" }, "value": { "description": "A [value template](/docs/api#value-template) evaluated to set the\nheader value.\n", "type": "string", "pattern": "^[!\"#$%&'()*+,\\-./0-9:;<=>?@A-Z\\[\\\\\\]^_`a-z{|}~ ]{0,8190}$" } }, "additionalProperties": false }, "PageControlActionSetRequestTimeout": { "description": "Set timeout for a request", "type": "object", "required": [ "type", "timeout" ], "properties": { "type": { "type": "string", "enum": [ "set-request-timeout" ] }, "timeout": { "$ref": "#/components/schemas/PositiveInteger", "description": "Timeout specified in seconds for which a request can be served" } }, "additionalProperties": false }, "PageControlActionSetResponseHeader": { "description": "Set a response header before a response is returned to a web browser.", "required": [ "name", "type", "value" ], "properties": { "type": { "type": "string", "enum": [ "set-response-header" ] }, "name": { "description": "The name of the header to be set", "type": "string", "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,100}$" }, "value": { "description": "A [value template](/docs/api#value-template) evaluated to set the\nheader value.\n", "type": "string", "pattern": "^[!\"#$%&'()*+,\\-./0-9:;<=>?@A-Z\\[\\\\\\]^_`a-z{|}~ ]{0,65536}$" } }, "additionalProperties": false }, "PageControlActionServe": { "description": "Serve the microsite resource specified by a relative path with a specified status code. If the resource does not exist in the application's microsite, then the file index.html is used instead, which is guaranteed to exist.", "type": "object", "required": [ "type", "code", "path" ], "properties": { "type": { "type": "string", "enum": [ "serve" ] }, "code": { "description": "The HTTP status code to return", "type": "string", "pattern": "^[1-5][0-9]{2}$" }, "file": { "description": "A reference to the file to be served. If omitted, the default microsite\nconfigured for the application will be used.\n", "$ref": "#/components/schemas/FileHref" }, "path": { "description": "A [value template](/docs/api#value-template) used as the path within the\nspecified microsite. If the path does not exist, then `index.html` is\nserved.\n", "type": "string", "pattern": "^[^/]" } }, "additionalProperties": false }, "PageControlActionServeCaptchaChallenge": { "description": "Issue a reCaptcha challenge to the user for all incoming requests unless the user has successfully completed a validation before.", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "serve-captcha-challenge" ] } }, "additionalProperties": false }, "PageControlActionTerminateHttps": { "description": "Use HTTP instead of HTTPS to communicate with backend servers regardless of the request protocol. This only applies to a `use-alternate-backends` action that is defined in the same web control as this action.", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "terminate-https" ] } }, "additionalProperties": false }, "PageControlActionUseAlternateBackends": { "description": "Use different servers than the default for matching requests. Final action", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "use-alternate-backends" ] }, "cluster": { "description": "A reference to a cluster to which traffic is sent. One of cluster or servers is required", "$ref": "#/components/schemas/ClusterHref", "default": "null" }, "cluster_required": { "description": "Indicates whether this reference must be considered when enforcing cluster size constraints. Defaults to true. If explicitly set to false, the reference will be ignored during validation of minimum and maximum size updates to a cluster.", "type": "boolean" }, "servers": { "description": "A list of IP addresses to which traffic is sent. One of cluster or servers is required", "type": "array", "items": { "$ref": "#/components/schemas/ApplicationServer" }, "uniqueItems": true }, "servers_hostname": { "description": "A fully qualified domain name (FQDN) whose addresses are used to set the backend servers to which traffic should be sent", "$ref": "#/components/schemas/Hostname" }, "remote_url": { "nullable": true, "type": "string", "description": "A URL that modifies attributes of a request sent to a backend server. It\ninfluences the request URI, the use of HTTPS, the Host header, SNI, and\nthe port used.\n\n**Scheme**\n\nA scheme in a URL (e.g., `http:` or `https:`) determines whether HTTPS is\nused for a backend connection. `https:` enables HTTPS. It can be omitted\nto use the scheme from a request. When a scheme is explicitly specified, a\n`terminate-https` action in the same web control has no effect.\n\n**Hostname**\n\nA hostname in a URL sets the `Host` header and SNI ([Server Name\nIndication](https://en.wikipedia.org/wiki/Server_Name_Indication)) for a\nbackend request. It can be omitted along with scheme and port to use the\nhostname from a request. The wildcard host, `*` can be used when the\nrequest host should be used but a scheme or a port needs to be specified.\n\n**Port**\n\nSpecifies an optional port number for a backend connection. A port\nspecified in an application's `servers` attribute will override the port\ndetermined by the scheme, but this port will override both.\n\n**Path**\n\nAn optional path is prepended to the path of the incoming request to form\nthe final URI for a request to a backend. For example, if the URL path is\n`/prefix` and the request path is `/page`, the backend receives a request\nfor `/prefix/page`.\n\n### Examples\n\n| Request URL | Remote URL | Effective URL | HTTPS | Port |\n|--------------------------|----------------------|---------------------------------|-------|------|\n| http://example.com/page | | http://example.com/page | no | 80 |\n| http://example.com/page | https://* | https://example.com/page | yes | 443 |\n| https://example.com/page | | https://example.com/page | yes | 443 |\n| https://example.com/page | http://* | http://example.com/page | no | 80 |\n| https://example.com/page | /prefix | https://example.com/prefix/page | yes | 443 |\n| https://example.com/page | //althost.com | https://althost.com/page | yes | 443 |\n| https://example.com/page | //althost.com/prefix | https://althost.com/prefix/page | yes | 443 |\n| https://example.com/page | http://althost.com | http://althost.com/page | no | 80 |\n| http://example.com/page | http://*:8080 | http://example.com:8080/page | no | 8080 |\n| https://example.com/page | https://*:8443 | https://example.com/page | yes | 8443 |\n| http://example.com/page | //*:8443 | http://example.com/page | no | 8443 |\n", "pattern": "^((https?:)?//(([\\w-]{1,63}\\.){1,}[\\w-]{2,63}|\\*)(:(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[1-5]\\d{4}|[1-9]\\d{0,3}))?(/([\\w\\.\\-~!&'\\(\\)\\*\\+,;=:@\\?/]|%[A-Fa-f0-9]{2})*)?|/([\\w\\.\\-~!&'\\(\\)\\*\\+,;=:@\\?/]|%[A-Fa-f0-9]{2})*)$" }, "relative_to": { "nullable": true, "type": "string", "description": "Specifies a path prefix to be removed from the beginning of request URIs.\nThis is useful for routing requests to backend services that do not expect\nthe prefix.\n\nIt is strongly recommended to use this property in conjunction with a\ncondition that ensures it only applies to requests that have the specified\nprefix. Applying it to requests that have the prefix can lead to\nunpredictable behavior with the legacy load balancer.\n\nPrefix removal occurs before the `remote_url` is processed.\n\n### Examples\n\n| Request Path | Relative To | Effective Path |\n|--------------|-------------|----------------|\n| / | | / |\n| /base | | /base |\n| /base | /base | / |\n| /base/page | /base | /page |\n| /page | /base | /page |\n| /based | /base | /based |\n", "pattern": "^/([\\w.\\-~!$&'()*+,;=:@/]|%[A-Fa-f0-9]{2})*?$" }, "direct": { "description": "Bypass all configured application proxies and connect directly to\nthe destination. If not specified, the default is to use configured\nproxies.\n", "type": "boolean" } }, "additionalProperties": false }, "PageControlActionUserHasRole": { "description": "Limit access to accounts and applications to users belonging to the given role.", "type": "object", "required": [ "type", "roles" ], "properties": { "type": { "type": "string", "enum": [ "user-has-role" ] }, "roles": { "type": "array", "description": "Users must belong to at least one of these roles", "items": { "type": "string", "minLength": 1, "pattern": "^/v2/accounts/[a-z0-9]+/roles/[a-z0-9]+$" }, "minItems": 1 } }, "additionalProperties": false }, "PageControlActionSubstitute": { "description": "Substitute a string with an alternate string.", "type": "object", "required": [ "type", "substitutes" ], "properties": { "type": { "type": "string", "enum": [ "substitute" ] }, "substitutes": { "type": "array", "description": "Array of substitutes.", "$ref": "#/components/schemas/Substitutes" } }, "additionalProperties": false }, "PageControlActionUseServerlessFunction": { "description": "Allows the user to invoke serverless function", "type": "object", "required": [ "function" ], "properties": { "type": { "type": "string", "enum": [ "use-serverless-function" ] }, "function": { "$ref": "#/components/schemas/HandlerHref" } }, "additionalProperties": false }, "PageControlConditionAsnIsIncluded": { "description": "Tests if the ASN of a request is included in the specified list.", "type": "object", "required": [ "list" ], "properties": { "list": { "type": "array", "items": { "$ref": "#/components/schemas/Asn" }, "minItems": 1 } } }, "PageControlConditionAsnIsNotIncluded": { "description": "Tests if the ASN of a request is excluded from the specified list.", "type": "object", "required": [ "list" ], "properties": { "list": { "type": "array", "items": { "$ref": "#/components/schemas/Asn" }, "minItems": 1 } } }, "PageControlConditionAuthCookieIsNotSet": { "description": "Test to see if a named authorization cookie is not set or is expired.", "type": "object", "required": [ "name" ], "properties": { "name": { "description": "Name of the cookie to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" } } }, "PageControlConditionAuthCookieIsSet": { "description": "Test to see if a named authorization cookie is set and not expiredd.", "type": "object", "required": [ "name" ], "properties": { "name": { "description": "Name of the cookie to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" } } }, "PageControlConditionCookieIsNotSet": { "description": "Test to see if a named cookie is not set.", "type": "object", "required": [ "name" ], "properties": { "name": { "description": "Name of the cookie to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" } } }, "PageControlConditionCookieIsSet": { "description": "Test to see if a named cookie is set.", "type": "object", "required": [ "name" ], "properties": { "name": { "description": "Name of the cookie to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" } } }, "PageControlConditionCookieValueDoesNotMatch": { "description": "Test to check if the named cookie value does not match the specified pattern. If the specified cookie does not exist, this condition will evaluate to true. Cookie value pattern must be a regular expression.", "type": "object", "required": [ "name", "pattern" ], "properties": { "name": { "description": "Name of the cookie to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "pattern": { "description": "A regular expression to match with cookie value", "type": "string", "minLength": 1, "maxLength": 255, "format": "regex" } } }, "PageControlConditionCookieValueMatches": { "description": "Test to check if the named cookie value matches the specified pattern. Cookie value pattern must be a regular expression.", "type": "object", "required": [ "name", "pattern" ], "properties": { "name": { "description": "Name of the cookie to test", "type": "string", "minLength": 1, "pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]{1,50}$" }, "pattern": { "description": "A regular expression to match with cookie value", "type": "string", "minLength": 1, "maxLength": 255, "format": "regex" } } }, "PageControlConditionCountryIsIncluded": { "description": "Tests if the country of origin of a request is included in the specified list.", "type": "object", "required": [ "list" ], "properties": { "list": { "$ref": "#/components/schemas/CountryCodes" } } }, "PageControlConditionCountryIsNotIncluded": { "description": "Tests if the country of origin of a request is excluded from the specified list.", "type": "object", "required": [ "list" ], "properties": { "list": { "$ref": "#/components/schemas/CountryCodes" } } }, "PageControlConditionRandom": { "description": "A test based on generating a random variable and triggering on a specified probability ", "type": "object", "required": [ "probability" ], "properties": { "probability": { "description": "Probability for which condition is true", "type": "number" } } }, "PageControlConditionRateLimit": { "description": "True when the number of request during a duration is greater than a specified threshold.", "type": "object", "required": [ "duration", "display_unit", "threshold" ], "properties": { "client_id": { "type": "string", "description": "A [value template](/docs/api#value-template) evaluated to set the client\nid\n", "default": "$(request_address)" }, "duration": { "type": "integer", "description": "The amount of time, in number of seconds, over which to accumulate the request count", "minimum": 5 }, "display_unit": { "$ref": "#/components/schemas/DurationDisplayUnit" }, "threshold": { "description": "Maximum number of requests in the given duration before the condition is triggered", "type": "integer", "minimum": 1 } } }, "PageControlConditions": { "description": "The conditions that cause a page control to trigger", "type": "object", "properties": { "address_is_whitelisted": { "description": "The actions will be applied to whitelist addresses", "type": "object" }, "address_is_not_whitelisted": { "description": "The actions will be applied to all the incoming IP addresses except whitelist addresses. By default, actions are applied to whitelist addresses", "type": "object" }, "auth_cookie_is_not_set": { "description": "Tests if an authorization cookie is not set or is expired", "$ref": "#/components/schemas/PageControlConditionAuthCookieIsNotSet" }, "auth_cookie_is_set": { "description": "Tests if an unexpired authorization cookie is set", "$ref": "#/components/schemas/PageControlConditionAuthCookieIsSet" }, "cookie_is_not_set": { "description": "Tests if a request cookie is not set", "$ref": "#/components/schemas/PageControlConditionCookieIsNotSet" }, "cookie_is_set": { "description": "Tests if a request cookie is set", "$ref": "#/components/schemas/PageControlConditionCookieIsSet" }, "cookie_value_does_not_match": { "description": "Test to check if the named cookie value does not match the specified pattern. If the specified cookie does not exist, this condition will evaluate to true.", "$ref": "#/components/schemas/PageControlConditionCookieValueDoesNotMatch" }, "cookie_value_matches": { "description": "Test to check if the named cookie value matches the specified pattern.", "$ref": "#/components/schemas/PageControlConditionCookieValueMatches" }, "country_is_not": { "description": "Tests if the country of origin of a request is excluded from the specified list", "$ref": "#/components/schemas/PageControlConditionCountryIsNotIncluded" }, "country_is": { "description": "Tests if the country of origin of a request is included in the specified list", "$ref": "#/components/schemas/PageControlConditionCountryIsIncluded" }, "asn_is_not": { "description": "Tests if the ASN of a request is excluded from the specified list", "$ref": "#/components/schemas/PageControlConditionAsnIsNotIncluded" }, "asn_is": { "description": "Tests if the ASN of a request is included in the specified list", "$ref": "#/components/schemas/PageControlConditionAsnIsIncluded" }, "header_value_matches": { "description": "Test to check if the header value matches the specified pattern", "$ref": "#/components/schemas/ConditionHeaderValueMatches" }, "header_value_does_not_match": { "description": "Test to check if the header value does not match the specified pattern. If the specified header does not exist, this condition will evaluate to true.", "$ref": "#/components/schemas/ConditionHeaderValueDoesNotMatch" }, "headers_match": { "description": "Test to check if the list of named header values match their respective specified patterns.", "$ref": "#/components/schemas/ConditionHeaders" }, "headers_not_match": { "description": "Test to check if the list of named header values does not match their respective specified patterns.", "$ref": "#/components/schemas/ConditionHeaders" }, "method_is": { "description": "Test to check if method name is included in the specified list", "$ref": "#/components/schemas/ConditionMethodIs" }, "method_is_not": { "description": "Test to check if method name is excluded from the specified list", "$ref": "#/components/schemas/ConditionMethodIsNot" }, "address_is_threat": { "description": "Tests if the requester's IP address is a known malicious source.", "type": "object" }, "address_is_not_threat": { "description": "Tests if the requester's IP address is not a known mailicious source.", "type": "object" }, "is_crawler": { "description": "The actions will be applied to requests from known web crawlers.", "type": "object" }, "address_in_set": { "description": "The actions will be applied to requests for which request address matches one of the addresses from the specified set", "$ref": "#/components/schemas/PageControlConditionAddressInSet" }, "address_not_in_set": { "description": "The actions will be applied to requests for which request address does not match one of the addresses from the specified set", "$ref": "#/components/schemas/PageControlConditionAddressNotInSet" }, "random": { "description": "Trigger based on a random value", "$ref": "#/components/schemas/PageControlConditionRandom" }, "rate_limit": { "description": "Trigger based on a rate limit", "$ref": "#/components/schemas/PageControlConditionRateLimit" }, "referrer_is": { "description": "The actions will be applied to requests for which request referrer matches with the given referrer", "type": "array", "items": { "description": "Tests if referrer of a request matches with the given referrer", "type": "string", "maxLength": 255 } }, "referrer_is_not": { "description": "The actions will be applied to requests for which request referrer does not match with the given referrer", "type": "array", "items": { "description": "Tests if referrer of a request matches with the given referrer", "type": "string", "maxLength": 255 } }, "referrer_is_defined": { "description": "The actions will be applied to requests for which request referrer matches with one of the application aliases", "type": "object" }, "referrer_is_not_defined": { "description": "The actions will be applied to requests for which request referrer does not match with one of the application aliases", "type": "object" }, "status_code_matches": { "description": "Test to check if the response status code matches the pattern.", "$ref": "#/components/schemas/PageControlConditionStatusCodeMatches" }, "urls": { "description": "Array of urls that a request must match one of to trigger the page control.", "$ref": "#/components/schemas/ConditionUrls" }, "url_is_not": { "description": "Array of url objects that a request must not match any of to trigger the page control.", "$ref": "#/components/schemas/ConditionUrls" }, "user_agent_matches": { "description": "The actions will be applied to requests for which user-agent matches with the given user-agent regular expression", "$ref": "#/components/schemas/PageControlConditionUserAgentMatches" }, "user_agent_does_not_match": { "description": "The actions will be applied to requests for which user-agent does not match with the given user-agent regular expression", "$ref": "#/components/schemas/PageControlConditionUserAgentDoesNotMatch" } } }, "PageControlConditionStatusCodeMatches": { "description": "Test to see if the response status code matches the pattern.", "type": "object", "required": [ "pattern" ], "properties": { "pattern": { "description": "A regular expression to match against the response status code.", "type": "string", "minLength": 1, "maxLength": 255, "format": "regex" } } }, "PageControlConditionAddressInSet": { "description": "Tests if requester's IP address is in the specified address set", "type": "object", "required": [ "address_set" ], "properties": { "address_set": { "$ref": "#/components/schemas/AddressSetHref" } }, "additionalProperties": false }, "PageControlConditionAddressNotInSet": { "description": "Tests if requester's IP address is not in the specified address set", "type": "object", "required": [ "address_set" ], "properties": { "address_set": { "$ref": "#/components/schemas/AddressSetHref" } }, "additionalProperties": false }, "PageControlConditionUserAgentDoesNotMatch": { "description": "Test if user-agent of a request does not match the given regular expression", "type": "object", "required": [ "pattern" ], "properties": { "pattern": { "description": "A regular expression to match with user-agent", "type": "string", "minLength": 1 } } }, "PageControlConditionUserAgentMatches": { "description": "Test if user-agent of a request matches the given regular expression", "type": "object", "required": [ "pattern" ], "properties": { "pattern": { "description": "A regular expression to match with user-agent", "type": "string", "minLength": 1 } } }, "PageControlConfiguration": { "description": "Configuration for a page control", "required": [ "actions", "name" ], "properties": { "name": { "type": "string", "description": "Short name describing the page control.", "minLength": 1, "maxLength": 50 }, "description": { "type": "string", "description": "Optional additional description of the page control.", "minLength": 0, "maxLength": 255 }, "mode": { "type": "string", "description": "Set as 'maintenance' for maintenance mode page control.", "enum": [ "maintenance", "request", "response" ] }, "enabled": { "description": "Enables or disables the page control.", "type": "boolean" }, "conditions": { "description": "Conditions that must be satisfied to trigger the page control. If no conditions are specified then the page control will trigger unconditionally", "$ref": "#/components/schemas/PageControlConditions" }, "actions": { "type": "array", "description": "Actions that are applied when the page control is triggered.", "items": { "$ref": "#/components/schemas/PageControlAction" }, "minItems": 0 } } }, "PageControlIdentity": { "description": "Identifier for a page control", "properties": { "href": { "type": "string", "description": "A reference to this page control", "pattern": "^/v2/applications/[a-z0-9]+/pagecontrols/\\d+$" } } }, "WebControlIdentity": { "description": "Identifier for a web control", "properties": { "href": { "type": "string", "description": "A reference to this web control", "pattern": "^/v2/applications/[a-z0-9]+/webcontrols/\\d+$" } } }, "PageControlState": { "properties": { "version": { "description": "The version of the page control. Versions are numbered, beginning with 1 and increase every time the page control is changed", "type": "integer" }, "created": { "description": "When this version of the page control was created", "$ref": "#/components/schemas/Timestamp" }, "deleted": { "description": "When the page control was deleted. Not present if it was not deleted", "$ref": "#/components/schemas/Timestamp" }, "history": { "type": "array", "description": "All previous versions of this page control", "items": { "$ref": "#/components/schemas/PageControl" } } } }, "WebControlState": { "properties": { "version": { "description": "The version of the web control. Versions are numbered, beginning with 1 and increase every time the web control is changed", "type": "integer" }, "created": { "description": "When this version of the web control was created", "$ref": "#/components/schemas/Timestamp" }, "deleted": { "description": "When the web control was deleted. Not present if it was not deleted", "$ref": "#/components/schemas/Timestamp" }, "history": { "type": "array", "description": "All previous versions of this web control", "items": { "$ref": "#/components/schemas/WebControl" } } } }, "PagespeedFilterName": { "type": "string", "enum": [ "add_base_tag", "add_head", "add_ids", "add_instrumentation", "cache_partial_html", "canonicalize_javascript_libraries", "collapse_whitespace", "combine_css", "combine_javascript", "combine_heads", "compute_statistics", "compute_critical_css", "convert_gif_to_png", "convert_jpeg_to_progressive", "convert_jpeg_to_webp", "convert_meta_tags", "convert_png_to_jpeg", "convert_to_webp_animated", "convert_to_webp_lossless", "debug", "decode_rewritten_urls", "dedup_inlined_images", "defer_iframe", "defer_javascript", "deterministic_js", "disable_javascript", "div_structure", "elide_attributes", "experiment_collect_mob_image_info", "explicit_close_tags", "extend_cache_css", "extend_cache_images", "extend_cache_pdfs", "extend_cache_scripts", "fallback_rewrite_css_urls", "fix_reflows", "flatten_css_imports", "flush_subresources", "in_place_optimize_for_browser", "include_js_source_maps", "inline_css", "inline_google_font_css", "inline_images", "inline_import_to_link", "inline_javascript", "inline_preview_images", "insert_dns_prefetch", "insert_ga", "insert_img_dimensions", "insert_image_dimensions", "jpeg_subsampling", "lazyload_images", "local_storage_cache", "left_trim_urls", "make_google_analytics_async", "make_show_ads_async", "mobilize", "mobilize_precompute", "move_css_above_scripts", "move_css_to_head", "outline_css", "outline_javascript", "pedantic", "prioritize_critical_css", "recompress_jpeg", "recompress_png", "recompress_webp", "remove_comments", "remove_quotes", "resize_images", "resize_mobile_images", "resize_rendered_image_dimensions", "responsive_images", "responsive_images_zoom", "rewrite_css", "rewrite_domains", "rewrite_javascript_external", "rewrite_javascript_inline", "rewrite_style_attributes", "rewrite_style_attributes_with_url", "split_html", "split_html_helper", "sprite_images", "strip_image_color_profile", "strip_image_meta_data", "strip_scripts", "trim_urls" ] }, "PaymentItem": { "type": "object", "required": [ "amount", "date" ], "properties": { "amount": { "description": "The amount paid.", "$ref": "#/components/schemas/Currency" }, "date": { "description": "When the payment was made.", "$ref": "#/components/schemas/Date" } } }, "Permissions": { "type": "object", "required": [ "method", "spec", "effect" ], "additionalProperties": false, "properties": { "method": { "description": "The HTTP method to which the permission applies.", "type": "string", "enum": [ "POST", "GET", "PUT", "PATCH", "DELETE" ] }, "spec": { "type": "array", "description": "A collection of API specifications", "items": { "description": "API endpoint specifier. A single wildcard (`*`) will match up to the path delimiter '/'. A double wildcard (`**`) will match across path delimiters.", "type": "string", "pattern": "^(?:/v2)?(?:/(?:(?:[a-z0-9]|[a-z][-_][a-z])+|\\*\\*?)){1,}$" }, "uniqueItems": true }, "effect": { "description": "Permit or deny permission", "type": "string", "enum": [ "permit", "deny" ] } } }, "Plan": { "description": "Blueprint of a plan for all the applications", "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/PlanIdentity" }, { "$ref": "#/components/schemas/PlanConfiguration" }, { "$ref": "#/components/schemas/PlanState" } ] }, "PlanAttributes": { "type": "object", "description": "Attribtues of a plan", "additionalProperties": false, "properties": { "adcpools": { "type": "array", "description": "An array of number for the available adcpools", "items": { "type": "integer" } }, "analytics": { "type": "array", "description": "An array of analytics features enabled.", "items": { "type": "string", "enum": [ "web-vitals", "user-analytics", "traffic-monitoring", "security-insights" ] }, "uniqueItems": true }, "application_testing_allocated_users": { "type": "integer", "description": "Allocated application testing users" }, "application_testing_allocated_virtual_user_minutes": { "type": "integer", "description": "Allocated application testing virtual user minutes" }, "application_testing_virtual_user_minute_price": { "type": "integer", "description": "Price of virtual user minute" }, "cdn_configuration_permitted": { "type": "array", "description": "Attributes that are permitted for a CDN configuration.", "items": { "type": "string", "enum": [ "magento_varnish", "html_streaming" ] }, "uniqueItems": true }, "data_transfer_allowance": { "type": "integer", "description": "Data transfer allowance" }, "data_transfer_allowance_period": { "type": "integer", "description": "Data transfer allowance period" }, "enable_application_testing": { "type": "boolean", "description": "When enabled, application testing feature is enabled" }, "enable_app_shielding": { "type": "boolean", "description": "When enabled, app shielding feature is enabled" }, "enable_autoscaler": { "type": "boolean", "description": "When enabled, autoscaler feature is enabled" }, "enable_cdn": { "type": "boolean", "description": "When enabled, CDN feature is enabled" }, "enable_custom_logs": { "type": "boolean", "description": "When enabled, custom logs feature is enabled" }, "enable_geolocation": { "type": "boolean", "description": "When enabled, geolocation feature is enabled" }, "enable_logs": { "type": "boolean", "description": "When enabled, logs are enabled" }, "enable_optimization": { "type": "boolean", "description": "When enabled, optimization feature is enabled" }, "enable_page_control_actions": { "type": "array", "description": "An array of string for the available webcontrol actions", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "enable_page_control_conditions": { "type": "array", "description": "An array of string for the available webcontrol conditions", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "enable_ranges": { "type": "array", "description": "An array of string for the specified ranges", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "enable_security_monitoring": { "type": "boolean", "description": "When enabled, security monitoring feature is enabled" }, "enable_site_cache": { "type": "boolean", "description": "When enabled, site cache feature is enabled" }, "enable_rate_limit": { "type": "boolean", "description": "When enabled, rate limit feature is enabled" }, "site_cache_max_metadata_entries": { "type": "integer", "description": "Maximum site cache metadata entries" }, "enable_threats_portlet": { "type": "boolean", "description": "When enabled, threats portlet feature is enabled" }, "enable_views": { "type": "array", "description": "An array of string for different available views", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "hosting_allowance": { "type": "object", "description": "The number of cloud provider instances included in a plan", "additionalProperties": false, "properties": { "cluster": { "type": "object", "description": "The hosting resources permitted for use by clusters presented as a count per cloud provider instance type" }, "dataplane": { "type": "object", "description": "The hosting resources permitted for use by data planes presented as a count per cloud provider instance type" } } }, "log_retention": { "type": "array", "description": "An array of log retention plan configuration objects", "items": { "type": "object", "additionalProperties": false, "required": [ "type" ], "properties": { "type": { "type": "string", "description": "Type of log retention", "enum": [ "default", "cdn", "csp-reports", "pageviews", "proxy-logs", "events", "custom", "sessions" ] }, "online_days": { "type": "integer", "description": "Number of online days" }, "archive_days": { "type": "integer", "description": "Number of archive days" }, "online_space_allowance": { "type": "integer", "description": "Allowance for online space" }, "archive_space_allowance": { "type": "integer", "description": "Allowance for archive space" } } }, "minItems": 1 }, "maintenance_mode": { "type": "boolean", "description": "When enabled, maintenance mode is enabled" }, "max_adc_count": { "type": "integer", "description": "Total number of ADCs" }, "alias_count": { "type": "integer", "description": "The number of aliases per an application" }, "monitoring_available": { "type": "array", "description": "An array of string for the different available monitoring types", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "monthly_bill": { "type": "integer", "description": "Total monthly bill" }, "monthly_data_transfer_limit": { "type": "integer", "description": "Total limit of the monthly data transfer" }, "num_page_controls": { "type": "integer", "description": "Number of page controls" }, "primary": { "type": "boolean", "description": "When enabled, primary feature is enabled" }, "protections_available": { "type": "array", "description": "An array of string for the available protection types", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "site_cache_space": { "type": "integer", "description": "Available site cache space" }, "target_adc_count": { "type": "integer", "description": "Number of target ADC count" }, "shared_data_planes": { "type": "array", "description": "An array of shared dataplane references", "items": { "type": "string", "description": "A reference to the data plane.", "pattern": "^/v2/data-planes/[a-z0-9]+$" }, "minItems": 1, "uniqueItems": true }, "dedicated_data_plane_count": { "type": "integer", "description": "Count of dedicated dataplane" } } }, "PlanConfiguration": { "type": "object", "description": "The configurable attributes of a plan", "additionalProperties": false, "properties": { "id": { "type": "string", "description": "Unique identifier to identify the plan.", "pattern": "^[A-Za-z0-9-]+$" }, "name": { "type": "string", "description": "Name of the plan." }, "attrs": { "$ref": "#/components/schemas/PlanAttributes" }, "subject_type": { "type": "string", "description": "The subject of the plan" } } }, "PlanIdentity": { "description": "Identifier for a plan", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to this plan", "pattern": "^/v2/plans/[a-z0-9]+$" } } }, "PlanState": { "type": "object", "description": "State values for plan", "properties": { "created": { "$ref": "#/components/schemas/Timestamp", "description": "Creation time of this plan" }, "created_by": { "type": "integer", "description": "Reference to the user that created this plan" }, "updated": { "$ref": "#/components/schemas/Timestamp", "description": "Update time of this plan" }, "updated_by": { "type": "integer", "description": "Reference to the user that updated this plan" } } }, "PlanPost": { "type": "object", "required": [ "id", "name", "attrs" ], "allOf": [ { "$ref": "#/components/schemas/PlanConfiguration" } ] }, "PlanReadWrite": { "type": "object", "required": [ "href" ], "properties": { "href": { "type": "string", "description": "The plan reference.", "minLength": 1, "pattern": "^(/v2/plans/)?([A-Za-z0-9-]+)$" } } }, "PositiveInteger": { "type": "integer", "description": "An integer of value 1 or more.", "minimum": 1 }, "ProcessLog": { "type": "object", "properties": { "process_id": { "type": "string", "description": "The id of the process running the task" }, "thread_id": { "type": "string", "description": "The id of the thread running the task" }, "activity": { "type": "string", "description": "The activity that generated this log message" }, "created": { "type": "string", "format": "date-time", "description": "Time that the log message was created" }, "severity": { "$ref": "#/components/schemas/EventSeverity" }, "message": { "type": "string", "description": "The log message" } } }, "Provider": { "type": "object", "properties": { "created": { "$ref": "#/components/schemas/Timestamp", "description": "The provider was created at this time" }, "href": { "$ref": "#/components/schemas/ProviderHref", "description": "The endpoint for the provider resource" }, "name": { "$ref": "#/components/schemas/Name", "description": "Name given to the cloud provider" }, "type": { "type": "string", "enum": [ "aws", "azure", "cloudsigma", "google" ], "description": "Type of the cloud provider." }, "links": { "$ref": "#/components/schemas/ProviderAttributes" } } }, "ProviderAttributes": { "type": "object", "description": "Provider attributes that represent cloud provider attributes and may be queried via the API." }, "ProviderHref": { "type": "string", "pattern": "^/v2/providers/[a-z0-9]+$", "description": "Resource identifier for the provider, must be a URL encoded string." }, "ProviderResourceHref": { "type": "string", "pattern": "^(/v2/(providers|services)/[a-z0-9]+)(.*)", "description": "Resource href that includes the Webscale provider identifier." }, "ProviderResource": { "type": "object", "description": "Defines the attributes returned when a provider resource is requested from the API.", "properties": { "id": { "type": "string", "description": "Unique identifier to identify the resource in the cloud provider account. In certain cases, the resource name may be the same as its ID." }, "name": { "type": "string", "description": "Name given to this resource in the cloud provider account." }, "description": { "type": "string", "description": "Description of the resource as specified in the cloud provider account." }, "summary": { "type": "string", "description": "A summary description of the resource, constructed by the system automatically, to highlight the essential properties of the resource." }, "restricted_to": { "type": "object", "description": "Defines the restrictions that is placed upon this resource in relation to other provider resources. For example, a subnet resource will specify the network href that it is restricted to be used with and/or a zone href where it is limited to be used within." } } }, "ProviderResourceCollection": { "type": "array", "description": "A collection of provider resources of a particular resource type.", "items": { "$ref": "#/components/schemas/ProviderResource" } }, "Proxy": { "description": "Data planes are constructed as a group of proxy servers", "allOf": [ { "$ref": "#/components/schemas/ProxyConfiguration" }, { "$ref": "#/components/schemas/ProxyIdentity" }, { "$ref": "#/components/schemas/ProxyState" } ] }, "ProxyConfiguration": { "type": "object", "description": "The configurable attributes of a proxy", "properties": { "name": { "type": "string", "description": "The name of the proxy" }, "public_addresses": { "type": "array", "description": "The public IP addresses of this proxy", "items": { "$ref": "#/components/schemas/Cidr" } }, "private_addresses": { "type": "array", "description": "The private IP addresses of this proxy", "items": { "$ref": "#/components/schemas/Cidr" } }, "blueprint": { "description": "The server blueprint used to create this proxy", "$ref": "#/components/schemas/Blueprint" }, "version": { "type": "string", "description": "The version of lgbroker that is running on this proxy" } } }, "ProxyIdentity": { "type": "object", "description": "Identifier for a proxy", "properties": { "href": { "type": "string", "description": "A reference to this proxy", "pattern": "^/v2/data-planes/[a-z0-9]+/proxies/[a-z0-9]+$" } } }, "ProxyState": { "type": "object", "description": "The state of this proxy", "properties": { "state": { "type": "string", "description": "The state of the proxy", "enum": [ "creating", "installing", "acl_installing", "configuring", "running", "maintenance", "replacing", "failed", "deleting" ] }, "created": { "description": "The time this proxy was created", "$ref": "#/components/schemas/Timestamp" }, "unreachable_since": { "description": "The latest time that this proxy became unreachable", "$ref": "#/components/schemas/Timestamp" }, "reachable_since": { "description": "The latest time that this proxy became reachable", "$ref": "#/components/schemas/Timestamp" }, "configured": { "description": "The time this proxy was configured", "$ref": "#/components/schemas/Timestamp" }, "replacement_for": { "type": "string", "description": "The derivative proxy this proxy replaced" } } }, "Range": { "type": "object", "required": [ "from", "to", "count" ], "description": "Details for a log archive file.", "properties": { "from": { "$ref": "#/components/schemas/Timestamp" }, "to": { "$ref": "#/components/schemas/Timestamp" }, "count": { "type": "integer", "description": "The number of logs in the file." }, "state": { "type": "string", "enum": [ "ready", "archived", "restoring" ], "description": "The archive state of the file." }, "size": { "type": "integer", "description": "The size of the file in bytes." } } }, "ReferrerPatterns": { "type": "array", "description": "A list of referrer wildcard patterns", "items": { "description": "A referrer wildcard pattern. Examples: http://example.com/categories/*, example.com/categories/*, /categories/*, example.com", "type": "string", "minLength": 1, "maxLength": 255 }, "minItems": 1 }, "Report": { "description": "A report to track all the resource allocation.", "allOf": [ { "$ref": "#/components/schemas/ReportIdentity" }, { "$ref": "#/components/schemas/ReportState" } ] }, "ReportIdentity": { "description": "Identifier for a report.", "properties": { "href": { "type": "string", "description": "A reference to this report.", "readOnly": true }, "account": { "type": "string", "description": "The account who owns this report.", "readOnly": true } } }, "ReportState": { "description": "The current state of a report.", "additionalProperties": false, "properties": { "elements": { "description": "Content of the report.", "type": "array", "items": { "type": "object" }, "readOnly": true }, "updated": { "type": "string", "format": "date-time", "description": "The timestamp when the report was last published.", "readOnly": true } } }, "SectionedReport": { "type": "object", "additionalProperties": false, "description": "A report generated multiple times over time is captured in independent sections.", "properties": { "schema": { "type": "string", "enum": [ "sectioned-report" ] }, "sections": { "type": "array", "description": "A collection of the independent sections of the report.", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Report name." }, "href": { "type": "string", "description": "Report HREF." } } } } } }, "ApplicationTestReport": { "type": "object", "description": "A single application test report generated after the test completes.", "properties": { "href": { "type": "string", "pattern": "^/v2/reports/test-result$" }, "elements": { "type": "array", "description": "Test elements.", "minItems": 1, "maxItems": 1, "items": { "type": "object", "properties": { "result": { "type": "object", "description": "Test result.", "properties": { "aggregate_metrics": { "type": "object", "description": "Aggregate test metrics.", "properties": { "request_count": { "type": "integer", "description": "Total number of requests sent during the test." }, "average_throughput": { "type": "number", "description": "Average number of request sent per second." }, "average_ttfb": { "type": "number", "description": "Average time it took the application to respond, in milliseconds." }, "response_counts": { "type": "array", "description": "The response status codes returned by the application in two forms: aggregated and grouped by URL.", "items": { "type": "object", "properties": { "code": { "type": "integer", "description": "HTTP request return code." }, "count": { "type": "integer", "description": "HTTP request count." }, "url_grouping": { "type": "array", "description": "URL groups, used to run this test.", "items": { "type": "object", "description": "URL group, used to run this test.", "properties": { "url": { "type": "string", "description": "Test URL." }, "count": { "type": "integer", "description": "The amount of URLs in a group." } } } } } } } } }, "status": { "type": "string", "enum": [ "succeeded", "running", "failed" ], "description": "Test run status." }, "duration": { "type": "integer", "description": "The duration the application test took to run, in seconds." }, "virtual_users": { "type": "integer", "description": "A virtual user is a unique visitor to the application." }, "session_templates": { "type": "array", "description": "Sessions simulate the browsing behavior of a unique visitor to the application.", "items": { "type": "object", "description": "Test session template.", "properties": { "name": { "type": "string", "description": "Template name." }, "session_id": { "type": "string", "description": "Session ID." }, "status": { "type": "string", "enum": [ "succeeded", "running", "failed" ], "description": "Test run status." }, "run_count": { "type": "integer", "description": "Test run count." }, "failure_count": { "type": "integer", "description": "Test failure count." }, "request_templates": { "type": "array", "description": "An array of request templates.", "items": { "type": "object", "description": "Request template.", "properties": { "name": { "type": "string", "description": "Request name." }, "url": { "type": "string", "description": "Request URL." }, "metrics": { "type": "object", "description": "Test run metrics.", "properties": { "request_count": { "type": "integer", "description": "Total number of requests sent during the test." }, "average_ttfb": { "type": "number", "description": "Average time it took the application to respond, in milliseconds." }, "response_counts": { "type": "array", "description": "An array of response counts.", "items": { "type": "object", "description": "Response count.", "properties": { "code": { "type": "integer", "description": "HTTP request return code." }, "count": { "type": "integer", "description": "HTTP request count." } } } } } } } } }, "response_counts": { "type": "array", "description": "An array of response counts.", "items": { "type": "object", "description": "Response count.", "properties": { "code": { "type": "integer", "description": "HTTP request return code." }, "count": { "type": "integer", "description": "HTTP request count." } } } } } } }, "ramp_up": { "type": "array", "description": "To prevent overloading application servers, application testing loads are increased over time.", "items": { "type": "object", "description": "Test ramp up statistics.", "properties": { "virtual_users": { "type": "integer", "description": "A virtual user is a unique visitor to the application." }, "started": { "type": "string", "description": "Test start time." }, "finished": { "type": "string", "description": "Test finish time." }, "metrics": { "type": "object", "description": "Test ramp up metrics.", "properties": { "request_count": { "type": "integer", "description": "Total number of requests sent during the test." }, "average_throughput": { "type": "number", "description": "Average number of request sent per second." }, "average_ttfb": { "type": "number", "description": "Average time it took the application to respond, in milliseconds." } } } } } } } }, "account_name": { "type": "string", "description": "Account name that was running this test." }, "charges": { "type": "object", "description": "Any overage charge generated as result of application test usage in excess to the account's plan." }, "last_updated_test_configuration": { "type": "string", "description": "Time, when test configuration was last updated." }, "name": { "type": "string", "description": "Test name." } } } }, "updated": { "type": "string", "description": "Test update time." }, "account": { "$ref": "#/components/schemas/AccountHref", "description": "The account that generated this report." }, "section": { "type": "string", "description": "Section ID." } } }, "RepoImage": { "type": "object", "required": [ "name", "tags", "images" ], "properties": { "name": { "type": "string", "description": "A name for the registry repository." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "An array of image tags associated with the repository." }, "images": { "type": "array", "items": { "type": "object", "properties": { "tags": { "nullable": true, "type": "array", "items": { "type": "string" }, "description": "An array of image tags for the specific image." }, "id": { "type": "string", "description": "A unique identifier for the image." }, "description": { "type": "string", "description": "Details about the image, including pushed time and commit messages.\n" } } }, "description": "An array containing detailed information about the images." } } }, "Retention": { "type": "object", "description": "Log retention details.", "properties": { "online_age": { "type": "integer", "description": "Days logs will be retained online." } } }, "Resource": { "description": "An entity that may be manifested in a domain external to the Webscale control\nplane. Mapping various external and internal entities into a single namespace\nallows for a unified view of diverse resources. Examples include:\n- a virtual machine in a cloud provider\n - application server\n - docker host\n- an operating system reporting metrics\n- a pod running in a kubernetes cluster\n- a service instance in a kubernetes cluster\n- a container instance running in ECS\n- an RDS instance\n- a service running on a Linux instance\n- an AWS account\n- a process on an linux machine\n", "type": "object", "allOf": [ { "$ref": "#/components/schemas/ResourceIdentity" }, { "$ref": "#/components/schemas/ResourceInitializer" }, { "$ref": "#/components/schemas/ResourceConfiguration" } ] }, "ResourceCategoryConfiguration": { "type": "object", "required": [ "category" ], "discriminator": { "propertyName": "category" }, "anyOf": [ { "$ref": "#/components/schemas/ResourceHostConfiguration" }, { "$ref": "#/components/schemas/ResourceRepository" } ] }, "ResourceCore": { "properties": { "parent": { "description": "A reference to a resource that is the parent to this resource.\n", "type": "string", "pattern": "^/v2/resources/[a-z0-9]+$" } } }, "ResourceHost": { "allOf": [ { "$ref": "#/components/schemas/ResourceCore" }, { "$ref": "#/components/schemas/ResourceHostConfiguration" }, { "properties": { "hostname": { "description": "The name by which the host refers to itself.\n", "type": "string" }, "public_address": { "description": "The primary public IP address for a host. A host is not required to have\na public address.\n", "type": "string" }, "private_address": { "description": "The primary private IP address for a host. A host always has a private\naddress.\n", "type": "string" }, "software": { "description": "A list of software installed on a host. Each software item includes a\nname and version.\n", "type": "array", "items": { "type": "object", "required": [ "name", "version" ], "properties": { "name": { "description": "The name of the software.\n", "type": "string" }, "version": { "description": "The version of the software.\n", "type": "string" } } } } } } ] }, "ResourceHostConfiguration": { "description": "Attributes available for patching a Host resource.\n", "type": "object", "properties": { "category": { "type": "string", "enum": [ "host" ] }, "cpu": { "description": "The number of CPU cores available on a host.", "type": "integer" }, "instance_id": { "description": "The id assigned to the host instance by the cloud provider.", "type": "string" }, "memory": { "description": "The amount of memory available on a host, measured in gigabytes.", "type": "number" }, "storage": { "description": "The amount of storage available on a host, measured in gigabytes.", "type": "number" } } }, "ResourceIdentity": { "type": "object", "properties": { "href": { "type": "string", "pattern": "/v2/resources/[a-z0-9]+", "description": "A reference to a resource object." } } }, "ResourceInitializer": { "type": "object", "required": [ "category" ], "discriminator": { "propertyName": "category" }, "anyOf": [ { "$ref": "#/components/schemas/ResourceHost" }, { "$ref": "#/components/schemas/ResourceRepository" } ] }, "ResourceConfiguration": { "description": "Universally configurable attributes for a resource object.\n", "properties": { "stack": { "nullable": true, "description": "A stack to which a resource belongs.\n", "type": "string", "pattern": "/v2/stacks/[a-z0-9]+" }, "name": { "description": "A name for a resource. All resources are initially named according to\nthe context where they originate, but the name can be changed to something\nmore meaningful to users of the resource as needed.\n", "type": "string" }, "labels": { "type": "array", "description": "Arbitrary labels applied to a resource as an organization aid. For\nexample, labels can be used to organize resources into categories such as\nproduction, staging, or development.\n", "items": { "$ref": "#/components/schemas/Label" } }, "secret": { "description": "A reference to a secret whose use depends on the category of a resource.\n", "type": "string", "pattern": "/v2/secrets/[a-z0-9]+", "nullable": true } } }, "ResourcePatch": { "description": "Data structure for patching a resource.", "type": "object", "allOf": [ { "$ref": "#/components/schemas/ResourceConfiguration" }, { "$ref": "#/components/schemas/ResourceCategoryConfiguration" } ] }, "ResourcePost": { "description": "Representation of new resource.\n", "type": "object", "required": [ "name", "category" ], "allOf": [ { "$ref": "#/components/schemas/ResourceInitializer" }, { "$ref": "#/components/schemas/ResourceConfiguration" } ] }, "ResourcePost_metrics": { "type": "array", "description": "Measurements of resource usage", "items": { "$ref": "#/components/schemas/HostMeasurement" } }, "ResourceReference": { "type": "object", "required": [ "href" ], "properties": { "href": { "type": "string", "description": "The endpoint for the resource." } } }, "ResourceRepository": { "allOf": [ { "$ref": "#/components/schemas/ResourceCore" }, { "properties": { "category": { "description": "A pre-defined category that defines the characteristics of a resource.\n", "type": "string", "enum": [ "repository" ] } } } ] }, "Role": { "description": "A generic role granted to users of an account", "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/RoleConfiguration" }, { "$ref": "#/components/schemas/RoleIdentity" }, { "$ref": "#/components/schemas/RoleState" } ] }, "RoleConfiguration": { "description": "The configurable parts of a role", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the role", "minLength": 1, "maxLength": 50 }, "description": { "type": "string", "description": "Description of the role", "minLength": 0, "maxLength": 100 }, "maximum_auth_age_secs": { "description": "Specifies the maximum age that an authentication may assume this role", "$ref": "#/components/schemas/PositiveInteger" }, "mfa_required": { "type": "boolean", "description": "Determines if this role requires multi-factor authentication" }, "inheritable": { "type": "boolean", "description": "Determines if this role is inheritable by the subaccounts of the account in which it was created" }, "permissions": { "type": "array", "description": "Webscale API permissions", "items": { "$ref": "#/components/schemas/Permissions" } } } }, "RoleConfigurationPost": { "type": "object", "required": [ "name" ], "$ref": "#/components/schemas/RoleConfiguration" }, "RoleIdentity": { "description": "Identifier for a role", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to this role", "pattern": "^/v2/accounts/[a-z0-9]+/roles/[a-z0-9]+$" } } }, "RoleInvitation": { "description": "A invitation to a user role", "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/RoleInvitationConfiguration" }, { "$ref": "#/components/schemas/RoleInvitationIdentity" }, { "$ref": "#/components/schemas/RoleInvitationState" }, { "$ref": "#/components/schemas/RoleInvitationInitializer" } ] }, "RoleInvitationConfiguration": { "description": "The configurable parts of a role invitation", "additionalProperties": false, "properties": { "state": { "type": "string", "description": "A reference to this role", "enum": [ "queued", "accepted", "sent", "declined" ] } } }, "RoleInvitationPost": { "type": "object", "required": [ "user_email", "role" ], "$ref": "#/components/schemas/RoleInvitationInitializer" }, "RoleInvitationInitializer": { "description": "The current state of a role invitation", "additionalProperties": false, "properties": { "user_email": { "description": "Email of the user", "$ref": "#/components/schemas/Email" }, "role": { "type": "string", "description": "A reference to this role", "pattern": "^/v2/accounts/[a-z0-9]+/roles/[a-z0-9]+$" } } }, "RoleInvitationState": { "description": "The current state of a role invitation", "additionalProperties": false, "properties": { "created": { "$ref": "#/components/schemas/Timestamp" }, "sent": { "$ref": "#/components/schemas/Timestamp" }, "accepted": { "$ref": "#/components/schemas/Timestamp" }, "granted_by": { "type": "string", "description": "The user that sent the invitation", "pattern": "^/v2/users/[a-z0-9]+$" } } }, "RoleInvitationIdentity": { "description": "Identifier for a role invitation", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to this role", "pattern": "^/v2/accounts/[a-z0-9]+/invitations/[a-z0-9]+$" } } }, "RoleState": { "description": "The current state of a role", "additionalProperties": false, "properties": { "created": { "$ref": "#/components/schemas/Timestamp" }, "updated": { "$ref": "#/components/schemas/Timestamp" } } }, "SearchResult": { "description": "Results of a search task", "properties": { "matches": { "type": "array", "items": { "description": "A matched object", "properties": { "account": { "description": "An account object that contains a href and all account attributes that were searched", "$ref": "#/components/schemas/Account" }, "subject": { "type": "object", "description": "A matched object containing at a minimum an \"href\" attribute and any attributes that were searched" } } } } } }, "SshHostLog": { "type": "object", "required": [ "from", "group", "records", "to" ], "properties": { "from": { "$ref": "#/components/schemas/Timestamp" }, "to": { "$ref": "#/components/schemas/Timestamp" }, "group": { "type": "object", "required": [ "fields", "result" ], "properties": { "fields": { "type": "array", "description": "A list of attribute names specified by the 'groupselect' parameter in the request.", "items": { "type": "string" } }, "result": { "type": "array", "description": "A list with each item containing a list of attribute values for the fields included the 'fields' attribute.", "items": { "type": "object" } } } }, "records": { "type": "object", "required": [ "count", "fields", "result", "start" ], "properties": { "count": { "type": "number", "description": "Number of items included in the result." }, "fields": { "type": "array", "items": { "type": "string" }, "description": "A sequence of attribute names specified by the `select` parameter\nin the request.\n" }, "next": { "type": "number", "description": "The starting record number representing the first item not already\nincluded in the 'result'. This is the value that must be specified\nas the 'start' value to fetch consecutive result records. This\nvalue along with the 'start' value enables server side pagination\namongst the result records.\n" }, "result": { "type": "array", "description": "An array with each item consisting of an a array of attribute values\nfor the attribute names included the 'fields' attribute.\n", "items": { "type": "object" } }, "start": { "type": "number", "description": "The starting record number representing the first item included\nin the 'result'. This will mirror the 'start' value specified\nin the request. This value along with the 'next' value enables\nserver side pagination amongst the result records. The first\nrecord starts at 1.\n" } } } } }, "Selector": { "type": "object", "additionalProperties": false, "properties": { "references": { "type": "array", "items": { "$ref": "#/components/schemas/ApplicationHref" } }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/Label" } } } }, "Stack": { "type": "object", "properties": { "href": { "type": "string", "description": "A reference to a stack object." }, "environment": { "type": "string", "description": "A reference to the environment a stack belongs to.\n" }, "name": { "type": "string", "description": "An arbitrary name for a stack. This must be unique within the environment\nit belongs to.\n" }, "type": { "type": "string", "description": "A type that determines the fundamental architecture and contents of a\nstack.\n" }, "state": { "type": "string", "description": "State of a stack.\n", "enum": [ "pending", "synchronizing", "synchronized", "destroying", "destroyed", "sync-failed", "destroy-failed" ] }, "variables": { "type": "object", "description": "Variables specifying the configurable elements of a stack within its type.\n" }, "created": { "type": "string", "format": "date-time" }, "updated": { "type": "string", "format": "date-time" } } }, "Substitute": { "type": "object", "required": [ "contains", "replace" ], "properties": { "contains": { "type": "string", "description": "Case sensitive text in URL or query.", "minLength": 1, "maxLength": 255 }, "replace": { "type": "string", "description": "Text that will replace the case sensitive input provided by user.", "minLength": 1, "maxLength": 255 } } }, "Substitutes": { "type": "array", "description": "Array of substitutes", "items": { "$ref": "#/components/schemas/Substitute", "minItems": 1 } }, "SwapSshHostsViaResult": { "description": "Results of a search task", "properties": { "matches": { "type": "array", "items": { "description": "A matched object", "properties": { "account": { "description": "An account object that contains a href and all account attributes that were searched", "$ref": "#/components/schemas/Account" }, "subject": { "type": "object", "description": "A matched object containing at a minimum an \"href\" attribute and any attributes that were searched" } } } } } }, "TaskApproveSshHost": { "description": "Approves the given SSH host target.\n", "type": "object", "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "approve-ssh-host" ] }, "target": { "description": "A reference to an SSH host to approved.\n", "anyOf": [ { "type": "string", "description": "An SSH host reference", "pattern": "^/v2/ssh-hosts/[a-z0-9]+$" } ] }, "parameters": { "type": "object" } }, "additionalProperties": false }, "TaskBuildImage": { "description": "Build an image using a specified builder.\n", "additionalProperties": false, "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "build-image" ] }, "target": { "type": "string", "description": "A reference to a builder for building a image.", "pattern": "^/v2/builders/[a-z0-9]+$" }, "parameters": { "properties": { "ref": { "type": "string", "description": "A repository branch name or ref (refs/heads/name), tag name or ref\n(i.e refs/tags/name), or commit id\n" }, "image_tags": { "type": "array", "description": "Additional tags to attach to the built image. Tags specified here will\nbe in addition to any tags configured on the builder and any tags\nassociated with the commit being built.\n", "items": { "type": "string", "maxLength": 128 } } }, "additionalProperties": false } } }, "TaskCancelBuild": { "description": "Cancels an in-progress build.\n", "additionalProperties": false, "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "cancel-build" ] }, "target": { "type": "string", "description": "A reference to the task executing the build to be canceled.", "pattern": "^/v2/tasks/[a-z0-9]+$" } } }, "TaskCancelDeployment": { "description": "Cancel a pending deployment for a specified cluster.\n", "additionalProperties": false, "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "cancel-deployment" ] }, "target": { "type": "string", "description": "A reference to a cluster for which a deployment is to be canceled.", "pattern": "^/v2/clusters/[a-z0-9]+$" } } }, "TaskConnectRepository": { "description": "Initiates the authentication process between a source repository and the Webscale account.\nThe behavior of this endpoint depends on the authentication method provided:\n\n* **Token-based Authentication:** Providing a valid access token results in an immediate,\n successful connection.\n* **GitHub App Authentication:** The response will include an `authorization_link`. The\n user must navigate to this URL to grant permissions and complete the installation\n handshake. The repository connection remains \"pending\" until this external\n authorization flow is finalized.\n", "additionalProperties": false, "required": [ "type", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "connect-repository" ] }, "parameters": { "discriminator": { "propertyName": "auth_method" }, "anyOf": [ { "$ref": "#/components/schemas/TaskConnectRepositoryBitBucketAccessToken" }, { "$ref": "#/components/schemas/TaskConnectRepositoryGitHubApp" }, { "$ref": "#/components/schemas/TaskConnectRepositoryGitLabAccessToken" }, { "$ref": "#/components/schemas/TaskConnectRepositoryOauth" } ] } } }, "TaskConnectRepositoryBitBucketAccessToken": { "type": "object", "description": "Parameters to connect to Bitbucket Cloud with an access token.", "required": [ "auth_method", "repository", "secret" ], "properties": { "auth_method": { "type": "string", "description": "The authentication method to use when connecting the repository.", "enum": [ "bitbucket-access-token" ] }, "repository": { "type": "string", "description": "A web url of a repository" }, "secret": { "$ref": "#/components/schemas/SecretHref" } }, "additionalProperties": false }, "TaskConnectRepositoryGitHubApp": { "type": "object", "description": "Parameters to connect the repository via GitHub app", "required": [ "auth_method" ], "properties": { "auth_method": { "type": "string", "description": "The authentication method to use when connecting the repository.", "enum": [ "git-hub-app" ] } }, "additionalProperties": false }, "TaskConnectRepositoryGitLabAccessToken": { "type": "object", "description": "Parameters to connect to GitLab with an access token.", "required": [ "auth_method", "repository", "secret" ], "properties": { "auth_method": { "type": "string", "description": "The authentication method to use when connecting the repository.", "enum": [ "gitlab-access-token" ] }, "repository": { "type": "string", "description": "A web url of a gitlab repository. Must include the project id.", "example": "https://gitlab.example.com/group/name/projects/1234567" }, "secret": { "$ref": "#/components/schemas/SecretHref" } }, "additionalProperties": false }, "TaskConnectRepositoryOauth": { "type": "object", "description": "Parameters to connect the repository via OAuth", "required": [ "auth_method", "repository" ], "properties": { "auth_method": { "type": "string", "description": "The authentication method to use when connecting the repository.", "enum": [ "oauth" ] }, "repository": { "type": "string", "description": "A web url of a repository" } }, "additionalProperties": false }, "TaskConfigureVarnish": { "description": "Configure a data plane for Varnish application proxies.\n", "additionalProperties": false, "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "configure-varnish" ] }, "target": { "type": "string", "description": "A reference to a data plane that will be configured.", "pattern": "^/v2/data-planes/[a-z0-9]+$" } } }, "TaskCreateClusterServiceUser": { "description": "Creates a cluster service user in the account specified if one does not already exist.\n", "additionalProperties": false, "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "create-cluster-service-user" ] }, "target": { "type": "string", "description": "A reference to the account where the service user should exist.", "pattern": "^/v2/accounts/[a-z0-9]+$" } } }, "TaskCreateDeployment": { "description": "Create a new deployment for a specified cluster, optionally updating the\ncluster before deploying.\n", "additionalProperties": false, "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "create-deployment" ] }, "target": { "type": "string", "description": "A reference to a cluster for which a deployment is created.", "pattern": "^/v2/clusters/[a-z0-9]+$" }, "parameters": { "description": "Optional parameters", "properties": { "patch": { "description": "A patch to be applied to the target cluster before creating a\ndeployment.\n", "$ref": "#/components/schemas/ClusterPatch" }, "hooks": { "description": "A set of hook commands to run during a deployment.\n", "type": "array", "items": { "properties": { "id": { "type": "string", "enum": [ "started", "verified" ] }, "command": { "type": "string" } } } }, "enter_maintenance": { "description": "When true, applications that use this cluster will be placed in\nmaintenance mode during a deployment.\n", "type": "boolean", "default": false }, "pause_in_verify": { "description": "When true, the deployment will pause after automated verification and\nremain in a verifying state until released with a resume-deployment\ntask or canceled with cancel-deployment task.\n", "type": "boolean", "default": false } }, "additionalProperties": false } } }, "TaskEnterMaintenance": { "description": "Starts application maintenance", "type": "object", "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "enter_maintenance" ] }, "target": { "description": "Reference to the application for which maintenance is to be started", "anyOf": [ { "type": "string", "description": "An application href", "pattern": "^/v2/applications/[a-z0-9]+$" } ] }, "parameters": { "type": "object", "description": "Optional parameters", "properties": { "maximum_duration": { "type": "integer" } }, "additionalProperties": false } }, "additionalProperties": false }, "TaskExitMaintenance": { "description": "Exits application from maintenance", "type": "object", "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "exit_maintenance" ] }, "target": { "description": "Reference to the application for which maintenance is to be stopped", "anyOf": [ { "type": "string", "description": "A resource reference", "pattern": "^/v2/applications/[a-z0-9]+$" } ] }, "parameters": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, "TaskGenerateOriginCertificate": { "description": "Generate a certificate issued by the certificate authority belonging to the\ncurrent account. An origin certificate is trusted by infrastructure created\nwithin the same account that issued it.\n", "type": "object", "required": [ "type", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "generate-origin-certificate" ] }, "target": { "description": "Optional reference to an application from which hostnames can be derived.\n", "$ref": "#/components/schemas/ApplicationHref" }, "parameters": { "type": "object", "description": "Required parameters", "required": [ "key" ], "properties": { "key": { "description": "A PEM-encoded RSA key.", "type": "string" }, "hostnames": { "description": "A set of hostnames to be included in a resulting certificate as\n`DNS:`-prefixed subject alternative names. This can be omitted if\n`target` is provided.\n", "type": "array", "items": { "type": "string", "pattern": "^([a-zA-Z0-9_][a-zA-Z0-9\\-_]{0,62}\\.){1,}[a-zA-Z0-9_][a-zA-Z0-9\\-_]{1,62}$" }, "minItems": 1, "uniqueItems": true }, "expiry": { "$ref": "#/components/schemas/Timestamp", "description": "The time at which the certificate expires" } }, "additionalProperties": false } }, "additionalProperties": false }, "TaskGetRequestAddress": { "description": "Gets the public IP address of the requesting user agent.", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "get-request-address" ] } }, "additionalProperties": false }, "TaskInvalidateCache": { "description": "Invalidate cached responses for given application. Entries are invalidated in\nall caches used by the application as specified by the parameters. If neither\nURLs nor tags are given then the entire cache is invalidated. Specifying both\ntags and URLs is not expected and URLs are ignored when tags are given. An\nexisting invalidation task may be re-used for the current invalidation to\navoid an excess of tasks for frequent invalidations. Logs in a returned task\nwill record the activity of each distinct invalidation.\n", "type": "object", "required": [ "type", "target", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "invalidate-cache" ] }, "target": { "description": "A reference to an application for which the cache is to bw invalidated.\n", "anyOf": [ { "type": "string", "description": "An application reference" } ] }, "parameters": { "type": "object", "properties": { "urls": { "type": "array", "description": "A non-empty collection of URL patterns to be invalidated. A URL\npattern is of the general form:\n\n ```\n [scheme://][hostname][path[query]]\n ```\n\nThe scheme may be one of `http`, `https`, or `*`. The hostname, path,\nand query may contain wildcards anywhere. A path pattern must begin\nwith `/`. A query pattern must begin with `?`.\n\nA minimal pattern `*` (all hostnames) will invalidate all cache\nentries.\n\nIf a query pattern is explicitly specified (e.g. `?*` to match all\nqueries), only entries with a query will be invalidated. Entries\nwithout a query are not invalidated unless affected by scope\nexpansion.\n\nOnly US-ASCII characters may be included in an invalidation URL\nwithout being percent-encoded. Unsafe characters as defined by\n[RFC 1738](https://datatracker.ietf.org/doc/html/rfc1738) must also be\npercent-encoded.\n\n### Scope expansion\n\nNot every cache to be invalidated supports fine-grained addressability\nand so the scope of an invalidation may be larger than what is\nspecified, but the specified scope will be invalidated in all caches.\n\n- **Site Cache:** Supports invalidating only entries that match the\n pattern exactly.\n- **VelocityEDGE:** Supports invalidating only entries that match the\n pattern exactly\n- **CloudFront:** Supports invalidations only by path and\n query, and then only with a single wildcard at the end. For example,\n an invalidation pattern `https://www.example.com/images/*/xyz.jpg*`\n will be presented to CloudFront as `/images/*`, invaliding all\n images across all hostnames.\n", "items": { "type": "string", "pattern": "^[!$%&'*+,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz]*$" }, "minItems": 1, "minLength": 1, "maxLength": 1000 }, "tags": { "description": "A non-empty collection of tags within site cache that are to be\ninvalidated.\n", "type": "array", "items": { "$ref": "#/components/schemas/TagName" }, "minItems": 1 } }, "additionalProperties": false } }, "additionalProperties": false }, "TaskOauth2Authorize": { "description": "Complete an Oauth2 authorization", "type": "object", "required": [ "type", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "oauth2-authorize" ] }, "parameters": { "type": "object", "description": "Required parameters", "required": [ "code", "realm_id" ], "properties": { "code": { "type": "string" }, "realm_id": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "TaskGetSshPublicKeys": { "description": "Returns SSH public keys for the user identified by the given SSH username", "type": "object", "required": [ "type", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "get-ssh-public-keys" ] }, "parameters": { "type": "object", "description": "Required parameters", "required": [ "username" ], "properties": { "username": { "type": "string", "description": "SSH username" } }, "additionalProperties": false } }, "additionalProperties": false }, "TaskGetUserPermissions": { "description": "Gets permissions for the current authentication context.\n\nThe result is an object whose member names are HTTP method names,\ngiven in uppercase and whose values are arrays of permissions. A\npermission is an object with `permit` and `deny` members whose values\nare arrays of API specifiers. Access to an API request is granted if\na permission object exists in the array for the request method such\nthat a permit specifier covers the request path and is unmatched by\nall deny specifier in the same permission object.\n\nFor example:\n\n```\n \"result\": {\n \"GET\": [\n {\n \"permit\": [\"accounts/xyz\",\"applications/*\",\"address-sets/*\",\"clusters/*\"],\n \"deny\": [\"clusters/cabc\"]\n },\n {\n \"permit\": [\"reports/*\"],\n }\n ],\n \"POST\": [\n ...\n ],\n ...\n }\n ...\n```\n", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "get-user-permissions" ] } }, "additionalProperties": false }, "TaskPrepareForDownload": { "description": "Prepares an archived log for download. Logs that are archived are typically\nplaced on storage that prevents them from being immediately available. The\narchived logs API can be used to download them, but will fail when they are\nnot ready. When an instance of this task completes execution, the referenced\nlog will be available for download.\n", "additionalProperties": false, "required": [ "type", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "prepare-for-download" ] }, "parameters": { "additionalProperties": false, "description": "Required parameters", "required": [ "reference", "from", "to" ], "properties": { "reference": { "type": "string", "description": "The archived-logs reference.", "pattern": "^/v2/archived-logs/.+$" }, "from": { "description": "The start of when to prepare files for download. Must be An hourly boundary timestamp.", "$ref": "#/components/schemas/Timestamp" }, "to": { "description": "The end of when to prepare files for download. Must be on an hourly boundary.", "$ref": "#/components/schemas/Timestamp" }, "retention": { "description": "The requested number of days the retrieved logs will remain available\nfor download after this task completes. Though the system will attempt\nto satisfy the requested time, depending the volume of available logs\nmay affect the ability of the system to fulfill the request.\n", "type": "integer", "maximum": 30, "minimum": 3 }, "restore_type": { "type": "string", "description": "The urgency of the request.\n\n| Value | Typical time until ready |\n| ----- | ------------------------ |\n| bulk | Same day |\n| standard | Several hours |\n| expedited | Less than one hour |\n", "enum": [ "bulk", "standard", "expedited" ] } } } } }, "TaskPrepareSshGatewayConnection": { "description": "Given an SSH username and SSH host, returns information necessary for\nthe SSH Gateway to establish a connection.\n", "type": "object", "required": [ "type", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "prepare-ssh-gateway-connection" ] }, "parameters": { "type": "object", "description": "Required parameters", "required": [ "username", "host" ], "properties": { "username": { "type": "string", "description": "SSH username" }, "host": { "type": "string", "description": "SSH host" } }, "additionalProperties": false } }, "additionalProperties": false }, "TaskRespondToMarketingBanner": { "description": "Applies an account owner's response to a marketing banner.\n", "additionalProperties": false, "required": [ "type", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "respond-to-marketing-banner" ] }, "parameters": { "type": "object", "additionalProperties": false, "required": [ "name", "selection" ], "properties": { "name": { "type": "string", "description": "The name of the marketing banner\n" }, "selection": { "type": "string", "description": "The selection from the marketing banner or 'dismiss' if the user\ndismissed the banner.\n" } } } } }, "TaskResumeDeployment": { "description": "Resume a paused deployment for a specified cluster.\n", "additionalProperties": false, "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "resume-deployment" ] }, "target": { "type": "string", "description": "A reference to a cluster for which a deployment is to be resumed.", "pattern": "^/v2/clusters/[a-z0-9]+$" } } }, "TaskRollback": { "description": "Start a rollback to a deployment that is in the `running`, `keeping`,\n`retaining`, or `failed` state. A deployment in the `keeping` state will be\nmade active again, deactivating the currently active deployment. Other states\nwill result in a new deployment that copies the target deployment.\n", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "rollback" ] }, "target": { "description": "Reference to a deployment to be made active", "$ref": "#/components/schemas/ClusterHref" }, "parameters": { "additionalProperties": false, "description": "Required parameters", "required": [ "href" ], "properties": { "href": { "$ref": "#/components/schemas/ClusterHref", "description": "The endpoint for the cluster resource." } } } }, "additionalProperties": false }, "TaskRunAction": { "description": "Runs the target application", "type": "object", "required": [ "type", "target", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "run-action" ] }, "target": { "description": "A reference to an application for which the action is run", "anyOf": [ { "type": "string", "description": "A resource reference", "pattern": "^/v2/applications/[a-z0-9]+$" } ] }, "parameters": { "type": "object", "required": [ "id" ], "description": "Required parameters", "properties": { "id": { "type": "string", "description": "The identifier of the action to run" } }, "additionalProperties": false } }, "additionalProperties": false }, "TaskSearch": { "description": "Parameter object for the search task", "additionalProperties": false, "required": [ "type", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "search" ] }, "parameters": { "additionalProperties": false, "description": "Required parameters", "required": [ "pattern" ], "properties": { "pattern": { "type": "string", "description": "A wildcard pattern to search for" }, "limit": { "type": "integer", "description": "The maximum number of results to be returned. If omitted, then all results are returned" } } } } }, "TaskStart": { "description": "Starts a target application", "type": "object", "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "start" ] }, "target": { "description": "A reference to the application to start", "anyOf": [ { "$ref": "#/components/schemas/ResourceReference" }, { "type": "string", "description": "A resource reference", "pattern": "^/v2/applications/[a-z0-9]+$" } ] } }, "additionalProperties": false }, "TaskStop": { "description": "Stops a target application", "type": "object", "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "stop" ] }, "target": { "description": "A reference to the application to stop", "anyOf": [ { "$ref": "#/components/schemas/ResourceReference" }, { "type": "string", "description": "A resource reference", "pattern": "^/v2/applications/[a-z0-9]+$" } ] } }, "additionalProperties": false }, "TaskSubstituteTemplate": { "description": "Process a template file, replacing value template references with processed content.\n", "additionalProperties": false, "required": [ "type", "target" ], "properties": { "type": { "type": "string", "enum": [ "substitute-template" ] }, "target": { "type": "string", "description": "A reference to a file to process.", "pattern": "^/v2/files/[a-z0-9]+(?:/versions/[0-9]+)?(?:/contents(?:/.*)?)?$" } } }, "TaskSwapSshHostsVia": { "description": "Input for SSH host operations.", "additionalProperties": false, "required": [ "type", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "swap-ssh-hosts-via" ] }, "parameters": { "type": "object", "description": "Required parameters", "required": [ "ssh_hosts", "via" ], "properties": { "ssh_hosts": { "type": "array", "description": "A list of SSH host hrefs where the 'via' attribute needs to be updated.", "items": { "type": "string", "description": "The href of an SSH host." } }, "via": { "type": "string", "description": "The href representing the new via host being applied to the SSH hosts." } }, "additionalProperties": false } } }, "TaskValidateTLS": { "description": "Validates TLS for target application", "type": "object", "required": [ "type", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "validate_tls" ] }, "parameters": { "type": "object", "description": "Required parameters", "properties": { "tls_configuration": { "type": "object" } }, "additionalProperties": false } }, "additionalProperties": false }, "TaskUpdateRepository": { "description": "Update an existing repository resource\n", "additionalProperties": false, "required": [ "type", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "update-repository" ] }, "parameters": { "type": "object", "properties": { "resource": { "type": "string", "description": "The href of the repository resource to update.", "pattern": "^/v2/resources/[a-z0-9]+$" }, "secret": { "$ref": "#/components/schemas/SecretHref" } } } } }, "TaskUploadSshLogs": { "description": "Uploads logs for the given SSH host.", "type": "object", "required": [ "type", "target", "parameters" ], "properties": { "type": { "type": "string", "enum": [ "upload-ssh-logs" ] }, "target": { "type": "string", "description": "SSH host reference" }, "parameters": { "type": "object", "description": "Required parameters", "required": [ "logs" ], "properties": { "logs": { "type": "array", "items": { "$ref": "#/components/schemas/SshLogPost" }, "description": "Log objects to upload." } }, "additionalProperties": false } }, "additionalProperties": false }, "Roles": { "type": "array", "items": { "type": "string", "description": "A role name", "minLength": 1, "pattern": "^[a-z-]+$" } }, "ScalingCondition": { "type": "object", "required": [ "series_name", "operator", "value", "duration", "display_unit" ], "properties": { "series_name": { "$ref": "#/components/schemas/ScalingSeriesName", "description": "Parameter to monitor to determine scaling in or out of servers." }, "operator": { "$ref": "#/components/schemas/ScalingOperator", "description": "Operator to determine scaling condition." }, "value": { "type": "number", "description": "Threshold value to trigger scaling in or out of servers." }, "duration": { "$ref": "#/components/schemas/Duration", "description": "Duration for which the scaling condition has to be true for the scaling to kick in." }, "display_unit": { "$ref": "#/components/schemas/DurationDisplayUnit" } } }, "ScalingOperator": { "type": "string", "description": "Operator to determine scaling condition.", "enum": [ "has_been_greater_than", "will_be_greater_than", "has_been_less_than", "will_be_less_than" ] }, "ScalingSeriesName": { "type": "string", "description": "Name identifying the scaling condition type.", "enum": [ "cpu_percent", "iowait_percent", "kilobytes_per_second", "loadavg_norm", "memory_used_percent", "requests_per_second" ] }, "Script": { "type": "string", "description": "Url associated with a third-party script", "maxLength": 760, "pattern": "^[a-zA-Z0-9._(\\|\")-~!$&'()*+,;=:@/%\" \"]*$" }, "Secret": { "type": "object", "required": [ "description", "href", "mime_type" ], "properties": { "description": { "$ref": "#/components/schemas/SecretDescription" }, "href": { "$ref": "#/components/schemas/SecretHref" }, "mime_type": { "$ref": "#/components/schemas/SecretMimeType" }, "personal": { "type": "boolean", "description": "If true, the secret will be associated with the user making the request" } }, "additionalProperties": false }, "SecretArray": { "type": "array", "items": { "$ref": "#/components/schemas/Secret" } }, "SecretContent": { "type": "string", "description": "The contents of the secret." }, "SecretDescription": { "type": "string", "description": "Description of the resource." }, "SecretHref": { "type": "string", "pattern": "^/v2/secrets/[a-z0-9]+$", "description": "The endpoint for the secret resource." }, "SecretMimeType": { "type": "string", "description": "The mime_type of the secret format.", "enum": [ "application/x-hotp-secret", "application/x-pem-file", "application/json", "application/openssh-private-key" ] }, "SecretPost": { "required": [ "content", "mime_type" ], "properties": { "content": { "$ref": "#/components/schemas/SecretContent" }, "description": { "$ref": "#/components/schemas/SecretDescription" }, "mime_type": { "$ref": "#/components/schemas/SecretMimeType" }, "personal": { "type": "boolean", "description": "If true, the secret will be associated with the user making the request" } }, "additionalProperties": false }, "SectionedReportHref": { "type": "string", "pattern": "^/v2/reports/[A-Za-z0-9-]+/sections/[A-Za-z0-9-:]+$", "description": "The endpoint resource identifier for a sectioned report" }, "SecurityGroupHref": { "type": "string", "pattern": "^/v2/(providers|services)/[a-z0-9]+((/regions/[a-zA-Z0-9-_.]+)|(/resource-groups/[a-zA-Z0-9-_./]+))?/security-groups/[a-zA-Z0-9-_]+$", "description": "The endpoint resource identifier for the security group, must be a URL encoded string." }, "Server": { "type": "object", "required": [ "public_address" ], "properties": { "public_address": { "$ref": "#/components/schemas/AddressWithPort", "description": "Public address of the server." } } }, "ServerGroupHref": { "type": "string", "pattern": "^/v2/providers/[a-z0-9]+/datacenters/[a-zA-Z0-9]+/server-groups/[a-zA-Z0-9-_]+$", "description": "The endpoint resource identifier for the server group, must be a URL encoded string. Only valid for CenturyLink provider." }, "ServerMeasurement": { "type": "object", "description": "Measurements of resource usage of a server for a particular interval", "required": [ "time", "duration" ], "properties": { "time": { "$ref": "#/components/schemas/Timestamp", "description": "Time at the end of the interval for which the measurements are made. It is expected that systems will synchronize with an accurate external time source to ensure that the correct measurements can be used to make scaling decisions" }, "cpu": { "type": "number", "description": "The total number of CPU cores available on the resource.", "minimum": 1 }, "cpu_percent": { "type": "number", "description": "Percent used of all available CPU time. This is expected to be provided by all servers", "minimum": 0 }, "loadavg_norm": { "type": "array", "description": "For UNIX-based servers, three load averages over 1-, 5-, and 15-minute time periods. For Windows-based servers, three average processor queue length values over 1-, 5-, and 15-minute time periods. All values are divided by the number of CPUs on the server so that scaling parameters based on load average do not have to change if the size of the machine changes.", "items": { "type": "number" }, "minItems": 1, "maxItems": 3 }, "iowait_percent": { "type": "number", "description": "Percentage of available CPU time spent by ready tasks waiting for I/O operations to complete. This is expected to be provided by UNIX-based servers.", "minimum": 0, "maximum": 100 }, "memory": { "type": "number", "description": "Total physical RAM memory available allocated to the resource, measured in GiB.", "minimum": 0 }, "memory_used_percent": { "type": "number", "description": "Average percentage of memory used. This is expected to be provided by all servers.", "minimum": 0, "maximum": 100 }, "duration": { "type": "integer", "description": "The size of the interval ending at 'time' to which the metrics apply. Providers of metrics are expected to periodically supply metrics in adjacent intervals with identical duration, preferably every 20 seconds." }, "disks": { "description": "Measurement of disks that are owned by a server.\n", "type": "array", "items": { "$ref": "#/components/schemas/ServerMeasurementDisk" } }, "storage": { "type": "number", "description": "Total capacity of the root block hardware storage device, measured in GB.", "minimum": 0 } }, "additionalProperties": false }, "ServerMeasurementDisk": { "description": "A measurement of a disk or partition.", "type": "object", "required": [ "name" ], "properties": { "name": { "description": "A mountpoint or drive letter.", "type": "string", "minLength": 1 }, "free": { "description": "An amount of free space, in bytes.", "type": "integer", "minimum": 0 }, "total": { "description": "The size of a disk, in bytes.", "type": "integer", "minimum": 0 }, "free_inodes": { "description": "The number of free inodes on a disk.", "type": "integer", "minimum": 0 }, "total_inodes": { "description": "The number of inodes on a disk.", "type": "integer", "minimum": 0 } } }, "ServerMeasurements": { "type": "array", "description": "Measurements of resource usage of a server", "items": { "$ref": "#/components/schemas/ServerMeasurement" } }, "ServerNetwork": { "type": "object", "required": [ "name", "external_ipv4_address", "ipv4_address" ], "properties": { "name": { "type": "string", "description": "The name of the network." }, "external_ipv4_address": { "type": "string", "format": "ipv4", "description": "The external ipv4 address of the cluster server." }, "ipv4_address": { "type": "string", "format": "ipv4", "description": "The ipv4 address of the cluster server." } } }, "ServerPatch": { "type": "object", "description": "Specifies attributes of a server to update", "properties": { "state": { "type": "string", "description": "The state to update the server to. Only servers that are currently in the 'active' state can be updated. Updating a server to the 'leaving' state causes it to leave the cluster as though it were being scaled in. Updating the server to the 'failed' state causes a replacement server to be created for it and the server to be destroyed once a replacement becomes active. If updating a server to 'leaving' would make the cluster smaller than its 'minimum_size' attribute, the operation will fail. Once a 'failed' server is successfully replaced, the server will be destroyed or detached based on the clusters 'failed_server_disposition' attribute.", "enum": [ "leaving", "failed" ] }, "state_reason": { "type": "string", "description": "A message explaining the reason for the state change." } } }, "ServicesHref": { "type": "string", "pattern": "^/v2/services/[a-zA-Z0-9\\-]+(/[a-zA-Z0-9\\-]+/[a-zA-Z0-9\\-\\.]+)+$", "description": "The endpoint for a resource accessible via services available for this account." }, "ServiceUser": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/ServiceUserIdentity" }, { "$ref": "#/components/schemas/ServiceUserConfiguration" } ] }, "ServiceUserIdentity": { "properties": { "href": { "type": "string", "description": "A reference to this service user" }, "email": { "description": "Email of the user", "$ref": "#/components/schemas/Email" }, "account": { "description": "A reference to the account to which the service user belongs to.", "$ref": "#/components/schemas/AccountHref" }, "access_keys": { "type": "array", "description": "An array of access keys", "items": { "$ref": "#/components/schemas/AccessKey" } } }, "additionalProperties": false }, "ServiceUserConfiguration": { "properties": { "name": { "type": "string", "description": "Name of the user", "maxLength": 32 }, "description": { "type": "string", "description": "A description of the service user", "maxLength": 255 } }, "additionalProperties": false }, "SettingName": { "type": "string", "description": "The name of a configuration setting.", "enum": [ "blacklist", "whitelist" ] }, "Settings": { "type": "object", "properties": { "whitelist": { "$ref": "#/components/schemas/Whitelist" }, "blacklist": { "$ref": "#/components/schemas/Blacklist" } } }, "SignupPost": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/SignupWriteOnly" } ] }, "SignupsResponse": { "type": "object", "required": [ "login_url", "credentials" ], "properties": { "login_url": { "type": "string", "format": "uri", "description": "A URL where the newly signed up user can login." }, "credentials": { "type": "object", "required": [ "token" ], "properties": { "token": { "type": "string", "description": "Authorization api token for the newly created user." } } }, "task": { "type": "object", "description": "A task may be created to handle long running signup related work.", "$ref": "#/components/schemas/Task" } } }, "SignupWriteOnly": { "type": "object", "required": [ "account_name", "email", "password" ], "properties": { "account_name": { "type": "string", "description": "The name of the new account.", "minLength": 3, "maxLength": 255 }, "full_name": { "type": "string", "description": "The user's full name.", "minLength": 1, "maxLength": 255 }, "phone": { "type": "string", "description": "The user's phone number.", "minLength": 1, "maxLength": 15 }, "email": { "type": "string", "description": "The user's email address.", "pattern": "^.+@.+\\..+$", "minLength": 1, "maxLength": 255 }, "password": { "type": "string", "description": "The password for the new account.", "pattern": "(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])", "minLength": 8, "maxLength": 255 }, "hostname": { "type": "string", "description": "The hostname of the application to create.", "format": "uri" }, "plan": { "type": "string", "description": "The plan for the application." } } }, "SiteCache": { "type": "object", "description": "A configuration for Dynamic Site Cache", "required": [ "enabled", "rules" ], "properties": { "enabled": { "type": "boolean", "description": "When false, site cache will be turned off" }, "rules": { "type": "array", "description": "A sequence of rules for caching. Each enabled rule is evaluated in sequence, and the first whose conditions match a request will apply to that request. If none match, then no caching will be done", "items": { "$ref": "#/components/schemas/SiteCacheRule" }, "minItems": 1, "uniqueItems": true } }, "additionalProperties": false }, "SiteCacheCondition": { "description": "A condition used to match requests for Dynamic Site Cache", "discriminator": { "propertyName": "type" }, "anyOf": [ { "$ref": "#/components/schemas/ConditionAddressInSet" }, { "$ref": "#/components/schemas/ConditionAddressIsNotThreat" }, { "$ref": "#/components/schemas/ConditionAddressIsNotWhitelisted" }, { "$ref": "#/components/schemas/ConditionAddressIsThreat" }, { "$ref": "#/components/schemas/ConditionAddressIsWhitelisted" }, { "$ref": "#/components/schemas/ConditionAddressNotInSet" }, { "$ref": "#/components/schemas/ConditionAuthCookieIsNotSet" }, { "$ref": "#/components/schemas/ConditionAuthCookieIsSet" }, { "$ref": "#/components/schemas/ConditionCookieIsNotSet" }, { "$ref": "#/components/schemas/ConditionCookieIsSet" }, { "$ref": "#/components/schemas/ConditionCookieValueDoesNotMatch" }, { "$ref": "#/components/schemas/ConditionCookieValueMatches" }, { "$ref": "#/components/schemas/ConditionCountryIs" }, { "$ref": "#/components/schemas/ConditionCountryIsNot" }, { "$ref": "#/components/schemas/ConditionRandom" }, { "$ref": "#/components/schemas/ConditionReferrerDoesNotMatch" }, { "$ref": "#/components/schemas/ConditionReferrerIsDefined" }, { "$ref": "#/components/schemas/ConditionReferrerIsNotDefined" }, { "$ref": "#/components/schemas/ConditionReferrerMatches" }, { "$ref": "#/components/schemas/ConditionUrlDoesNotMatch" }, { "$ref": "#/components/schemas/ConditionUrlMatches" }, { "$ref": "#/components/schemas/ConditionUserAgentDoesNotMatch" }, { "$ref": "#/components/schemas/ConditionUserAgentMatches" }, { "$ref": "#/components/schemas/ConditionHeaderValueMatches" }, { "$ref": "#/components/schemas/ConditionHeaderValueDoesNotMatch" }, { "$ref": "#/components/schemas/ConditionHeadersMatch" }, { "$ref": "#/components/schemas/ConditionHeadersNotMatch" }, { "$ref": "#/components/schemas/ConditionMethodIs" }, { "$ref": "#/components/schemas/ConditionMethodIsNot" }, { "$ref": "#/components/schemas/ConditionIsCrawler" } ] }, "SiteCacheRule": { "type": "object", "description": "A rule for caching requests. All of the conditions for the rule must evaluate to true in order for the rule to be used.", "required": [ "conditions", "enabled", "ttl_sec" ], "properties": { "conditions": { "type": "array", "description": "An array of conditions. When empty, all requests match", "items": { "$ref": "#/components/schemas/SiteCacheCondition" } }, "enabled": { "type": "boolean", "description": "When false, this rule will not be used" }, "ttl_sec": { "type": "integer", "description": "The amount of time in seconds that a cached item is retained after it is initially stored", "minimum": 10 }, "key": { "nullable": true, "$ref": "#/components/schemas/CacheKeyConfiguration" }, "tags": { "description": "A CacheTag", "$ref": "#/components/schemas/CacheTagConfiguration" } }, "additionalProperties": false }, "SshLogPost": { "type": "object", "required": [ "created", "session_id", "session_name", "subject", "content", "user", "hostname", "username" ], "properties": { "created": { "type": "string", "format": "date-time", "description": "The time when the log was recorded." }, "subject": { "type": "string", "description": "A reference to the SSH host where the connection was made." }, "session_id": { "type": "string", "description": "The session ID for the SSH connection." }, "session_name": { "type": "string", "description": "The name of the session." }, "content": { "type": "string", "description": "Recorded content of the terminal session." }, "user": { "type": "string", "description": "A reference to the user who made the connection." }, "summary": { "type": "string", "description": "The command that was executed to generate the log." }, "continued": { "type": "boolean", "description": "Indicates whether the log is a continuation of a previous log." }, "hostname": { "type": "string", "description": "The name of the SSH host where the connection was made." }, "username": { "type": "string", "description": "The username of the user who made the connection." } } }, "SshHost": { "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/SshHostIdentity" }, { "$ref": "#/components/schemas/SshHostInitializer" }, { "$ref": "#/components/schemas/SshHostConfiguration" }, { "$ref": "#/components/schemas/SshHostState" } ] }, "SshHostAuthorizationPost": { "type": "object", "description": "SSH Host authorization request", "properties": { "passphrase": { "type": "string", "description": "The passphrase associated with the private key used to connect to the SSH Host" } } }, "SshHostConfiguration": { "description": "The configurable attributes of an SSH host.", "properties": { "name": { "type": "string", "description": "The name of the SSH host" }, "host_keys": { "type": "array", "description": "The host keys of the SSH host", "items": { "type": "string" } }, "via": { "type": "string", "description": "A reference to the SSH host that this host is accessed through", "pattern": "^/v2/ssh-hosts/[a-z0-9]+$", "nullable": true } } }, "SshHostIdentity": { "description": "Identifier for an SSH Host.", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to the SSH host", "pattern": "^/v2/ssh-hosts/[a-z0-9]+$" } } }, "SshHostInitializer": { "type": "object", "properties": { "address": { "anyOf": [ { "$ref": "#/components/schemas/Address" }, { "type": "string", "pattern": "^self$" } ] }, "resource": { "type": "string", "pattern": "^/v2/(servers|resources)/[a-z0-9]+$", "description": "A reference to the resource that is associated with the SSH host. Must already be registered within the same account." } } }, "SshHostPost_logs": { "anyOf": [ { "type": "object", "$ref": "#/components/schemas/SshLogPost" }, { "type": "array", "items": { "$ref": "#/components/schemas/SshLogPost" } } ] }, "SshHostPatch": { "$ref": "#/components/schemas/SshHostConfiguration" }, "SshHostPost": { "type": "object", "allOf": [ { "required": [ "name", "address" ] }, { "$ref": "#/components/schemas/SshHostInitializer" }, { "$ref": "#/components/schemas/SshHostConfiguration" } ] }, "SshHostPost_Logs": { "anyOf": [ { "type": "object", "$ref": "#/components/schemas/SshLogPost" }, { "type": "array", "items": { "$ref": "#/components/schemas/SshLogPost" } } ] }, "SshHostState": { "type": "object", "description": "State for an SSH Host", "additionalProperties": false, "properties": { "approved": { "type": "string", "format": "date-time", "description": "Timestamp when the SSH host was approved" }, "approved_by": { "type": "string", "description": "A reference to the user who approved the SSH Host" }, "created": { "type": "string", "format": "date-time", "description": "Time when the SSH host was created" }, "updated": { "type": "string", "format": "date-time", "description": "Time when the SSH host was last updated" }, "users": { "type": "array", "description": "The users that can access the SSH host", "items": { "type": "object", "additionalProperties": false, "properties": { "username": { "type": "string", "description": "The username that can access the SSH host" }, "public_key": { "type": "string", "description": "The public key of the user" } } } } } }, "SshPublicKey": { "type": "object", "required": [ "href", "keytext" ], "properties": { "href": { "type": "string", "description": "The href of this SSH public key." }, "keytext": { "type": "string", "description": "The text of this SSH public key." }, "name": { "type": "string", "description": "The display name for this SSH public key." }, "enabled": { "type": "boolean", "default": true, "description": "Whether this key is enabled for use during SSH authentication." } }, "additionalProperties": false }, "SshPublicKeyPatch": { "type": "object", "properties": { "keytext": { "type": "string", "description": "The text of this SSH public key." }, "name": { "type": "string", "description": "The display name for this SSH public key." }, "enabled": { "type": "boolean", "default": true, "description": "Whether this key is enabled for use during SSH authentication." } }, "additionalProperties": false }, "SshPublicKeyPost": { "type": "object", "required": [ "keytext" ], "properties": { "keytext": { "type": "string", "description": "The text of this SSH public key." }, "name": { "type": "string", "description": "The display name for this SSH public key." }, "enabled": { "type": "boolean", "default": true, "description": "Whether this key is enabled for use during SSH authentication." } }, "additionalProperties": false }, "StackPatch": { "type": "object", "properties": { "name": { "type": "string", "description": "An arbitrary name for a stack. This must be unique within the environment\nit belongs to.\n" }, "variables": { "type": "object", "description": "Variables specifying the configurable elements of a stack within its type.\n", "not": { "anyOf": [ { "required": [ "aws_account_id" ] }, { "required": [ "control_plane_cidrs" ] }, { "required": [ "service_token" ] }, { "required": [ "stack_name" ] }, { "required": [ "stack_type" ] } ] } } }, "additionalProperties": false }, "StackPost": { "type": "object", "required": [ "environment", "name", "type", "service", "variables" ], "properties": { "environment": { "type": "string", "description": "A reference to the environment a stack belongs to.\n", "pattern": "/v2/environments/[a-z0-9-]+$" }, "name": { "type": "string", "description": "An arbitrary name for a stack. This must be unique within the environment\nit belongs to.\n" }, "type": { "type": "string", "description": "A type that determines the fundamental architecture and contents of a\nstack.\n" }, "service": { "type": "string", "description": "Service used to perform provisioning.\n", "pattern": "/v2/services/[a-z0-9\\-]+$" }, "variables": { "type": "object", "description": "Variables specifying the configurable elements of a stack within its type.\n", "required": [ "region" ], "properties": { "size": { "type": "string", "enum": [ "dev", "micro", "mini", "small", "medium", "large", "xlarge" ] }, "region": { "type": "string", "enum": [ "eu-west-3", "us-east-1", "us-east-2", "us-west-1", "us-west-2" ] }, "hostnames": { "type": "array", "items": { "type": "string" } }, "default_hostname": { "type": "string" }, "stacker_variables": { "type": "object" } }, "not": { "anyOf": [ { "required": [ "aws_account_id" ] }, { "required": [ "control_plane_cidrs" ] }, { "required": [ "service_token" ] }, { "required": [ "stack_name" ] }, { "required": [ "stack_type" ] } ] } } }, "additionalProperties": false }, "StatusElement": { "description": "An element that describes some element of system status", "anyOf": [ { "$ref": "#/components/schemas/StatusIncident" }, { "$ref": "#/components/schemas/StatusTimeline" }, { "$ref": "#/components/schemas/StatusVersions" } ] }, "StatusIncident": { "type": "object", "description": "An incident, in a status context", "properties": { "type": { "type": "string", "enum": [ "incident" ] }, "element": { "description": "An incident", "$ref": "#/components/schemas/Incident" } } }, "StatusTimeline": { "description": "A sequence of status elements arranged by time", "type": "object", "properties": { "type": { "type": "string", "enum": [ "timeline" ] }, "element": { "description": "A sequence of timeline entries, in descending time order", "type": "array", "items": { "$ref": "#/components/schemas/StatusTimelineEntry" } } } }, "StatusTimelineEntry": { "type": "object", "description": "An entry in a timeline, placed at a time and containing some element", "properties": { "time": { "$ref": "#/components/schemas/Timestamp" }, "entry": { "$ref": "#/components/schemas/StatusElement" } } }, "StatusVersions": { "type": "object", "description": "Version details for components of the Webscale service.", "properties": { "type": { "type": "string", "enum": [ "versions" ] }, "element": { "description": "Version element containing version details for components within the Webscale service.", "type": "object", "properties": { "components": { "type": "array", "description": "Version details for components within the Webscale service.", "items": { "type": "object", "description": "Version details of a component within the Webscale service.", "properties": { "name": { "type": "string", "description": "The name of the Webscale service component." }, "version": { "type": "string", "description": "The version of the Webscale service component." } } } } } } } }, "Subscription": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/SubscriptionReadOnly" }, { "$ref": "#/components/schemas/SubscriptionReadWrite" } ] }, "SubscriptionReadOnly": { "type": "object", "required": [ "id", "state" ], "properties": { "id": { "type": "string", "description": "The id of the resource." }, "state": { "type": "string", "description": "The state of the subscription.", "enum": [ "active", "inactive" ] } } }, "SubscriptionReadWrite": { "type": "object", "required": [ "plan" ], "properties": { "plan": { "type": "object", "description": "The plan that is being subscribed to.", "$ref": "#/components/schemas/PlanReadWrite" } } }, "Success": { "type": "object", "required": [ "success" ], "properties": { "success": { "type": "string", "description": "success" } } }, "SuspendLimit": { "type": "integer", "description": "Maximum number of requests that can be put in the suspend queue of a load balancer before the oldest requests are failed. This attribute may only be set by system administrators", "minimum": 1 }, "Task": { "type": "object", "properties": { "href": { "type": "string", "description": "A reference to the task" }, "type": { "type": "string", "description": "The type of task" }, "target": { "type": "string", "description": "An object on which a referencing task operates" }, "parameters": { "type": "object", "description": "The parameters used as input to a task" }, "created": { "type": "string", "format": "date-time", "description": "Time that the task was created." }, "started": { "type": "string", "format": "date-time", "description": "Time that the task was started. This field will be null if the task has not started." }, "completed": { "type": "string", "format": "date-time", "description": "Time at which processing for a task completed, or null if not yet completed." }, "updated": { "type": "string", "format": "date-time", "description": "Time at which the task was last updated." }, "state": { "type": "string", "description": "The current state of the task. success and failed are final states.", "enum": [ "pending", "running", "success", "failed" ] }, "description": { "type": "string", "description": "A description of the task" }, "message": { "type": "string", "description": "This field may contain a message regarding the current state of the task or it may be null." }, "result": { "description": "The result of a task. Type is an object dependent on the task. Will not be set for tasks that do not compute results.", "anyOf": [ { "type": "object" }, { "$ref": "#/components/schemas/SearchResult" } ] } } }, "TaskPost": { "description": "Configuration for a task to be created", "discriminator": { "propertyName": "type" }, "anyOf": [ { "$ref": "#/components/schemas/TaskBuildImage" }, { "$ref": "#/components/schemas/TaskCancelBuild" }, { "$ref": "#/components/schemas/TaskGetRequestAddress" }, { "$ref": "#/components/schemas/TaskCancelDeployment" }, { "$ref": "#/components/schemas/TaskCreateDeployment" }, { "$ref": "#/components/schemas/TaskEnterMaintenance" }, { "$ref": "#/components/schemas/TaskExitMaintenance" }, { "$ref": "#/components/schemas/TaskGenerateOriginCertificate" }, { "$ref": "#/components/schemas/TaskInvalidateCache" }, { "$ref": "#/components/schemas/TaskPrepareForDownload" }, { "$ref": "#/components/schemas/TaskResumeDeployment" }, { "$ref": "#/components/schemas/TaskRunAction" } ] }, "Template": { "description": "A template contains contains markdown that can be formatted to create messages for the alert or event.", "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/TemplateConfiguration" }, { "$ref": "#/components/schemas/TemplateIdentity" } ] }, "TemplateConfiguration": { "description": "The configurable attributes of a template", "additionalProperties": false, "properties": { "type": { "type": "string", "description": "Type of the template", "enum": [ "alert", "event", "email" ] }, "name": { "type": "string", "description": "Name of the template", "minLength": 1, "pattern": "^[a-z0-9-_]+$" }, "description": { "type": "string", "description": "Description of the template", "minimum": 0, "maxLength": 100 }, "content": { "type": "string", "description": "Content of the template", "minLength": 1 } } }, "TemplateIdentity": { "description": "Identifier for a template", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to this template", "pattern": "^/v2/templates/[a-z0-9]+$" } } }, "Timestamp": { "type": "string", "format": "date-time", "description": "An iso8601 formatted timestamp" }, "TlsConfiguration": { "type": "object", "properties": { "private_keys": { "description": "A reference to an array of secrets containing private keys", "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/SecretHref" } ] } }, "certificate_chain": { "type": "string", "description": "A sequence of [PEM-encoded](https://www.rfc-editor.org/rfc/rfc7468) X.509\ncertificates that are presented when the application is accessed through\nits data plane. If the certificate chain is to be presented to general\nclients then it should include a certificate chain that ends with one\nsigned by a generally trusted certificate authority. Multiple server\ncertificates may be included for the case where the application has\nmultiple aliases, and the correct certificate will be prsesented to\nclients based on the hostname included in the request. Using `delivery =\ncdn` with multiple server certificates is not permitted.\n", "minLength": 1 }, "enable_auto_tls": { "type": "boolean", "description": "When enabled Auto HTTPS will configure your application to automatically\nobtain and renew certificates from Let's Encrypt.\n", "default": false }, "enable_force_tls": { "type": "boolean", "description": "When enabled causes a\n[Strict-Transport-Security](https://www.rfc-editor.org/rfc/rfc6797) header\nto be emitted on all responses for this application.\n", "default": false }, "enable_tls_offloading": { "type": "boolean", "description": "When enabled, traffic from the data plane to application servers will use\nthe HTTP protocol without TLS. This is not recommended, and should only be\nused if some other mechanism protects the traffic from eavesdroppers, such\nas `shields` or a private network.\n", "default": false }, "enable_server_validation": { "type": "boolean", "description": "Verify that the certificates presented by application servers are valid\nfor the request. Disabling this is not recommended. To avoid the\ncomplication of frequent expiration of application server certificates,\nconsider using Origin Certificates, which do not expire as frequently as\npublicly issued certificates.\n", "default": true }, "tolerate_invalid_chain": { "type": "boolean", "description": "Tolerate certificate chain errors in certificates presented by the\napplication servers. Combined with `enable_server_validation = false`,\ndisables all checking of origin certificates.\n", "default": false }, "versions": { "type": "array", "description": "The versions of TLS that will be accepted for this application", "items": { "$ref": "#/components/schemas/TlsVersion" }, "minItems": 1, "uniqueItems": true }, "covered_aliases": { "type": "array", "description": "Covered aliases by TLS configuration for this application", "items": { "$ref": "#/components/schemas/CoveredAlias" }, "readOnly": true } } }, "TlsConfigurationForValidator": { "type": "object", "additionalProperties": false, "properties": { "private_key": { "anyOf": [ { "type": "object", "required": [ "key" ], "additionalProperties": false, "properties": { "key": { "type": "string", "minLength": 1 } } }, { "type": "object", "required": [ "href" ], "additionalProperties": false, "properties": { "href": { "type": "string", "pattern": "^/v2/secrets/[a-z0-9]+$" } } } ] }, "private_keys": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/ResourceReference" }, { "type": "object", "required": [ "key" ], "additionalProperties": false, "properties": { "key": { "type": "string", "minLength": 1 } } } ] } }, "certificate_chain": { "type": "string", "description": "The signed certificate followed by any intermediate certificate chain.", "minLength": 1 } } }, "TlsVersion": { "type": "string", "description": "Names of the versions of Transport Layer Security (TLS)", "enum": [ "TlsV1.1", "TlsV1.2", "TlsV1.3" ] }, "CoveredAlias": { "type": "object", "description": "Certificate information for covered alias", "readOnly": true, "properties": { "name": { "description": "Covered alias name", "type": "string" }, "not_after": { "type": "string", "format": "date-time", "description": "Certificate to be used not after" }, "trusted": { "description": "Certificate is trusted or not", "type": "boolean" } } }, "Type": { "description": "A log field type.", "type": "object", "required": [ "name" ], "additionalProperties": false, "properties": { "name": { "description": "Name of the type", "type": "string", "enum": [ "address", "array", "asn", "boolean", "byte-count", "correlation-id", "country-code", "duration", "enum", "host", "label", "path", "port", "query", "script", "status-code", "string", "timestamp", "url", "url-map-id", "web-control-id" ] }, "element_type": { "description": "When a Field is of array type, element_type defines the type of the elements within the array.", "$ref": "#/components/schemas/Type" }, "values": { "description": "When a Field is of enum type, the enum's values will be defined.", "type": "array", "items": { "$ref": "#/components/schemas/EnumValue" } } } }, "UrlMap": { "description": "A URL map contains mappings from source URL to destination URL.", "additionalProperties": false, "allOf": [ { "$ref": "#/components/schemas/UrlMapConfiguration" }, { "$ref": "#/components/schemas/UrlMapIdentity" }, { "$ref": "#/components/schemas/UrlMapState" } ] }, "UrlMapConfiguration": { "description": "The configurable attributes of a URL map", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the URL map", "minLength": 1, "maxLength": 100 }, "description": { "type": "string", "description": "Description of the URL map", "minimum": 0, "maxLength": 1000 }, "entries": { "type": "array", "description": "Array of URL map entries", "items": { "$ref": "#/components/schemas/UrlMapEntry" } } } }, "UrlMapIdentity": { "description": "Identifier for a URL map", "additionalProperties": false, "properties": { "href": { "type": "string", "description": "A reference to this URL map", "pattern": "^/v2/url-maps/[a-z0-9]+$" } } }, "UrlMapState": { "type": "object", "description": "State for a URL map", "additionalProperties": false, "properties": { "created": { "type": "string", "format": "date-time", "description": "Time when the map was created" }, "entries_size": { "type": "number", "description": "Total number of entries included in this URL map" }, "updated": { "type": "string", "format": "date-time", "description": "Time when the map was last updated" } } }, "UrlMapEntry": { "type": "object", "description": "Entry for a URL map", "additionalProperties": false, "properties": { "from": { "type": "string", "pattern": "^https?://([a-zA-Z0-9][\\w\\-]{0,62}\\.){1,}[a-zA-Z0-9\\-]{2,}/([\\w.\\-~!$&'()*+,;=:@/]|%[A-Fa-f0-9]{2})*\\??([\\w.\\-~!$&'()*+,;=:@/]|[%[A-Fa-f0-9]{2}])*$", "description": "The URL that will be mapped from" }, "to": { "type": "string", "pattern": "^https?://([a-zA-Z0-9][\\w\\-]{0,62}\\.){1,}[a-zA-Z0-9\\-]{2,}/([\\w.\\-~!$&'()*+,;=:@/]|%[A-Fa-f0-9]{2})*\\??([\\w.\\-~!$&'()*+,;=:@/]|[%[A-Fa-f0-9]{2}])*$", "description": "The URL that will be mapped to" } }, "required": [ "from", "to" ] }, "User": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/UserPatch" }, { "type": "object", "properties": { "roles": { "type": "array", "description": "Roles assigned to this user", "items": { "$ref": "#/components/schemas/Roles" } }, "groups": { "description": "Groups to which a user has accepted an invitation", "type": "array", "items": { "$ref": "#/components/schemas/Group" } } } } ] }, "UserPatch": { "type": "object", "properties": { "name": { "$ref": "#/components/schemas/Name", "description": "Name of the user" }, "phone": { "type": "string", "description": "Phone number of the user" }, "preferences": { "type": "object", "description": "Preferences for the user" }, "mfa_secret": { "type": "string", "nullable": true, "description": "MFA secret key of the user", "pattern": "^(/v2/secrets/[a-z0-9]+|[A-Za-z2-7]{16,32})$" }, "ssh_username": { "type": "string", "description": "Login username for SSH Gateway", "pattern": "^[0-9a-zA-Z][-_\\.0-9a-zA-Z]+[0-9a-zA-Z]$", "minLength": 3, "maxLength": 50 } } }, "WebControlCondition": { "description": "The condition that cause a web control to trigger", "discriminator": { "propertyName": "type" }, "anyOf": [ { "$ref": "#/components/schemas/ConditionAddressInSet" }, { "$ref": "#/components/schemas/ConditionAddressIsNotThreat" }, { "$ref": "#/components/schemas/ConditionAddressIsNotWhitelisted" }, { "$ref": "#/components/schemas/ConditionAddressIsThreat" }, { "$ref": "#/components/schemas/ConditionAddressIsWhitelisted" }, { "$ref": "#/components/schemas/ConditionAddressNotInSet" }, { "$ref": "#/components/schemas/ConditionAsnIs" }, { "$ref": "#/components/schemas/ConditionAsnIsNot" }, { "$ref": "#/components/schemas/ConditionAuthCookieIsNotSet" }, { "$ref": "#/components/schemas/ConditionAuthCookieIsSet" }, { "$ref": "#/components/schemas/ConditionCookieIsNotSet" }, { "$ref": "#/components/schemas/ConditionCookieIsSet" }, { "$ref": "#/components/schemas/ConditionCookieValueDoesNotMatch" }, { "$ref": "#/components/schemas/ConditionCookieValueMatches" }, { "$ref": "#/components/schemas/ConditionCountryIs" }, { "$ref": "#/components/schemas/ConditionCountryIsNot" }, { "$ref": "#/components/schemas/ConditionHeaderValueDoesNotMatch" }, { "$ref": "#/components/schemas/ConditionHeaderValueMatches" }, { "$ref": "#/components/schemas/ConditionHeadersMatch" }, { "$ref": "#/components/schemas/ConditionHeadersNotMatch" }, { "$ref": "#/components/schemas/ConditionMatchesFilter" }, { "$ref": "#/components/schemas/ConditionMethodIs" }, { "$ref": "#/components/schemas/ConditionMethodIsNot" }, { "$ref": "#/components/schemas/ConditionRandom" }, { "$ref": "#/components/schemas/ConditionRateLimit" }, { "$ref": "#/components/schemas/ConditionReferrerDoesNotMatch" }, { "$ref": "#/components/schemas/ConditionReferrerIsDefined" }, { "$ref": "#/components/schemas/ConditionReferrerIsNotDefined" }, { "$ref": "#/components/schemas/ConditionReferrerMatches" }, { "$ref": "#/components/schemas/ConditionStatusCodeMatches" }, { "$ref": "#/components/schemas/ConditionUrlDoesNotMatch" }, { "$ref": "#/components/schemas/ConditionUrlMatches" }, { "$ref": "#/components/schemas/ConditionUserAgentDoesNotMatch" }, { "$ref": "#/components/schemas/ConditionUserAgentMatches" }, { "$ref": "#/components/schemas/ConditionIsCrawler" } ] }, "WebControlConfiguration": { "description": "Configuration for a web control", "required": [ "actions", "name" ], "properties": { "name": { "type": "string", "description": "Short name describing the web control.", "minLength": 1, "maxLength": 50 }, "description": { "type": "string", "description": "Optional additional description of the web control.", "minLength": 0, "maxLength": 255 }, "mode": { "type": "string", "description": "Set as 'maintenance' for maintenance mode web control.", "enum": [ "maintenance", "request", "response" ] }, "enabled": { "description": "Enables or disables the web control.", "type": "boolean" }, "conditions": { "type": "array", "description": "An array of conditions. When empty, all requests match", "items": { "$ref": "#/components/schemas/WebControlCondition" } }, "actions": { "type": "array", "description": "Actions that are applied when the web control is triggered.", "items": { "$ref": "#/components/schemas/PageControlAction" }, "minItems": 0 } } }, "Whitelist": { "type": "array", "description": "A list of addresses to which no restrictions will apply.", "items": { "$ref": "#/components/schemas/WhitelistItem" }, "uniqueItems": true }, "WhitelistItem": { "type": "object", "required": [ "address", "description" ], "properties": { "address": { "$ref": "#/components/schemas/Cidr" }, "description": { "type": "string", "description": "A description of the white listed address." } } }, "WhitelistItemPut": { "type": "object", "required": [ "description" ], "properties": { "description": { "type": "string", "description": "A description of the white listed address." } } } }, "parameters": { "archived-log-reference": { "name": "ref", "in": "path", "required": true, "description": "An archived log reference in one of two forms:\n1. An account log type. Currently only `events` logs exist for an\n account.\n2. A log subject and log type of the form `{subject}/{type}`. Currently,\n log subjects are of the form `applications/{id}`. Log types can be\n one of:\n * custom\n * cdn\n * csp-reports\n * pageviews\n * proxy-logs\n", "schema": { "type": "string", "example": "applications/abcdefg123/proxy-logs" } }, "authorization": { "name": "authorization", "in": "query", "schema": { "type": "string", "description": "Access token. The authorization request header and this query parameter are exclusive. Exactly one must be provided." } }, "filter": { "name": "filter", "in": "query", "description": "A filter to limit which items are returned.\n", "schema": { "type": "string" } }, "format": { "name": "format", "in": "query", "description": "Return the result as a JSON-coded array of items or as a [comma-separated values](https://en.wikipedia.org/wiki/Comma-separated_values) file. When JSON is requested, the limit must be 200 or less.", "schema": { "type": "string", "default": "json", "enum": [ "json", "csv" ] } }, "from": { "in": "query", "name": "from", "description": "Select items on or after this time stamp.", "schema": { "type": "string", "format": "date-time" } }, "groupby": { "name": "groupby", "in": "query", "description": "A comma-separated sequence of attribute names or functions where each distinct\nvalue creates a group within which aggregation takes place. Currently multiple\nelements may be given only if the first element is the `interval` function.\n\nThe functions that may be used are:\n\n| Name | Description |\n| ----- | ----------- |\n| `interval(n)` | Creates groups of size `n` seconds between `from` and `to` subject to `grouplimit` |\n", "schema": { "type": "string" } }, "groupfilters": { "name": "groupfilters", "in": "query", "description": "A comma-separated sequence of filter expressions that is specified in conjunction with `groupby` to return an additional grouping level with one element for each filter. These filters are within the set that is already filtered by the `filter` parameter. A special filter `other` can appear as a final filter to select logs that do not match any other filter.", "schema": { "type": "string" } }, "grouplimit": { "name": "grouplimit", "in": "query", "description": "The maximum number of group records returned, specified in conjunction with\n`groupby`.\n", "schema": { "type": "integer", "minimum": 1, "maximum": 200 } }, "grouporder": { "name": "grouporder", "in": "query", "description": "A comma-separated sequence that specifies the order in which grouped results\nare returned. Used in conjunction with `groupby`.\n", "schema": { "type": "string" } }, "groupselect": { "name": "groupselect", "in": "query", "description": "A comma-separated sequence of aggregation functions to be returned in the\ngroup result. Used in conjunction with `groupby`.\n\n| Function | Description |\n| -------- | ----------- |\n| `count` | The number of items within the group |\n| `sum(name)` | The sum of values of a numeric attribute `name` |\n| `min(name)` | The minimum value of a numeric attribute `name` |\n| `max(name)` | The maximum value of a numeric attribute `name` |\n| `avg(name)` | The average value of a numeric attribute `name` |\n", "schema": { "type": "string" } }, "id": { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "description": "The identity of the object." } }, "limit": { "name": "limit", "in": "query", "description": "The maximum number items to be returned. If not specified, the default is 100.", "schema": { "type": "integer", "minimum": 0 } }, "log-type": { "name": "type", "in": "query", "description": "The type of logs to be returned.\n", "schema": { "type": "string", "enum": [ "proxy-logs", "pageviews", "csp-reports", "cdn-logs" ], "default": "access" } }, "order": { "name": "order", "in": "query", "description": "A comma-separated list of attribute names that specifies the order in which results should be returned. Each attribute may be prefixed by a `-` or `+` to specify descending or ascending sort respectively. The default for each attribute is ascending", "schema": { "type": "string" } }, "to": { "in": "query", "name": "to", "description": "Select items before but not including this time stamp.", "schema": { "type": "string", "format": "date-time" } }, "resolution": { "name": "resolution", "in": "query", "description": "Size in seconds of each bucket for which metrics data will be returned.\nMutually exclusive with `summarize`.\n", "schema": { "type": "integer", "minimum": 5 } }, "summarize": { "name": "summarize", "in": "query", "description": "When true specifies that a single value for each named metric is returned for\nthe requested time period instead of an array divided into resolution-sized\nbuckets. Mutually exlusive with `resolution`.\n", "schema": { "type": "boolean" } }, "start": { "name": "start", "in": "query", "description": "The starting item to be returned, used for pagination.", "schema": { "type": "integer", "default": 1 } } }, "securitySchemes": { "access_key": { "type": "http", "scheme": "Bearer", "description": "An access key secret must be sent as a\n[bearer token](https://www.rfc-editor.org/rfc/rfc7235#section-5.1)\nwith each HTTP request in an `Authorization` header. Tokens are obtained\nin one of three ways:\n\n1. Creating an access key in your\n [user profile](https://control.webscale.com/profile).\n2. Using an access key secret created when a service user is created\n with the [POST accounts/{id}/service-users](#post-/accounts/-id-/service-users)\n API.\n3. Obtaining a temporary access key using an existing access key secret\n for a specified account with the\n [POST users/self/authorization](#post-/users/-id-/authorization) API.\n" } } } }