diff --git a/content/operate/rc/api/api-reference/openapi.json b/content/operate/rc/api/api-reference/openapi.json index 0943760901..7cf72a2d0d 100644 --- a/content/operate/rc/api/api-reference/openapi.json +++ b/content/operate/rc/api/api-reference/openapi.json @@ -22,7 +22,8 @@ "security": [ { "x-api-key": [], - "x-api-secret-key": [] + "x-api-secret-key": [], + "X-Auth-Token": [] } ], "tags": [ @@ -350,7 +351,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SubscriptionUpdateRequest" + "$ref": "#/components/schemas/BaseSubscriptionUpdateRequest" } } }, @@ -2861,7 +2862,7 @@ "Subscriptions - Pro" ], "summary": "Get Pro subscription CIDR whitelist", - "description": "(Self-hosted AWS subscriptions only) Gets a Pro subscription's CIDR whitelist.", + "description": "(Bring your own Cloud only) Gets a Pro subscription's CIDR whitelist. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", "operationId": "getCidrWhiteList", "parameters": [ { @@ -2917,7 +2918,7 @@ "Subscriptions - Pro" ], "summary": "Update Pro subscription CIDR whitelist", - "description": "(Self-hosted AWS subscriptions only) Updates a Pro subscription's CIDR whitelist.", + "description": "(Bring your own Cloud only) Updates a Pro subscription's CIDR whitelist.", "operationId": "updateSubscriptionCidrWhiteList", "parameters": [ { @@ -4632,8 +4633,8 @@ "deploymentType": "single-region", "paymentMethod": "credit-card", "paymentMethodId": 12345, + "publicEndpointAccess": true, "memoryStorage": "ram", - "persistentStorageEncryption": true, "cloudProviders": [ { "provider": "AWS", @@ -4928,7 +4929,7 @@ "Subscriptions - Pro - Connectivity" ], "summary": "Get Private Service Connect for a single region", - "description": "(Active-Active subscriptions only) Gets Private Service Connect details for a single region in an Active-Active subscription.", + "description": "(Active-Active subscriptions only) Gets Private Service Connect details for a single region in an Active-Active subscription. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", "operationId": "getActiveActivePscService", "parameters": [ { @@ -5143,7 +5144,7 @@ "Subscriptions - Pro - Connectivity" ], "summary": "Get Private Service Connect endpoints for a single region", - "description": "(Active-Active subscriptions only) Gets endpoint details for the specified Private Service Connect in a single region in an Active-Active subscription.", + "description": "(Active-Active subscriptions only) Gets endpoint details for the specified Private Service Connect in a single region in an Active-Active subscription. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", "operationId": "getActiveActivePscServiceEndpoints", "parameters": [ { @@ -5310,14 +5311,556 @@ } } }, + "/subscriptions/{subscriptionId}/regions/{regionId}/private-link": { + "get": { + "tags": [ + "Subscriptions - Pro - Connectivity" + ], + "summary": "Get Private Link configuration for a specific region", + "description": "(Active-Active subscriptions only) Gets the Private Link configuration for a specific region. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", + "operationId": "getActiveActivePrivateLink", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "regionId", + "in": "path", + "description": "Region ID - required for Active-Active subscription", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + }, + "example": 1 + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + }, + "post": { + "tags": [ + "Subscriptions - Pro - Connectivity" + ], + "summary": "Create a Private Link for a specific region", + "description": "(Active-Active subscriptions only) Creates a new Private Link for a specific region.", + "operationId": "createActiveActivePrivateLink", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "regionId", + "in": "path", + "description": "Region ID - required for Active-Active subscription", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + }, + "example": 1 + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PrivateLinkActiveActiveCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "204": { + "description": "No Content", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to create requested resource (primarily due to not active resource)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "408": { + "description": "Request Timeout - The server didn't receive a complete request message within the server's allotted timeout period" + }, + "409": { + "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with the new name" + }, + "422": { + "description": "Unprocessable Entity - The server understands the request, and the syntax of the request is correct, but it was unable to process the contained instructions" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + }, + "delete": { + "tags": [ + "Subscriptions - Pro - Connectivity" + ], + "summary": "Delete Private Link for a specific region", + "description": "(Active-Active subscriptions only) Deletes the Private Link configuration for a specific region.", + "operationId": "deleteActiveActivePrivateLink", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "regionId", + "in": "path", + "description": "Region ID - required for Active-Active subscription", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + }, + "example": 1 + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "204": { + "description": "No Content", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "408": { + "description": "Request Timeout - The server didn't receive a complete request message within the server's allotted timeout period" + }, + "409": { + "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with new updated name)" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + } + }, + "/subscriptions/{subscriptionId}/regions/{regionId}/private-link/principals": { + "post": { + "tags": [ + "Subscriptions - Pro - Connectivity" + ], + "summary": "Add principal to Private Link for a specific region", + "description": "(Active-Active subscriptions only) Adds a principal (AWS ARN) to the Private Link configuration for a specific region.", + "operationId": "createActiveActivePrivateLinkPrincipal", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "regionId", + "in": "path", + "description": "Region ID - required for Active-Active subscription", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + }, + "example": 1 + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PrivateLinkActiveActivePrincipalsCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "204": { + "description": "No Content", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to create requested resource (primarily due to not active resource)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "408": { + "description": "Request Timeout - The server didn't receive a complete request message within the server's allotted timeout period" + }, + "409": { + "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with the new name" + }, + "422": { + "description": "Unprocessable Entity - The server understands the request, and the syntax of the request is correct, but it was unable to process the contained instructions" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + }, + "delete": { + "tags": [ + "Subscriptions - Pro - Connectivity" + ], + "summary": "Remove a principal from Private Link for a specific region", + "description": "(Active-Active subscriptions only) Removes one principal (AWS ARNs) from the Private Link configuration for a specific region.", + "operationId": "deleteActiveActivePrivateLinkPrincipals", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "regionId", + "in": "path", + "description": "Region ID - required for Active-Active subscription", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + }, + "example": 1 + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PrivateLinkActiveActivePrincipalsDeleteRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "204": { + "description": "No Content", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "408": { + "description": "Request Timeout - The server didn't receive a complete request message within the server's allotted timeout period" + }, + "409": { + "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with new updated name)" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + } + }, "/subscriptions/{subscriptionId}/regions/peerings": { "get": { "tags": [ "Subscriptions - Pro - Connectivity" ], - "summary": "Get Active-Active VPC peering details", - "description": "(Active-Active subscriptions only) Gets VPC peering details for an Active-Active subscription.", - "operationId": "getActiveActiveVpcPeerings", + "summary": "Get Active-Active VPC peering details", + "description": "(Active-Active subscriptions only) Gets VPC peering details for an Active-Active subscription. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", + "operationId": "getActiveActiveVpcPeerings", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + }, + "post": { + "tags": [ + "Subscriptions - Pro - Connectivity" + ], + "summary": "Create Active-Active VPC peering", + "description": "(Active-Active subscriptions only) Sets up VPC peering for an Active-Active subscription. Ensure your cloud provider is also set up for VPC Peering with Redis Cloud. See [VPC Peering](https://docs.redis.com/latest/rc/security/vpc-peering) to learn how to set up VPC Peering with AWS and Google Cloud.", + "operationId": "createActiveActiveVpcPeering", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActiveActiveVpcPeeringCreateBaseRequest" + }, + "example": { + "provider": "string", + "region": "us-east-1", + "awsAccountId": "", + "vpcId": "", + "vpcCidrs": [ + "<10.10.10.0/24>", + "<10.10.20.0/24>" + ] + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to create requested resource (primarily due to not active resource)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "408": { + "description": "Request Timeout - The server didn't receive a complete request message within the server's allotted timeout period" + }, + "409": { + "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with the new name" + }, + "422": { + "description": "Unprocessable Entity - The server understands the request, and the syntax of the request is correct, but it was unable to process the contained instructions" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + } + }, + "/subscriptions/{subscriptionId}/private-service-connect": { + "get": { + "tags": [ + "Subscriptions - Pro - Connectivity" + ], + "summary": "Get Private Service Connect", + "description": "Gets Private Service Connect details for a subscription. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", + "operationId": "getPscService", "parameters": [ { "name": "subscriptionId", @@ -5337,8 +5880,8 @@ "412": { "description": "Precondition Failed - Feature flag for this flow is off" }, - "200": { - "description": "OK", + "202": { + "description": "Accepted", "content": { "application/json": { "schema": { @@ -5371,9 +5914,204 @@ "tags": [ "Subscriptions - Pro - Connectivity" ], - "summary": "Create Active-Active VPC peering", - "description": "(Active-Active subscriptions only) Sets up VPC peering for an Active-Active subscription. Ensure your cloud provider is also set up for VPC Peering with Redis Cloud. See [VPC Peering](https://docs.redis.com/latest/rc/security/vpc-peering) to learn how to set up VPC Peering with AWS and Google Cloud.", - "operationId": "createActiveActiveVpcPeering", + "summary": "Set up Private Service Connect for a subscription", + "description": "Sets up Google Cloud Private Service Connect for an existing subscription hosted on Google Cloud.", + "operationId": "createPscService", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to create requested resource (primarily due to not active resource)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "408": { + "description": "Request Timeout - The server didn't receive a complete request message within the server's allotted timeout period" + }, + "409": { + "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with the new name" + }, + "422": { + "description": "Unprocessable Entity - The server understands the request, and the syntax of the request is correct, but it was unable to process the contained instructions" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + }, + "delete": { + "tags": [ + "Subscriptions - Pro - Connectivity" + ], + "summary": "Remove Private Service Connect for a subscription", + "description": "Deletes Private Service Connect for a subscription.", + "operationId": "deletePscService", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "408": { + "description": "Request Timeout - The server didn't receive a complete request message within the server's allotted timeout period" + }, + "409": { + "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with new updated name)" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + } + }, + "/subscriptions/{subscriptionId}/private-service-connect/{pscServiceId}": { + "get": { + "tags": [ + "Subscriptions - Pro - Connectivity" + ], + "summary": "Get Private Service Connect endpoints", + "description": "Gets endpoint details for the specified Private Service Connect. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", + "operationId": "getPscServiceEndpoints", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "pscServiceId", + "in": "path", + "description": "Private Service Connect service ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + }, + "post": { + "tags": [ + "Subscriptions - Pro - Connectivity" + ], + "summary": "Create a Private Service Connect endpoint", + "description": "Creates a new Private Service Connect endpoint.", + "operationId": "createPscServiceEndpoint", "parameters": [ { "name": "subscriptionId", @@ -5384,23 +6122,23 @@ "type": "integer", "format": "int32" } + }, + { + "name": "pscServiceId", + "in": "path", + "description": "Private Service Connect service ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ActiveActiveVpcPeeringCreateBaseRequest" - }, - "example": { - "provider": "string", - "region": "us-east-1", - "awsAccountId": "", - "vpcId": "", - "vpcCidrs": [ - "<10.10.10.0/24>", - "<10.10.20.0/24>" - ] + "$ref": "#/components/schemas/PscEndpointCreateRequest" } } }, @@ -5413,8 +6151,8 @@ "412": { "description": "Precondition Failed - Feature flag for this flow is off" }, - "200": { - "description": "OK", + "202": { + "description": "Accepted", "content": { "application/json": { "schema": { @@ -5453,14 +6191,14 @@ } } }, - "/subscriptions/{subscriptionId}/private-service-connect": { + "/subscriptions/{subscriptionId}/private-link": { "get": { "tags": [ "Subscriptions - Pro - Connectivity" ], - "summary": "Get Private Service Connect", - "description": "Gets Private Service Connect details for a subscription.", - "operationId": "getPscService", + "summary": "Get Private Link configuration", + "description": "Gets the Private Link configuration for a subscription. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", + "operationId": "getPrivateLink", "parameters": [ { "name": "subscriptionId", @@ -5514,9 +6252,9 @@ "tags": [ "Subscriptions - Pro - Connectivity" ], - "summary": "Set up Private Service Connect for a subscription", - "description": "Sets up Google Cloud Private Service Connect for an existing subscription hosted on Google Cloud.", - "operationId": "createPscService", + "summary": "Create a Private Link", + "description": "Creates a new Private Link.", + "operationId": "createPrivateLink", "parameters": [ { "name": "subscriptionId", @@ -5529,6 +6267,16 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PrivateLinkCreateRequest" + } + } + }, + "required": true + }, "responses": { "400": { "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" @@ -5536,8 +6284,8 @@ "412": { "description": "Precondition Failed - Feature flag for this flow is off" }, - "202": { - "description": "Accepted", + "204": { + "description": "No Content", "content": { "application/json": { "schema": { @@ -5579,9 +6327,9 @@ "tags": [ "Subscriptions - Pro - Connectivity" ], - "summary": "Remove Private Service Connect for a subscription", - "description": "Deletes Private Service Connect for a subscription.", - "operationId": "deletePscService", + "summary": "Delete Private Link", + "description": "Deletes the Private Link configuration for a subscription.", + "operationId": "deletePrivateLink", "parameters": [ { "name": "subscriptionId", @@ -5601,8 +6349,8 @@ "412": { "description": "Precondition Failed - Feature flag for this flow is off" }, - "202": { - "description": "Accepted", + "204": { + "description": "No Content", "content": { "application/json": { "schema": { @@ -5638,14 +6386,14 @@ } } }, - "/subscriptions/{subscriptionId}/private-service-connect/{pscServiceId}": { - "get": { + "/subscriptions/{subscriptionId}/private-link/principals": { + "post": { "tags": [ "Subscriptions - Pro - Connectivity" ], - "summary": "Get Private Service Connect endpoints", - "description": "Gets endpoint details for the specified Private Service Connect.", - "operationId": "getPscServiceEndpoints", + "summary": "Add principal to Private Link", + "description": "Adds a principal (AWS ARN) to the Private Link configuration.", + "operationId": "createPrivateLinkPrincipal", "parameters": [ { "name": "subscriptionId", @@ -5656,18 +6404,18 @@ "type": "integer", "format": "int32" } - }, - { - "name": "pscServiceId", - "in": "path", - "description": "Private Service Connect service ID.", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PrivateLinkPrincipalsCreateRequest" + } + } + }, + "required": true + }, "responses": { "400": { "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" @@ -5675,8 +6423,8 @@ "412": { "description": "Precondition Failed - Feature flag for this flow is off" }, - "202": { - "description": "Accepted", + "204": { + "description": "No Content", "content": { "application/json": { "schema": { @@ -5689,11 +6437,20 @@ "description": "Unauthorized - Authentication failed for requested resource" }, "403": { - "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + "description": "Forbidden - Not allowed to create requested resource (primarily due to not active resource)" }, "404": { "description": "Not Found - The resource you were trying to reach was not found or does not exist" }, + "408": { + "description": "Request Timeout - The server didn't receive a complete request message within the server's allotted timeout period" + }, + "409": { + "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with the new name" + }, + "422": { + "description": "Unprocessable Entity - The server understands the request, and the syntax of the request is correct, but it was unable to process the contained instructions" + }, "429": { "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" }, @@ -5705,13 +6462,13 @@ } } }, - "post": { + "delete": { "tags": [ "Subscriptions - Pro - Connectivity" ], - "summary": "Create a Private Service Connect endpoint", - "description": "Creates a new Private Service Connect endpoint.", - "operationId": "createPscServiceEndpoint", + "summary": "Remove a principal from Private Link", + "description": "Removes a principal (AWS ARNs) from the Private Link configuration.", + "operationId": "deletePrivateLinkPrincipals", "parameters": [ { "name": "subscriptionId", @@ -5722,23 +6479,13 @@ "type": "integer", "format": "int32" } - }, - { - "name": "pscServiceId", - "in": "path", - "description": "Private Service Connect service ID.", - "required": true, - "schema": { - "type": "integer", - "format": "int32" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PscEndpointCreateRequest" + "$ref": "#/components/schemas/PrivateLinkPrincipalsDeleteRequest" } } }, @@ -5751,8 +6498,8 @@ "412": { "description": "Precondition Failed - Feature flag for this flow is off" }, - "202": { - "description": "Accepted", + "204": { + "description": "No Content", "content": { "application/json": { "schema": { @@ -5765,7 +6512,7 @@ "description": "Unauthorized - Authentication failed for requested resource" }, "403": { - "description": "Forbidden - Not allowed to create requested resource (primarily due to not active resource)" + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" }, "404": { "description": "Not Found - The resource you were trying to reach was not found or does not exist" @@ -5774,10 +6521,7 @@ "description": "Request Timeout - The server didn't receive a complete request message within the server's allotted timeout period" }, "409": { - "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with the new name" - }, - "422": { - "description": "Unprocessable Entity - The server understands the request, and the syntax of the request is correct, but it was unable to process the contained instructions" + "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with new updated name)" }, "429": { "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" @@ -5797,7 +6541,7 @@ "Subscriptions - Pro - Connectivity" ], "summary": "Get VPC peering details", - "description": "Gets VPC peering details for the specified subscription.", + "description": "Gets VPC peering details for the specified subscription. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", "operationId": "getVpcPeering", "parameters": [ { @@ -6828,10 +7572,160 @@ "description": "Request Timeout - The server didn't receive a complete request message within the server's allotted timeout period" }, "409": { - "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with the new name" - }, - "422": { - "description": "Unprocessable Entity - The server understands the request, and the syntax of the request is correct, but it was unable to process the contained instructions" + "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with the new name" + }, + "422": { + "description": "Unprocessable Entity - The server understands the request, and the syntax of the request is correct, but it was unable to process the contained instructions" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + } + }, + "/fixed/subscriptions/{subscriptionId}/databases/{databaseId}/upgrade": { + "get": { + "tags": [ + "Databases - Essentials" + ], + "summary": "Get Essentials database version upgrade status", + "description": "Gets information on the latest upgrade attempt for this Essentials database.", + "operationId": "getEssentialsDatabaseRedisVersionUpgradeStatus", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "databaseId", + "in": "path", + "description": "Database ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BdbVersionUpgradeStatus" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + }, + "post": { + "tags": [ + "Databases - Essentials" + ], + "summary": "Upgrade Essentials database version", + "description": "Upgrades the specified Essentials database to a later Redis version.", + "operationId": "upgradeEssentialsDatabaseRedisVersion", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "databaseId", + "in": "path", + "description": "Database ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FixedDatabaseUpgradeRedisVersionRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "408": { + "description": "Request Timeout - The server didn't receive a complete request message within the server's allotted timeout period" + }, + "409": { + "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with new updated name)" }, "429": { "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" @@ -7144,6 +8038,71 @@ } } }, + "/cost-report": { + "post": { + "tags": [ + "Account" + ], + "summary": "Generate cost report (Beta)", + "description": "Generates a cost report in FOCUS format for the specified time period (max 40 days range) and filters. [Read more about focus here](https://focus.finops.org/).\n", + "operationId": "createCostReport", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CostReportCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to create requested resource (primarily due to not active resource)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "408": { + "description": "Request Timeout - The server didn't receive a complete request message within the server's allotted timeout period" + }, + "409": { + "description": "Conflict - request could not be processed because of a conflict (primarily due to another resource that exist with the new name" + }, + "422": { + "description": "Unprocessable Entity - The server understands the request, and the syntax of the request is correct, but it was unable to process the contained instructions" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + } + }, "/cloud-accounts": { "get": { "tags": [ @@ -7735,7 +8694,7 @@ "Subscriptions - Pro - Connectivity" ], "summary": "Get transit gateways for a subscription", - "description": "Gets all AWS transit gateway details for the specified subscription.", + "description": "Gets all AWS transit gateway details for the specified subscription. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", "operationId": "getTgws", "parameters": [ { @@ -7793,7 +8752,7 @@ "Subscriptions - Pro - Connectivity" ], "summary": "Get transit gateway invitations for a subscription", - "description": "Gets all AWS transit gateway invitations for the specified subscription.", + "description": "Gets all AWS transit gateway invitations for the specified subscription. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", "operationId": "getTgwSharedInvitations", "parameters": [ { @@ -7851,7 +8810,7 @@ "Subscriptions - Pro - Connectivity" ], "summary": "Get transit gateways for a single region", - "description": "(Active-Active subscriptions only) Gets all AWS transit gateway details for the specified region in an Active-Active subscription.", + "description": "(Active-Active subscriptions only) Gets all AWS transit gateway details for the specified region in an Active-Active subscription. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", "operationId": "getActiveActiveTgws", "parameters": [ { @@ -7920,7 +8879,7 @@ "Subscriptions - Pro - Connectivity" ], "summary": "Get transit gateway invitations for a single region", - "description": "(Active-Active subscriptions only) Gets AWS transit gateway invitations for the specified region in an Active-Active subscription.", + "description": "(Active-Active subscriptions only) Gets AWS transit gateway invitations for the specified region in an Active-Active subscription. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", "operationId": "getActiveActiveTgwSharedInvitations", "parameters": [ { @@ -7989,7 +8948,7 @@ "Subscriptions - Pro - Connectivity" ], "summary": "Get Private Service Connect endpoint deletion script for a single region", - "description": "(Active-Active subscriptions only) Gets the gcloud script to delete the specified Private Service Connect endpoint on Google Cloud.", + "description": "(Active-Active subscriptions only) Gets the gcloud script to delete the specified Private Service Connect endpoint on Google Cloud. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", "operationId": "getActiveActivPscServiceEndpointDeletionScript", "parameters": [ { @@ -8077,7 +9036,7 @@ "Subscriptions - Pro - Connectivity" ], "summary": "Get Private Service Connect endpoint creation script for a single region", - "description": "(Active-Active subscriptions only) Gets the gcloud script to create the specified Private Service Connect endpoint on Google Cloud.", + "description": "(Active-Active subscriptions only) Gets the gcloud script to create the specified Private Service Connect endpoint on Google Cloud. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", "operationId": "getActiveActivPscServiceEndpointCreationScript", "parameters": [ { @@ -8159,13 +9118,81 @@ } } }, + "/subscriptions/{subscriptionId}/regions/{regionId}/private-link/endpoint-script": { + "get": { + "tags": [ + "Subscriptions - Pro - Connectivity" + ], + "summary": "Get Private Link endpoint script for a single region", + "description": "(Active-Active subscriptions only) Gets the Private Link endpoint script for a single region in an Active-Active subscription. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", + "operationId": "getActiveActivePrivateLinkEndpointScript", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "regionId", + "in": "path", + "description": "Region ID - required for Active-Active subscription", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + } + }, "/subscriptions/{subscriptionId}/private-service-connect/{pscServiceId}/endpoints/{endpointId}/deletionScripts": { "get": { "tags": [ "Subscriptions - Pro - Connectivity" ], "summary": "Get Private Service Connect endpoint deletion script", - "description": "Gets the gcloud script to delete the specified Private Service Connect endpoint on Google Cloud.", + "description": "Gets the gcloud script to delete the specified Private Service Connect endpoint on Google Cloud. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", "operationId": "getPscServiceEndpointDeletionScript", "parameters": [ { @@ -8243,7 +9270,7 @@ "Subscriptions - Pro - Connectivity" ], "summary": "Get Private Service Connect endpoint creation script", - "description": "Gets the gcloud script to create the specified Private Service Connect endpoint on Google Cloud.", + "description": "Gets the gcloud script to create the specified Private Service Connect endpoint on Google Cloud. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", "operationId": "getPscServiceEndpointCreationScript", "parameters": [ { @@ -8315,6 +9342,64 @@ } } }, + "/subscriptions/{subscriptionId}/private-link/endpoint-script": { + "get": { + "tags": [ + "Subscriptions - Pro - Connectivity" + ], + "summary": "Get Private Link endpoint script", + "description": "Gets the Python discovery script for Private Link. Internal users can optionally request a Terraform snippet. [Asynchronous operation](https://redis.io/docs/latest/operate/rc/api/get-started/process-lifecycle/) - Query [GET /tasks/{taskId}](#tag/Tasks/operation/getTaskById) with the returned taskId.", + "operationId": "getPrivateLinkEndpointScript", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskStateUpdate" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + } + }, "/subscriptions/{subscriptionId}/pricing": { "get": { "tags": [ @@ -8520,6 +9605,74 @@ } } }, + "/subscriptions/{subscriptionId}/databases/{databaseId}/available-target-versions": { + "get": { + "tags": [ + "Databases - Pro" + ], + "summary": "Get available upgrade versions for Pro database", + "description": "Gets a list of available Redis versions that the specified Pro database can be upgraded to.", + "operationId": "getDatabaseAvailableVersions", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "databaseId", + "in": "path", + "description": "Database ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BdbAvailableVersionsResponse" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + } + }, "/subscriptions/redis-versions": { "get": { "tags": [ @@ -8528,6 +9681,18 @@ "summary": "Get available Redis database versions", "description": "Gets a list of all available Redis database versions for Pro subscriptions.", "operationId": "getRedisVersions", + "parameters": [ + { + "name": "subscriptionId", + "in": "query", + "description": "Subscription ID (required for an existing subscription)", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], "responses": { "400": { "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" @@ -8598,6 +9763,26 @@ "format": "int32" }, "example": 100 + }, + { + "name": "startTime", + "in": "query", + "description": "Filter session logs with time >= startTime (UTC)", + "required": false, + "schema": { + "type": "string" + }, + "example": "2025-01-01T00:00:00Z" + }, + { + "name": "endTime", + "in": "query", + "description": "Filter session logs with time <= endTime (UTC)", + "required": false, + "schema": { + "type": "string" + }, + "example": "2025-01-31T23:59:59Z" } ], "responses": { @@ -8644,7 +9829,7 @@ "Account" ], "summary": "Get available Pro plan regions", - "description": "Gets a list of available regions for Pro subscriptions. For Essentials subscriptions, use 'GET /fixed/plans'.", + "description": "Gets a list of available regions for Pro subscriptions. For Essentials subscriptions, use [GET /fixed/plans](#tag/Subscriptions-Essentials/operation/getAllFixedSubscriptionsPlans).", "operationId": "getSupportedRegions", "parameters": [ { @@ -8823,6 +10008,37 @@ "format": "int32" }, "example": 100 + }, + { + "name": "startTime", + "in": "query", + "description": "Filter logs with time >= startTime (UTC)", + "required": false, + "schema": { + "type": "string" + }, + "example": "2025-01-01T00:00:00Z" + }, + { + "name": "endTime", + "in": "query", + "description": "Filter logs with time <= endTime (UTC)", + "required": false, + "schema": { + "type": "string" + }, + "example": "2025-01-31T23:59:59Z" + }, + { + "name": "resourceId", + "in": "query", + "description": "Filter logs by resourceId", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + }, + "example": 1234 } ], "responses": { @@ -8931,6 +10147,132 @@ } } }, + "/fixed/subscriptions/{subscriptionId}/databases/{databaseId}/available-target-versions": { + "get": { + "tags": [ + "Databases - Essentials" + ], + "summary": "Get available upgrade versions for Essentials database", + "description": "Gets a list of available Redis versions that the specified Essentials database can be upgraded to.", + "operationId": "getEssentialsDatabaseAvailableVersions", + "parameters": [ + { + "name": "subscriptionId", + "in": "path", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "databaseId", + "in": "path", + "description": "Database ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BdbAvailableVersionsResponse" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + } + }, + "/fixed/redis-versions": { + "get": { + "tags": [ + "Subscriptions - Essentials" + ], + "summary": "Get available Redis database versions for specific Essentials subscription", + "description": "Gets a list of all available Redis database versions for a specific Essentials subscription.", + "operationId": "getRedisVersions_1", + "parameters": [ + { + "name": "subscriptionId", + "in": "query", + "description": "Subscription ID.", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedisVersions" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + } + }, "/fixed/plans": { "get": { "tags": [ @@ -9124,7 +10466,7 @@ "Account" ], "summary": "Get advanced capabilities", - "description": "Gets a list of Redis [advanced capabilities](https://redis.io/docs/latest/operate/rc/databases/configuration/advanced-capabilities/) (also known as modules) available for this account. Advanced capability support may differ based on subscription and database settings.", + "description": "Gets a list of Redis [advanced capabilities](https://redis.io/docs/latest/operate/rc/databases/configuration/advanced-capabilities/) (also known as modules) available for databases prior to Redis 8. Advanced capability support may differ based on subscription and database settings.", "operationId": "getSupportedDatabaseModules", "responses": { "400": { @@ -9210,6 +10552,60 @@ } } }, + "/cost-report/{costReportId}": { + "get": { + "tags": [ + "Account" + ], + "summary": "Get cost report (Beta)", + "description": "Returns the generated cost report file in FOCUS format using the costReportId returned from the cost report generation task. The file is downloaded as an attachment with the filename set to the costReportId.", + "operationId": "getCostReport", + "parameters": [ + { + "name": "costReportId", + "in": "path", + "description": "Cost Report ID. Returned from a Cost Report generation task.", + "required": true, + "schema": { + "type": "string" + }, + "example": "cost-report-12345-abcdef" + } + ], + "responses": { + "400": { + "description": "Bad Request - The server cannot process the request due to something that is perceived to be a client error" + }, + "412": { + "description": "Precondition Failed - Feature flag for this flow is off" + }, + "200": { + "description": "Returns the cost report file", + "content": { + "application/octet-stream": {} + } + }, + "401": { + "description": "Unauthorized - Authentication failed for requested resource" + }, + "403": { + "description": "Forbidden - Not allowed to access requested resource (primarily due to client source IP API Key restrictions)" + }, + "404": { + "description": "Not Found - The resource you were trying to reach was not found or does not exist" + }, + "429": { + "description": "Too Many Requests - Too many resources are concurrently created / updated / deleted in the account. Please re-submit API requests after resource changes are completed)" + }, + "500": { + "description": "Internal system error - If this error persists, please contact customer support" + }, + "503": { + "description": "Service Unavailable - Server is temporarily unable to handle the request, please try again later. If this error persists, please contact customer support " + } + } + } + }, "/": { "get": { "tags": [ @@ -9259,6 +10655,14 @@ }, "components": { "schemas": { + "TargetVersion": { + "type": "object", + "properties": { + "redisVersion": { + "type": "string" + } + } + }, "AclUserCreateRequest": { "required": [ "name", @@ -9275,12 +10679,12 @@ "role": { "type": "string", "description": "Name of the database access role to assign to this user. Use GET '/acl/roles' to get a list of database access roles.", - "example": "Redis-role-example" + "example": "ACL-role-example" }, "password": { "type": "string", "description": "The database password for this user.", - "example": "some-random-password" + "example": "ab123AB$%^" }, "commandType": { "type": "string", @@ -9449,7 +10853,7 @@ "example": { "account": { "id": 1001, - "name": "Redis Labs", + "name": "Redis", "createdTimestamp": "2018-12-23T15:15:31Z", "updatedTimestamp": "2022-10-12T10:54:10Z", "pocStatus": "inactive", @@ -9457,7 +10861,7 @@ "key": { "name": "capi-api-key-name", "accountId": 1001, - "accountName": "Redis Labs", + "accountName": "Redis", "allowedSourceIps": [ "0.0.0.0/0" ], @@ -9472,6 +10876,64 @@ } } }, + "PrivateLinkActiveActiveCreateRequest": { + "required": [ + "principal", + "regionId", + "shareName", + "type" + ], + "type": "object", + "properties": { + "subscriptionId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "regionId": { + "type": "integer", + "description": "Deployment region id as defined by cloud provider", + "format": "int32", + "readOnly": true, + "example": 27 + }, + "shareName": { + "maxLength": 64, + "minLength": 0, + "type": "string", + "description": "Name for the resource share", + "example": "my-private-link-share" + }, + "principal": { + "type": "string", + "description": "AWS account ID or ARN of the principal (IAM user, role, or account)", + "example": "123456789012" + }, + "type": { + "type": "string", + "description": "Type of the principal", + "example": "aws_account", + "enum": [ + "aws_account", + "organization", + "organization_unit", + "iam_role", + "iam_user", + "service_principal" + ] + }, + "alias": { + "type": "string", + "description": "Alias or friendly name for the principal", + "example": "Production Account" + }, + "commandType": { + "type": "string", + "readOnly": true + } + }, + "description": "Request to create a private link for Active-Active subscription" + }, "ActiveActiveVpcPeeringCreateAwsRequest": { "required": [ "awsAccountId", @@ -9559,12 +11021,16 @@ "marketplace" ] }, + "publicEndpointAccess": { + "type": "boolean", + "description": "Optional. When 'false', all databases on this subscription will reject any connection attempt to the public endpoint and any connection attempt to the private endpoint that does not come from an IP address in the private address space defined in [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918#section-3 ). You must use a [private connectivity method](https://redis.io/docs/latest/operate/rc/security/database-security/block-public-endpoints/#private-connectivity-methods ) to connect to a database with a blocked public endpoint." + }, "commandType": { "type": "string", "readOnly": true } }, - "description": "Subscription update request" + "description": "Subscription update request message" }, "DatabaseTagUpdateRequest": { "required": [ @@ -9809,6 +11275,12 @@ "memcached" ] }, + "port": { + "type": "integer", + "description": "Optional. TCP port on which the database is available (10000-19999). Generated automatically if not set.", + "format": "int32", + "example": 10000 + }, "memoryLimitInGb": { "minimum": 0.1, "exclusiveMinimum": false, @@ -9859,7 +11331,7 @@ }, "modules": { "type": "array", - "description": "Optional. Redis advanced capabilities (also known as modules) to be provisioned in the database. Use GET /database-modules to get a list of available advanced capabilities.", + "description": "Optional. Redis advanced capabilities (also known as modules) to be provisioned in the database. Use GET /database-modules to get a list of available advanced capabilities. Don't specify modules for database versions 8 and above. All capabilities are bundled in the database by default.", "items": { "$ref": "#/components/schemas/DatabaseModuleSpec" } @@ -9872,8 +11344,15 @@ }, "averageItemSizeInBytes": { "type": "integer", - "description": "Optional. Relevant only to ram-and-flash (also known as Auto Tiering) subscriptions. Estimated average size in bytes of the items stored in the database. Default: 1000", - "format": "int64" + "description": "Optional. Relevant only to ram-and-flash (also known as Redis-Flex/Auto-Tiering) subscriptions. Estimated average size in bytes of the items stored in the database. Default: 1000", + "format": "int64", + "deprecated": true + }, + "ramPercentage": { + "type": "integer", + "description": "Optional. Relevant only to ram-and-flash (also known as Redis-Flex/Auto-Tiering) subscriptions. The percentage of data to be stored in RAM. Range: 10-50. Default: 20", + "format": "int32", + "example": 20 }, "respVersion": { "type": "string", @@ -9923,6 +11402,9 @@ "status": { "type": "string" }, + "publicEndpointAccess": { + "type": "boolean" + }, "memoryStorage": { "type": "string", "enum": [ @@ -9967,6 +11449,7 @@ "status": "active", "deploymentType": "single-region", "paymentMethodId": 2, + "publicEndpointAccess": true, "memoryStorage": "ram", "numberOfDatabases": 6, "paymentMethodType": "credit-card", @@ -10092,6 +11575,11 @@ "description": "(Pay-as-you-go subscriptions only) Optional. Support Redis [OSS Cluster API](https://redis.io/docs/latest/operate/rc/databases/configuration/clustering/#oss-cluster-api). Default: 'false'", "example": true }, + "redisVersion": { + "type": "string", + "description": "Optional. If specified, redisVersion defines the Redis database version. If omitted, the Redis version will be set to the default version. (available in 'GET /fixed/redis-versions')", + "example": "7.4" + }, "respVersion": { "type": "string", "description": "Optional. Redis Serialization Protocol version. Must be compatible with Redis version.", @@ -10209,7 +11697,7 @@ }, "modules": { "type": "array", - "description": "Optional. Redis advanced capabilities (also known as modules) to be provisioned in the database. Use GET /database-modules to get a list of available advanced capabilities. Can only be set if 'protocol' is 'redis'.", + "description": "Optional. Redis advanced capabilities (also known as modules) to be provisioned in the database. Use GET /database-modules to get a list of available advanced capabilities. Can only be set if 'protocol' is 'redis'. Don't specify modules for database versions 8 and above. All capabilities are bundled in the database by default.", "items": { "$ref": "#/components/schemas/DatabaseModuleSpec" } @@ -10392,6 +11880,12 @@ "$ref": "#/components/schemas/DatabaseAlertSpec" } }, + "ramPercentage": { + "type": "integer", + "description": "Optional. Relevant only to ram-and-flash (also known as Redis-Flex/Auto-Tiering) subscriptions. The percentage of data to be stored in RAM. Range: 10-50.", + "format": "int32", + "example": 20 + }, "commandType": { "type": "string", "readOnly": true @@ -10457,6 +11951,10 @@ "resp2", "resp3" ] + }, + "enableDefaultUser": { + "type": "boolean", + "description": "Optional. When 'true', allows connecting to the database with the 'default' user. When 'false', only defined access control users can connect to the database. If set, 'globalEnableDefaultUser' will not apply to this region." } }, "description": "Optional. A list of regions and local settings to update." @@ -10542,6 +12040,29 @@ } ] }, + "BaseSubscriptionUpdateRequest": { + "type": "object", + "properties": { + "subscriptionId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "commandType": { + "type": "string", + "readOnly": true + } + }, + "description": "Subscription update request message", + "oneOf": [ + { + "$ref": "#/components/schemas/SubscriptionUpdateRequest" + }, + { + "$ref": "#/components/schemas/SubscriptionUpdateCMKRequest" + } + ] + }, "Regions": { "type": "object", "properties": { @@ -10564,148 +12085,289 @@ "example": { "regions": [ { + "id": 1, "name": "us-east-1", "provider": "AWS" }, { + "id": 2, "name": "us-west-1", "provider": "AWS" }, { + "id": 3, "name": "us-west-2", "provider": "AWS" }, { + "id": 4, "name": "eu-west-1", "provider": "AWS" }, { + "id": 29, "name": "eu-central-1", "provider": "AWS" }, { - "name": "ap-northeast-1", + "id": 7, + "name": "sa-east-1", "provider": "AWS" }, { - "name": "ap-southeast-1", + "id": 63, + "name": "ca-central-1", "provider": "AWS" }, { - "name": "ap-southeast-2", + "id": 62, + "name": "eu-north-1", "provider": "AWS" }, { - "name": "sa-east-1", + "id": 61, + "name": "eu-west-3", + "provider": "AWS" + }, + { + "id": 60, + "name": "eu-west-2", "provider": "AWS" }, { + "id": 59, "name": "us-east-2", "provider": "AWS" }, { - "name": "eu-west-2", + "id": 64, + "name": "ap-east-1", "provider": "AWS" }, { - "name": "eu-west-3", + "id": 146, + "name": "ap-southeast-5", "provider": "AWS" }, { - "name": "eu-north-1", + "id": 30, + "name": "ap-south-1", "provider": "AWS" }, { - "name": "ca-central-1", + "id": 117, + "name": "ap-northeast-3", "provider": "AWS" }, { - "name": "ap-east-1", + "id": 116, + "name": "ap-northeast-2", "provider": "AWS" }, { - "name": "ap-south-1", + "id": 145, + "name": "ap-southeast-7", + "provider": "AWS" + }, + { + "id": 6, + "name": "ap-northeast-1", + "provider": "AWS" + }, + { + "id": 5, + "name": "ap-southeast-1", + "provider": "AWS" + }, + { + "id": 15, + "name": "ap-southeast-2", + "provider": "AWS" + }, + { + "id": 132, + "name": "il-central-1", "provider": "AWS" }, { + "id": 144, + "name": "mx-central-1", + "provider": "AWS" + }, + { + "id": 32, "name": "asia-east1", "provider": "GCP" }, { + "id": 67, "name": "asia-east2", "provider": "GCP" }, { + "id": 33, "name": "asia-northeast1", "provider": "GCP" }, { + "id": 104, "name": "asia-northeast2", "provider": "GCP" }, { + "id": 69, "name": "asia-south1", "provider": "GCP" }, { + "id": 34, "name": "asia-southeast1", "provider": "GCP" }, { + "id": 71, "name": "australia-southeast1", "provider": "GCP" }, { + "id": 72, "name": "europe-north1", "provider": "GCP" }, { + "id": 35, "name": "europe-west1", "provider": "GCP" }, { + "id": 74, "name": "europe-west2", "provider": "GCP" }, { + "id": 128, + "name": "asia-southeast2", + "provider": "GCP" + }, + { + "id": 75, "name": "europe-west3", "provider": "GCP" }, { + "id": 36, "name": "europe-west4", "provider": "GCP" }, { + "id": 133, + "name": "europe-west10", + "provider": "GCP" + }, + { + "id": 130, + "name": "europe-southwest1", + "provider": "GCP" + }, + { + "id": 134, + "name": "europe-west8", + "provider": "GCP" + }, + { + "id": 113, "name": "europe-west6", "provider": "GCP" }, { + "id": 129, + "name": "me-west1", + "provider": "GCP" + }, + { + "id": 135, + "name": "europe-west9", + "provider": "GCP" + }, + { + "id": 77, "name": "northamerica-northeast1", "provider": "GCP" }, { - "name": "southamerica-east1", + "id": 136, + "name": "europe-west12", + "provider": "GCP" + }, + { + "id": 137, + "name": "europe-central2", + "provider": "GCP" + }, + { + "id": 131, + "name": "northamerica-northeast2", "provider": "GCP" }, { + "id": 138, + "name": "me-central2", + "provider": "GCP" + }, + { + "id": 139, + "name": "me-central1", + "provider": "GCP" + }, + { + "id": 140, + "name": "us-east5", + "provider": "GCP" + }, + { + "id": 141, + "name": "us-south1", + "provider": "GCP" + }, + { + "id": 27, "name": "us-central1", "provider": "GCP" }, { + "id": 38, "name": "us-east1", "provider": "GCP" }, { + "id": 39, "name": "us-east4", "provider": "GCP" }, { + "id": 40, "name": "us-west1", "provider": "GCP" }, { + "id": 82, "name": "us-west2", "provider": "GCP" + }, + { + "id": 142, + "name": "southamerica-west1", + "provider": "GCP" + }, + { + "id": 95, + "name": "southamerica-east1", + "provider": "GCP" + }, + { + "id": 143, + "name": "africa-south1", + "provider": "GCP" } ] } @@ -10869,7 +12531,7 @@ "cloudAccounts": [ { "id": 1, - "name": "Redis Labs Internal Resources", + "name": "Redis Internal Resources", "provider": "AWS", "status": "active", "links": [] @@ -10900,6 +12562,55 @@ ] } }, + "PrivateLinkActiveActivePrincipalsCreateRequest": { + "required": [ + "principal", + "regionId" + ], + "type": "object", + "properties": { + "subscriptionId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "regionId": { + "type": "integer", + "description": "Deployment region id as defined by cloud provider", + "format": "int32", + "readOnly": true, + "example": 27 + }, + "principal": { + "type": "string", + "description": "AWS account ID or ARN of the principal (IAM user, role, or account)", + "example": "123456789012" + }, + "type": { + "type": "string", + "description": "Type of the principal", + "example": "aws_account", + "enum": [ + "aws_account", + "organization", + "organization_unit", + "iam_role", + "iam_user", + "service_principal" + ] + }, + "alias": { + "type": "string", + "description": "Alias or friendly name for the principal", + "example": "Production Account" + }, + "commandType": { + "type": "string", + "readOnly": true + } + }, + "description": "Request to add a principal to private link for Active-Active subscription" + }, "VpcPeeringUpdateAwsRequest": { "type": "object", "properties": { @@ -11099,7 +12810,8 @@ }, "redisRule": { "type": "string", - "description": "Optional. Changes the Redis ACL rule pattern. See [ACL syntax](https://redis.io/docs/latest/operate/rc/security/access-control/data-access-control/configure-acls/#define-permissions-with-acl-syntax) to learn how to define rules." + "description": "Optional. Changes the Redis ACL rule pattern. See [ACL syntax](https://redis.io/docs/latest/operate/rc/security/access-control/data-access-control/configure-acls/#define-permissions-with-acl-syntax) to learn how to define rules.", + "example": "+set allkeys allchannels" }, "commandType": { "type": "string", @@ -11149,6 +12861,12 @@ "signInLoginUrl": { "type": "string" }, + "awsUserArn": { + "type": "string" + }, + "awsConsoleRoleArn": { + "type": "string" + }, "links": { "type": "array", "items": { @@ -11169,7 +12887,7 @@ "description": "RedisLabs Cloud Account information", "example": { "id": 1, - "name": "Redis Labs Internal Resources", + "name": "Redis Internal Resources", "provider": "AWS", "status": "active", "links": [ @@ -11181,6 +12899,47 @@ ] } }, + "PrivateLinkPrincipalsCreateRequest": { + "required": [ + "principal" + ], + "type": "object", + "properties": { + "subscriptionId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "principal": { + "type": "string", + "description": "AWS account ID or ARN of the principal (IAM user, role, or account)", + "example": "123456789012" + }, + "type": { + "type": "string", + "description": "Type of the principal", + "example": "aws_account", + "enum": [ + "aws_account", + "organization", + "organization_unit", + "iam_role", + "iam_user", + "service_principal" + ] + }, + "alias": { + "type": "string", + "description": "Alias or friendly name for the principal", + "example": "Production Account" + }, + "commandType": { + "type": "string", + "readOnly": true + } + }, + "description": "Private Link principals create request" + }, "FixedSubscriptionUpdateRequest": { "type": "object", "properties": { @@ -11212,32 +12971,164 @@ "description": "Optional. The payment method ID you'd like to use for this subscription. Must be a valid payment method ID for this account. Use GET /payment-methods to get a list of payment methods for your account. This value is optional if ‘paymentMethod’ is ‘marketplace’, but required if 'paymentMethod' is 'credit-card'.", "format": "int32" }, - "commandType": { + "commandType": { + "type": "string", + "readOnly": true + } + }, + "description": "Essentials subscription update request" + }, + "SearchScalingFactorsData": { + "type": "object", + "properties": { + "queryPerformanceFactors": { + "type": "array", + "items": { + "type": "string" + } + }, + "links": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": { + "type": "object" + } + } + } + } + }, + "SubscriptionUpdateCMKRequest": { + "required": [ + "customerManagedKeys" + ], + "type": "object", + "properties": { + "subscriptionId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "commandType": { + "type": "string", + "readOnly": true + }, + "deletionGracePeriod": { + "type": "string", + "description": "Optional. The grace period for deleting the subscription. If not set, will default to immediate deletion grace period.", + "example": "alerts-only", + "enum": [ + "alerts-only", + "immediate", + "15-minutes", + "30-minutes", + "1-hour", + "4-hours", + "8-hours", + "12-hours", + "24-hours" + ] + }, + "customerManagedKeys": { + "type": "array", + "description": "The customer managed keys (CMK) to use for this subscription. If is active-active subscription, must set a key for each region.", + "items": { + "$ref": "#/components/schemas/CustomerManagedKey" + } + } + }, + "description": "Subscription update request message" + }, + "CostReportCreateRequest": { + "required": [ + "endDate", + "startDate" + ], + "type": "object", + "properties": { + "startDate": { + "type": "string", + "description": "Filter for usage starting on or after this date. Must be in format YYYY-MM-DD", + "format": "YYYY-MM-DD", + "example": "2025-10-01" + }, + "endDate": { + "type": "string", + "description": "Filter for usage ending on or before this date. Must be in format YYYY-MM-DD and must be after start date", + "format": "YYYY-MM-DD", + "example": "2025-11-06" + }, + "format": { + "type": "string", + "description": "Output format for the cost report", + "example": "csv", + "default": "csv", + "enum": [ + "json", + "csv" + ] + }, + "subscriptionIds": { + "type": "array", + "description": "Array of subscriptionIDs to filter by", + "example": [ + 123, + 456 + ], + "items": { + "type": "integer", + "description": "Array of subscriptionIDs to filter by", + "format": "int32" + } + }, + "databaseIds": { + "type": "array", + "description": "Array of database IDs to filter by", + "example": [ + 789, + 101112 + ], + "items": { + "type": "integer", + "description": "Array of database IDs to filter by", + "format": "int32" + } + }, + "subscriptionType": { "type": "string", - "readOnly": true - } - }, - "description": "Essentials subscription update request" - }, - "SearchScalingFactorsData": { - "type": "object", - "properties": { - "queryPerformanceFactors": { + "description": "Filter by plan type", + "example": "pro", + "enum": [ + "pro", + "essentials" + ] + }, + "regions": { "type": "array", + "description": "Array of regions to filter by", + "example": [ + "us-east-1", + "eu-west-1" + ], "items": { - "type": "string" + "type": "string", + "description": "Array of regions to filter by", + "example": "[\"us-east-1\",\"eu-west-1\"]" } }, - "links": { + "tags": { "type": "array", + "description": "Array of key-value pairs for tag filtering", "items": { - "type": "object", - "additionalProperties": { - "type": "object" - } + "$ref": "#/components/schemas/Tag" } + }, + "commandType": { + "type": "string", + "readOnly": true } - } + }, + "description": "Cost report generation request" }, "AccountSubscriptionDatabases": { "type": "object", @@ -11694,6 +13585,10 @@ "resource": { "type": "string" }, + "resourceId": { + "type": "integer", + "format": "int32" + }, "type": { "type": "string" }, @@ -12006,7 +13901,7 @@ "time": "2022-10-12T10:54:31Z", "originator": "example-value", "type": "Account", - "description": "example-value (example.value@redislabs.com)'s user name was changed to Example Value" + "description": "example-value (example.value@redis.com)'s user name was changed to Example Value" }, { "id": 2900348, @@ -12115,6 +14010,18 @@ } } }, + "ResourceTag": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "description": "Optional. A list of resource tags to apply to the subscription. (max. 30 tags)." + }, "CustomerManagedKeyAccessDetails": { "type": "object", "properties": { @@ -12132,6 +14039,18 @@ "items": { "type": "string" } + }, + "redisIamRole": { + "type": "string" + }, + "requiredKeyPolicyStatements": { + "type": "object" + }, + "deletionGracePeriodOptions": { + "type": "array", + "items": { + "type": "string" + } } }, "description": "Configuration regarding customer managed persistent storage encryption" @@ -12224,6 +14143,26 @@ } } }, + "Tag": { + "required": [ + "key", + "value" + ], + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Tag key", + "example": "environment" + }, + "value": { + "type": "string", + "description": "Tag value", + "example": "production" + } + }, + "description": "Tag filter for cost report" + }, "AccountSubscriptions": { "type": "object", "properties": { @@ -12251,6 +14190,7 @@ "status": "active", "deploymentType": "single-region", "paymentMethodId": 123, + "publicEndpointAccess": true, "memoryStorage": "ram", "numberOfDatabases": 6, "paymentMethodType": "credit-card", @@ -12269,6 +14209,7 @@ "cloudDetails": [ { "provider": "AWS", + "awsAccountId": "550680565604", "cloudAccountId": 1666, "totalSizeInGb": 0.0272, "regions": [ @@ -13427,6 +15368,17 @@ }, "description": "Database tag" }, + "BdbAvailableVersionsResponse": { + "type": "object", + "properties": { + "targets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TargetVersion" + } + } + } + }, "SubscriptionSpec": { "required": [ "regions" @@ -13454,6 +15406,13 @@ "items": { "$ref": "#/components/schemas/SubscriptionRegionSpec" } + }, + "resourceTags": { + "type": "array", + "description": "Optional. A list of resource tags to apply to the subscription. (max. 30 tags).", + "items": { + "$ref": "#/components/schemas/ResourceTag" + } } }, "description": "Cloud provider, region, and networking details." @@ -13504,7 +15463,7 @@ "example": {} } }, - "description": "Optional. Redis advanced capabilities (also known as modules) to be provisioned in the database. Use GET /database-modules to get a list of available advanced capabilities." + "description": "Optional. Redis advanced capabilities (also known as modules) to be provisioned in the database. Use GET /database-modules to get a list of available advanced capabilities. Don't specify modules for database versions 8 and above. All capabilities are bundled in the database by default." }, "FixedSubscriptionCreateRequest": { "required": [ @@ -13544,20 +15503,29 @@ "description": "Essentials subscription create request" }, "SubscriptionRegionNetworkingSpec": { - "required": [ - "deploymentCIDR" - ], "type": "object", "properties": { "deploymentCIDR": { "type": "string", - "description": "Required for Active-Active subscriptions. Deployment CIDR mask. Must be a valid CIDR format with a range of 256 IP addresses. Default for single-region subscriptions: If using Redis internal cloud account, 192.168.0.0/24", + "description": "Optional. Deployment CIDR mask. Must be a valid CIDR format with a range of 256 IP addresses. Default for single-region subscriptions: If using Redis internal cloud account, 192.168.0.0/24", "example": "10.0.0.0/24" }, "vpcId": { "type": "string", "description": "Optional. Enter a VPC identifier that exists in the hosted AWS account. Creates a new VPC if not set. VPC Identifier must be in a valid format (for example: 'vpc-0125be68a4625884ad') and must exist within the hosting account.", "example": "" + }, + "subnetIds": { + "type": "array", + "description": "Optional. Enter a list of subnets identifiers that exists in the hosted AWS account. Subnet Identifier must exist within the hosting account.", + "items": { + "type": "string", + "description": "Optional. Enter a list of subnets identifiers that exists in the hosted AWS account. Subnet Identifier must exist within the hosting account." + } + }, + "securityGroupId": { + "type": "string", + "description": "Optional. Enter a security group identifier that exists in the hosted AWS account. Security group Identifier must be in a valid format (for example: 'sg-0125be68a4625884ad') and must exist within the hosting account." } }, "description": "Optional. Cloud networking details, per region. Required if creating an Active-Active subscription." @@ -13621,6 +15589,34 @@ ] } }, + "FixedDatabaseUpgradeRedisVersionRequest": { + "required": [ + "targetRedisVersion" + ], + "type": "object", + "properties": { + "databaseId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "subscriptionId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "targetRedisVersion": { + "type": "string", + "description": "The target Redis version the database will be upgraded to. Use GET /subscriptions/redis-versions to get a list of available Redis versions.", + "example": "7.4" + }, + "commandType": { + "type": "string", + "readOnly": true + } + }, + "description": "Upgrades the specified Essentials database to a later Redis version." + }, "CrdbUpdatePropertiesRequest": { "type": "object", "properties": { @@ -13702,6 +15698,10 @@ "type": "string", "description": "Optional. Changes the password used to access the database in all regions that don't set a local 'password'." }, + "globalEnableDefaultUser": { + "type": "boolean", + "description": "Optional. When 'true', allows connecting to the database with the 'default' user in all regions that don't set local 'enableDefaultUser'. When 'false', only defined access control users can connect to the database." + }, "globalSourceIp": { "type": "array", "description": "Optional. List of source IP addresses or subnet masks to whitelist in all regions that don't set local 'sourceIp' settings. If set, Redis clients will be able to connect to this database only from within the specified source IP addresses ranges. Example: ['192.168.10.0/32', '192.168.12.0/24']", @@ -13759,7 +15759,8 @@ }, "redisRule": { "type": "string", - "description": "Redis ACL rule pattern. See [ACL syntax](https://redis.io/docs/latest/operate/rc/security/access-control/data-access-control/configure-acls/#define-permissions-with-acl-syntax) to learn how to define rules." + "description": "Redis ACL rule pattern. See [ACL syntax](https://redis.io/docs/latest/operate/rc/security/access-control/data-access-control/configure-acls/#define-permissions-with-acl-syntax) to learn how to define rules.", + "example": "+set allkeys allchannels" }, "commandType": { "type": "string", @@ -13968,8 +15969,15 @@ }, "averageItemSizeInBytes": { "type": "integer", - "description": "Optional. Relevant only to ram-and-flash (also known as Auto Tiering) subscriptions. Estimated average size in bytes of the items stored in the database. Default: 1000", - "format": "int64" + "description": "Optional. Relevant only to ram-and-flash (also known as Redis-Flex/Auto-Tiering) subscriptions. Estimated average size in bytes of the items stored in the database. Default: 1000", + "format": "int64", + "deprecated": true + }, + "ramPercentage": { + "type": "integer", + "description": "Optional. Relevant only to ram-and-flash (also known as Redis-Flex/Auto-Tiering) subscriptions. The percentage of data to be stored in RAM. Range: 10-50. Default: 20", + "format": "int32", + "example": 20 }, "periodicBackupPath": { "type": "string", @@ -14025,7 +16033,7 @@ }, "modules": { "type": "array", - "description": "Optional. Redis advanced capabilities (also known as modules) to be provisioned in the database. Use GET /database-modules to get a list of available advanced capabilities.", + "description": "Optional. Redis advanced capabilities (also known as modules) to be provisioned in the database. Use GET /database-modules to get a list of available advanced capabilities. Don't specify modules for database versions 8 and above. All capabilities are bundled in the database by default.", "items": { "$ref": "#/components/schemas/DatabaseModuleSpec" } @@ -14054,6 +16062,10 @@ "Region": { "type": "object", "properties": { + "id": { + "type": "integer", + "format": "int32" + }, "name": { "type": "string" }, @@ -14089,12 +16101,12 @@ "role": { "type": "string", "description": "Optional. Changes the ACL role assigned to the user. Use GET '/acl/roles' to get a list of database access roles.", - "example": "Redis-role-example" + "example": "ACL-role-example" }, "password": { "type": "string", "description": "Optional. Changes the user's database password.", - "example": "some-random-password" + "example": "ab123AB$%^" }, "commandType": { "type": "string", @@ -14138,15 +16150,21 @@ "SUBSCRIPTION_IN_USE", "SUBSCRIPTION_CA_PROVIDER_MISMATCH", "SUBSCRIPTION_NETWORKING_MISSING", - "SUBSCRIPTION_NETWORKING_CIDR_MISSING", + "NETWORKING_CIDR_MISSING", "SUBSCRIPTION_INVALID_CIDR", + "NETWORKING_SECURITY_GROUP_MISSING", + "NETWORKING_SUBNET_IDS_MISSING", + "NETWORKING_VPC_ID_MISSING", + "NETWORKING_CIDR_IS_NOT_SUPPORTED", + "NETWORKING_VPC_WITH_SUBNETS_AND_SECURITY_GROUP_IS_NOT_SUPPORTED", + "NETWORKING_VPC_WITH_SUBNETS_AND_SECURITY_GROUP_IS_NOT_SUPPORTED_FOR_INTERNAL_CLOUD_ACCOUNT", + "INVALID_NUMBER_OF_SUBNET_IDS", "SUBSCRIPTION_PI_NOT_FOUND", "SUBSCRIPTION_INVALID_REGION_NAME", "SUBSCRIPTION_INVALID_REGION_ID", "SUBSCRIPTION_BAD_PREFERRED_AZ_SIZE", "SUBSCRIPTION_PREFERRED_AZ_INVALID_VALUE", "SUBSCRIPTION_PREFERRED_AZ_MUST_BE_DEFINED_ONCE", - "ACTIVE_ACTIVE_SUBSCRIPTION_PREFERRED_AZ_NOT_SUPPORTED", "SUBSCRIPTION_PREFERRED_AZ_IS_DISABLED", "SUBSCRIPTION_MUST_HAVE_AT_LEAST_ONE_DATABASE", "SUBSCRIPTION_REDIS_VERSION_INVALID_VALUE", @@ -14154,7 +16172,36 @@ "ACTIVE_ACTIVE_SUBSCRIPTION_PREVIEW_REDIS_VERSION_IS_NOT_SUPPORTED", "SUBSCRIPTION_GCP_ALLOW_ONLY_INTERNAL", "CLUSTER_UNDER_MAINTENANCE", - "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_TYPE_IS_NOT_SUPPORTED", + "ACTIVE_ACTIVE_SUBSCRIPTION_IS_NOT_SUPPORTED", + "RESOURCE_TAGS_EXCEEDS_MAXIMUM_COUNT", + "RESOURCE_TAG_KEY_EXCEEDS_MAXIMUM_LENGTH", + "RESOURCE_TAG_VALUE_EXCEEDS_MAXIMUM_LENGTH", + "RESOURCE_TAGS_NOT_ALLOWED_WITH_INTERNAL_CLOUD_ACCOUNT", + "RESOURCE_TAGS_NOT_ALLOWED", + "RESOURCE_TAGS_NAME_NOT_ALLOWED", + "RESOURCE_TAGS_EMPTY_KEY", + "RESOURCE_TAGS_DUPLICATE_KEY", + "RESOURCE_TAGS_MISSING_VALUE", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_IS_NOT_SUPPORTED", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_MISSING_USAGE_PERMISSIONS", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_MISSING_GET_KEY_PERMISSIONS", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_MISSING_GET_IAM_POLICY_PERMISSIONS", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_DISABLED_KEY", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_INVALID_KEY_NAME", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_WRONG_REGION", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_NOT_ALLOWED_WITH_CLOUD_PROVIDER_MANAGED_KEY", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_NOT_ALLOWED_WITH_INTERNAL_CLOUD_ACCOUNT", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_REQUIRED_FOR_EXTERNAL_CLOUD_ACCOUNT", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_NOT_PENDING", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_INVALID_NUMBER_OF_KEYS", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_REGION_NOT_REQUIRED", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_REGION_REQUIRED", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_MISSING_KEYS", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_INVALID_REGION", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_DUPLICATE_REGIONS", + "CUSTOMER_MANAGED_PERSISTENT_STORAGE_ENCRYPTION_KEY_INVALID_FORMAT", + "ACTIVE_ACTIVE_CREATE_A_REGION_CUSTOMER_MANAGED_KEY_RESOURCE_NAME_SUBSCRIPTION_IS_NOT_CUSTOMER_MANAGED", + "ACTIVE_ACTIVE_CREATE_A_REGION_CUSTOMER_MANAGED_KEY_RESOURCE_NAME_IS_NOT_SET", "PLANNED_SUBSCRIPTION_INVALID_PLAN_ID", "PLANNER_TIMEOUT", "PLANNER_FAILURE", @@ -14217,6 +16264,7 @@ "DATABASE_MODULE_MUST_BE_DEFINED_ONCE", "DATABASE_MEMCACHED_CONTAINS_MODULES", "DATABASE_MEMCACHED_NOT_SUPPORT_OSS_CLUSTER_API", + "REDIS_ON_FLASH_DATABASE_MEMCACHED_PROTOCOL_IS_NOT_ALLOWED", "DATABASE_MEMCACHED_CONTAINS_REDIS_PASSWORD", "DATABASE_MEMCACHED_CONTAINS_REDIS_DEFAULT_USER", "DATABASE_MEMCACHED_SASL_USERNAME_IS_BLANK", @@ -14224,6 +16272,12 @@ "DATABASE_MEMCACHED_SASL_PASSWORD_MAX_LENGTH", "DATABASE_REDIS_FLEX_CONTAINS_MODULES", "DATABASE_AVERAGE_ITEM_SIZE_NOT_ALLOWED", + "DATABASE_RAM_PERCENTAGE_NOT_ALLOWED", + "DATABASE_RAM_PERCENTAGE_NOT_SUPPORTED", + "DATABASE_RAM_PERCENTAGE_IS_INVALID", + "DATABASE_AVERAGE_ITEM_SIZE_IS_DEPRECATED", + "DATABASE_MEMORY_LIMIT_IS_INVALID_FOR_ROF", + "DATABASE_DATASET_SIZE_IS_INVALID_FOR_ROF", "DATABASE_SIZE_SMALLER_THAN_USAGE", "DATABASE_USAGE_EXCEEDS_GLOBAL_LIMIT", "DATABASE_USAGE_EXCEEDS_LOCAL_LIMIT", @@ -14238,6 +16292,7 @@ "DATABASE_INVALID_MODULE", "DATABASE_INVALID_MODULE_PARAMETER", "DATABASE_INVALID_MODULE_PARAMETER_VALUE", + "DATABASE_EXPLICIT_MODULES_NOT_SUPPORTED_FOR_THIS_REDIS_VERSION", "DATABASE_INVALID_ALERT_VALUE", "DATABASE_SHARDING_TYPE_IS_IMMUTABLE", "DATABASE_SHARDING_TYPE_IS_NOT_SUPPORTED", @@ -14287,10 +16342,13 @@ "DATABASE_PORT_INVALID_VALUE", "DATABASE_PORT_IS_UNAVAILABLE", "DATABASE_CUSTOM_PORT_NOT_SUPPORTED", + "DATABASE_CUSTOM_PORT_NOT_UNIQUE", "DATABASE_AVERAGE_ITEM_SIZE_INVALID_VALUE", "DATABASE_REDIS_VERSION_IS_NOT_SUPPORTED", "DATABASE_REDIS_VERSION_IS_NOT_SUPPORTED_FOR_MEMCACHED", + "DATABASE_REDIS_VERSION_IS_REQUIRED", "DATABASE_REDIS_VERSION_INVALID_VALUE", + "CONNECTIVITY_REQUESTS_ON_CUSTOMER_MANAGED_VPC_SUBSCRIPTION", "VPC_PEERING_NOT_ACTIVE", "VPC_PEERING_GENERAL_ERROR", "VPC_PEERING_INVALID_ACCOUNT", @@ -14373,6 +16431,10 @@ "CIDR_WHITELIST_DUPLICATE_CIDRS", "CIDR_WHITELIST_DUPLICATE_SG", "CIDR_WHITELIST_NOT_ALLOWED", + "CLIENT_PUBLIC_ACCESS_INVALID_SOURCE_IPS", + "CLIENT_PUBLIC_ACCESS_NOT_SUPPORTED", + "CLIENT_PUBLIC_ACCESS_ALREADY_SET", + "CLIENT_PUBLIC_ACCESS_ON_NON_HOSTED", "AWS_ERROR_INSTANCE_LIMIT_EXCEEDED", "AWS_ERROR_VPC_LIMIT_EXCEEDED", "AWS_ERROR_INSUFFICIENT_INSTANCE_CAPACITY", @@ -14396,7 +16458,6 @@ "ACTIVE_ACTIVE_CREATE_A_REGION_MUST_BE_DEFINED_ONCE_PER_DATABASE", "ACTIVE_ACTIVE_CREATE_A_REGION_DATABASE_RESP_VERSION_IS_NOT_SUPPORTED", "TOO_MANY_LOCAL_THROUGHPUT_MEASUREMENTS_DEFINED_FOR_SPECIFIED_ACTIVE_ACTIVE_SUBSCRIPTION", - "ACTIVE_ACTIVE_EXTERNAL_CA_NOT_SUPPORTED", "ACTIVE_ACTIVE_RAM_AND_FLASH_MEMORY_STORAGE_NOT_SUPPORTED", "ACTIVE_ACTIVE_DATABASE_MODULE_IS_NOT_SUPPORTED", "ACTIVE_ACTIVE_DATABASE_MODULES_IS_NOT_SUPPORTED", @@ -14450,6 +16511,8 @@ "UPDATING_A_SINGLE_REGION_VPC_PEERING_IS_NOT_ALLOWED_WITH_ACTIVE_ACTIVE_SUBSCRIPTION", "DELETING_SINGLE_REGION_VPC_PEERING_IS_NOT_ALLOWED_WITH_ACTIVE_ACTIVE_SUBSCRIPTION", "GETTING_SINGLE_REGION_VPC_PEERINGS_IS_NOT_ALLOWED_WITH_ACTIVE_ACTIVE_SUBSCRIPTION", + "ACTIVE_ACTIVE_DATABASE_LIMIT_EXCEEDED", + "ACTIVE_ACTIVE_REGION_LIMIT_REACHED", "FIXED_DATABASE_NAME_IS_MISSING", "CREATING_FIXED_DATABASE_NOT_ALLOWED_WITH_A_FLEXIBLE_SUBSCRIPTION", "UPDATING_FIXED_DATABASE_NOT_ALLOWED_WITH_A_FLEXIBLE_SUBSCRIPTION", @@ -14493,6 +16556,8 @@ "FIXED_DATABASE_NUMBER_OF_SHARDS_SUPPORTED_ONLY_FOR_PAY_AS_YOU_GO", "FIXED_DATABASE_NUMBER_OF_SHARDS_NOT_A_MULTIPLE_OF_CURRENT_VALUE", "VPC_ID_NOT_ALLOWED_WITH_INTERNAL_CLOUD_ACCOUNT", + "SUBNET_ID_NOT_ALLOWED_WITH_INTERNAL_CLOUD_ACCOUNT", + "SECURITY_GROUP_ID_NOT_ALLOWED_WITH_INTERNAL_CLOUD_ACCOUNT", "CLIENT_SSL_CERTIFICATE_IS_NOT_ALLOWED_WITHOUT_ENABLE_TLS_IS_TRUE", "MARKETPLACE_PAYMENT_INFO_COLLISION", "ACCOUNT_MARKETPLACE_IS_NOT_ACTIVE", @@ -14600,6 +16665,7 @@ "DATABASE_NAME_CHANGE_NOT_SUPPORTED", "DATABASE_INVALID_LOCATION_BACKUP", "DATABASE_GENERAL_ERROR_BACKUP", + "CLUSTER_COMMUNICATION_ERROR", "MAINTENANCE_WINDOW_INVALID_MAINTENANCE_WINDOW_SPEC_PROVIDED", "MAINTENANCE_WINDOW_INVALID_MAINTENANCE_WINDOW_MODE_PROVIDED", "MAINTENANCE_WINDOW_MANUAL_MODE_WITH_NO_MAINTENANCE_WINDOWS", @@ -14620,7 +16686,39 @@ "DATABASE_REPLICA_OF_INCOMPATIBLE_VERSION", "DATABASE_UPGRADE_FAILED", "DATABASE_INVALID_PLAN_TYPE", - "DATABASE_UPGRADE_IS_NOT_SUPPORTED" + "DATABASE_UPGRADE_IS_NOT_SUPPORTED", + "ACTIVE_ACTIVE_EXTERNAL_ACCOUNTS_NOT_SUPPORTED", + "ACTIVE_ACTIVE_MULTIPLE_CLOUD_ACCOUNTS_NOT_SUPPORTED", + "ACTIVE_ACTIVE_GCP_EXTERNAL_CLOUD_ACCOUNT_NOT_SUPPORTED", + "DEDICATED_SUBSCRIPTION_PREFERRED_AZ_INVALID_VALUE", + "DEDICATED_SUBSCRIPTION_INVALID_INSTANCE_NAME", + "DEDICATED_SUBSCRIPTION_INVALID_REPLICATION", + "PRIVATE_LINK_NOT_FOUND", + "PRIVATE_LINK_ALREADY_EXISTS", + "PRIVATE_LINK_PRINCIPAL_ALREADY_EXISTS", + "PRIVATE_LINK_PRINCIPAL_NOT_FOUND", + "PRIVATE_LINK_PRINCIPAL_INVALID_PRINCIPLE", + "PRIVATE_LINK_CLOUD_PROVIDER_NOT_SUPPORTED", + "PRIVATE_LINK_GET_A_FLEXIBLE_SUBSCRIPTION_PRIVATE_LINK_IS_NOT_ALLOWED_WITH_AN_ACTIVE_ACTIVE_SUBSCRIPTION", + "PRIVATE_LINK_GET_AN_ACTIVE_ACTIVE_SUBSCRIPTION_PRIVATE_LINK_IS_NOT_ALLOWED_WITH_A_SINGLE_REGION_SUBSCRIPTION", + "PRIVATE_LINK_CREATING_PRINCIPLES_IS_NOT_ALLOWED_WITH_AN_ACTIVE_ACTIVE_SUBSCRIPTION", + "PRIVATE_LINK_CREATING_PRINCIPLES_IS_NOT_ALLOWED_WITH_A_SINGLE_REGION_SUBSCRIPTION", + "PRIVATE_LINK_DELETING_A_FLEXIBLE_SUBSCRIPTION_PRINCIPALS_IS_NOT_ALLOWED_WITH_AN_ACTIVE_ACTIVE_SUBSCRIPTION", + "PRIVATE_LINK_DELETING_AN_ACTIVE_ACTIVE_SUBSCRIPTION_PRINCIPALS_IS_NOT_ALLOWED_WITH_A_SINGLE_REGION_SUBSCRIPTION", + "PRIVATE_LINK_CREATE_A_FLEXIBLE_SUBSCRIPTION_PRIVATE_LINK_IS_NOT_ALLOWED_WITH_AN_ACTIVE_ACTIVE_SUBSCRIPTION", + "PRIVATE_LINK_CREATE_AN_ACTIVE_ACTIVE_SUBSCRIPTION_PRIVATE_LINK_IS_NOT_ALLOWED_WITH_A_SINGLE_REGION_SUBSCRIPTION", + "PRIVATE_LINK_DELETING_A_FLEXIBLE_SUBSCRIPTION_PRIVATE_LINK_IS_NOT_ALLOWED_WITH_AN_ACTIVE_ACTIVE_SUBSCRIPTION", + "PRIVATE_LINK_DELETING_AN_ACTIVE_ACTIVE_SUBSCRIPTION_PRIVATE_LINK_IS_NOT_ALLOWED_WITH_A_SINGLE_REGION_SUBSCRIPTION", + "PRIVATE_LINK_IS_NOT_SUPPORTED", + "PRIVATE_LINK_SERVICE_ERROR", + "COST_REPORT_IS_NOT_SUPPORTED", + "COST_REPORT_START_DATE_IS_MISSING", + "COST_REPORT_END_DATE_IS_MISSING", + "COST_REPORT_INVALID_DATE_FORMAT", + "COST_REPORT_END_DATE_BEFORE_START_DATE", + "COST_REPORT_DATE_RANGE_EXCEEDS_LIMIT", + "COST_REPORT_TAG_KEY_EMPTY", + "COST_REPORT_TAG_VALUE_EMPTY" ] }, "additionalInfo": { @@ -14903,6 +17001,17 @@ }, "description": "Optional. Changes Remote backup configuration details." }, + "DynamicEndpoints": { + "type": "object", + "properties": { + "public": { + "type": "string" + }, + "private": { + "type": "string" + } + } + }, "CrdbFlushRequest": { "type": "object", "properties": { @@ -15046,13 +17155,16 @@ }, "persistentStorageEncryptionType": { "type": "string", - "description": "Optional. Persistent storage encryption secures data-at-rest for database persistence. You can use 'cloud-provider-managed-key' or 'customer-managed-key'. Default: 'cloud-provider-managed-key'", + "description": "Optional. Persistent storage encryption secures data at rest for database persistence. By default, disk storage is encrypted by keys managed by the cloud provider. Use 'customer-managed-key' if you want to use self-managed persistent storage encryption keys. Default: 'cloud-provider-managed-key'", "example": "cloud-provider-managed-key", "enum": [ "cloud-provider-managed-key", "customer-managed-key" ] }, + "persistentStorageEncryptionKeys": { + "$ref": "#/components/schemas/CustomerManagedKeyProperties" + }, "cloudProviders": { "type": "array", "description": "Cloud provider, region, and networking details.", @@ -15069,8 +17181,13 @@ }, "redisVersion": { "type": "string", - "description": "Optional. Defines the Redis version of the databases in the subscription. If not set, the Redis version for your databases will be the default version. Use GET /subscriptions/redis-versions to get a list of available Redis versions.", - "example": "7.2" + "description": "Optional. Defines the Redis version of the databases created in this specific request. It doesn't determine future databases associated with this subscription. If not set, databases will use the default Redis version. This field is deprecated and will be removed in a future API version - use the database-level redisVersion property instead.", + "example": "7.2", + "deprecated": true + }, + "publicEndpointAccess": { + "type": "boolean", + "description": "Optional. When 'false', all databases on this subscription will reject any connection attempt to the public endpoint and any connection attempt to the private endpoint that does not come from an IP address in the private address space defined in [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918#section-3 ). You must use a [private connectivity method](https://redis.io/docs/latest/operate/rc/security/database-security/block-public-endpoints/#private-connectivity-methods ) to connect to a database with a blocked public endpoint. Default: 'true'." }, "commandType": { "type": "string", @@ -15141,6 +17258,56 @@ }, "description": "Cloud Account definition" }, + "PrivateLinkCreateRequest": { + "required": [ + "principal", + "shareName", + "type" + ], + "type": "object", + "properties": { + "subscriptionId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "shareName": { + "maxLength": 64, + "minLength": 0, + "type": "string", + "description": "Name of the resource share", + "example": "my-redis-share" + }, + "principal": { + "type": "string", + "description": "AWS account ID or ARN of the principal (IAM user, role, or account)", + "example": "123456789012" + }, + "type": { + "type": "string", + "description": "Type of the principal", + "example": "aws_account", + "enum": [ + "aws_account", + "organization", + "organization_unit", + "iam_role", + "iam_user", + "service_principal" + ] + }, + "alias": { + "type": "string", + "description": "Alias or friendly name for the principal", + "example": "Production Account" + }, + "commandType": { + "type": "string", + "readOnly": true + } + }, + "description": "Private Link create request" + }, "SubscriptionPricings": { "type": "object", "properties": { @@ -15199,6 +17366,37 @@ }, "description": "Optional. Changes Replica Of (also known as Active-Passive) configuration details." }, + "PrivateLinkActiveActivePrincipalsDeleteRequest": { + "required": [ + "principal", + "regionId" + ], + "type": "object", + "properties": { + "subscriptionId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "regionId": { + "type": "integer", + "description": "Deployment region id as defined by cloud provider", + "format": "int32", + "readOnly": true, + "example": 27 + }, + "principal": { + "type": "string", + "description": "An AWS account ID or ARN to remove from the private link", + "example": "123456789012" + }, + "commandType": { + "type": "string", + "readOnly": true + } + }, + "description": "Request to remove principals from private link for Active-Active subscription" + }, "DatabaseThroughputSpec": { "required": [ "by", @@ -15348,6 +17546,9 @@ "privateEndpoint": { "type": "string" }, + "dynamicEndpoints": { + "$ref": "#/components/schemas/DynamicEndpoints" + }, "links": { "type": "array", "items": { @@ -15514,10 +17715,25 @@ }, "description": "Upgrades the specified Pro database to a later Redis version." }, - "ActiveActiveRegionCreateRequest": { + "CustomerManagedKey": { "required": [ - "deploymentCIDR" + "resourceName" ], + "type": "object", + "properties": { + "resourceName": { + "type": "string", + "description": "The resource name of the customer managed key.", + "example": "projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" + }, + "region": { + "type": "string", + "description": "(Required for Active-Active subscriptions only) Region for the customer managed key as defined by the cloud provider." + } + }, + "description": "Object representing a customer managed key (CMK), along with the region it is associated to." + }, + "ActiveActiveRegionCreateRequest": { "type": "object", "properties": { "subscriptionId": { @@ -15529,11 +17745,39 @@ "type": "string", "description": "Name of region to add as defined by the cloud provider." }, + "vpcId": { + "type": "string", + "description": "Optional. Enter a VPC identifier that exists in the hosted AWS account. Creates a new VPC if not set. VPC Identifier must be in a valid format and must exist within the hosting account.", + "example": "vpc-0125be68a4625884ad" + }, "deploymentCIDR": { "type": "string", "description": "Deployment CIDR mask. Must be a valid CIDR format with a range of 256 IP addresses.", "example": "10.0.0.0/24" }, + "subnetIds": { + "type": "array", + "description": "Optional. Enter a list of subnets identifiers that exists in the hosted AWS account. Subnet Identifier must exist within the hosting account.", + "example": "['subnet-0125be68a4625884ad', 'subnet-0125be68a4625884ad','subnet-0125be68a4625884ad']", + "items": { + "type": "string", + "description": "Optional. Enter a list of subnets identifiers that exists in the hosted AWS account. Subnet Identifier must exist within the hosting account.", + "example": "['subnet-0125be68a4625884ad', 'subnet-0125be68a4625884ad','subnet-0125be68a4625884ad']" + } + }, + "securityGroupId": { + "type": "string", + "description": "Optional. Enter a security group identifier that exists in the hosted AWS account. Security group Identifier must be in a valid format (for example: 'sg-0125be68a4625884ad') and must exist within the hosting account.", + "example": "sg-0125be68a4625884ad" + }, + "preferredAvailabilityZones": { + "type": "array", + "description": "Optional. List the zone IDs for your preferred availability zones for the cloud provider and region.", + "items": { + "type": "string", + "description": "Optional. List the zone IDs for your preferred availability zones for the cloud provider and region." + } + }, "dryRun": { "type": "boolean", "description": "Optional. When 'false': Creates a deployment plan and deploys it, creating any resources required by the plan. When 'true': creates a read-only deployment plan, and does not create any resources. Default: 'false'", @@ -15556,6 +17800,11 @@ "resp3" ] }, + "customerManagedKeyResourceName": { + "type": "string", + "description": "Required for subscriptions where 'persistentStorageEncryptionType' is 'customer-managed-key'. The resource name of the customer-managed encryption key for the region.", + "example": "projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" + }, "commandType": { "type": "string", "readOnly": true @@ -15608,6 +17857,61 @@ }, "description": "Database import request" }, + "PrivateLinkPrincipalsDeleteRequest": { + "required": [ + "principal" + ], + "type": "object", + "properties": { + "subscriptionId": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "principal": { + "type": "string", + "description": "An AWS account ID or ARN to remove from the private link", + "example": "123456789012" + }, + "commandType": { + "type": "string", + "readOnly": true + } + }, + "description": "Private Link principals delete request" + }, + "CustomerManagedKeyProperties": { + "required": [ + "customerManagedKeys" + ], + "type": "object", + "properties": { + "customerManagedKeys": { + "type": "array", + "description": "The customer managed keys (CMK) to use for this subscription. If is active-active subscription, must set a key for each region.", + "items": { + "$ref": "#/components/schemas/CustomerManagedKey" + } + }, + "deletionGracePeriod": { + "type": "string", + "description": "Optional. The grace period for deleting the subscription. If not set, will default to immediate deletion grace period.", + "example": "alerts-only", + "enum": [ + "alerts-only", + "immediate", + "15-minutes", + "30-minutes", + "1-hour", + "4-hours", + "8-hours", + "12-hours", + "24-hours" + ] + } + }, + "description": "Optional. Contains information about the keys used for each region. Can be used only with external cloud account" + }, "VpcPeeringCreateBaseRequest": { "type": "object", "properties": { @@ -15640,6 +17944,11 @@ "type": "apiKey", "name": "x-api-secret-key", "in": "header" + }, + "X-Auth-Token": { + "type": "apiKey", + "name": "X-Auth-Token", + "in": "header" } } }