diff --git a/openapi.json b/openapi.json index 90a630ea4..699d59d85 100644 --- a/openapi.json +++ b/openapi.json @@ -235,6 +235,99 @@ "x-akamai": { "file-path": "parameters/username-path.yaml" } + }, + "x-filter-header": { + "description": "Specifies a JSON object to filter down the results. See [Filtering and sorting](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) for details.", + "in": "header", + "name": "X-Filter", + "required": false, + "schema": { + "description": "Specifies the `X-Filter` header JSON object's filtering and sort criteria.", + "oneOf": [ + { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + { + "additionalProperties": false, + "properties": { + "+and": { + "description": "All conditions need to be true.", + "items": { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + "type": "array" + }, + "+contains": { + "description": "The provided string needs to be in the value.", + "type": "string" + }, + "+gt": { + "description": "The value needs to be greater than the provided number.", + "type": "number" + }, + "+gte": { + "description": "The value needs to be greater than or equal to the provided number.", + "type": "number" + }, + "+lt": { + "description": "The value needs to be less than the provided number.", + "type": "number" + }, + "+lte": { + "description": "The value needs to be less than or equal to the provided number.", + "type": "number" + }, + "+neq": { + "description": "The provided string is left out of the results.", + "type": "string" + }, + "+or": { + "description": "At least one condition needs to be true.", + "items": { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + "type": "array" + }, + "+order": { + "default": "asc", + "description": "Sort in ascending (`asc`) or descending (`desc`) order. This defaults to `asc`. Requires `+order_by`.", + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "+order_by": { + "description": "Order results based on the provided attribute. The attribute needs to be filterable.", + "type": "string" + } + }, + "title": "Filter and sort criteria", + "type": "object" + } + ], + "x-akamai": { + "file-path": "schemas/x-filter.yaml" + } + }, + "x-akamai": { + "file-path": "parameters/x-filter-header.yaml" + } } }, "responses": { @@ -1696,7 +1789,7 @@ "description": "Account Invoice object.", "properties": { "billing_source": { - "description": "__Filterable__, __Read-only__ `akamai`: This Invoice was generated according to the terms of an agreement between the customer and Akamai.\n\n`linode`: This Invoice was generated according to the default terms, prices, and discounts.", + "description": "__Filterable__, __Read-only__ The source of service charges for this invoice. A value of `akamai` indicates an invoice generated according to the terms of an agreement between the customer and Akamai. A value of `linode` indicates an invoice was generated according to the default terms, prices, and discounts.", "enum": [ "akamai", "linode" @@ -2366,26 +2459,38 @@ "description": "Payment object response.", "properties": { "date": { - "description": "__Read-only__ When the Payment was made.", + "description": "__Filterable__, __Read-only__ When the payment was made.", "example": "2018-01-15T00:01:01", "format": "date-time", "readOnly": true, "type": "string", - "x-linode-cli-display": 2 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 2, + "x-linode-filterable": true }, "id": { - "description": "__Read-only__ The unique ID of the Payment.", + "description": "__Read-only__ The unique ID of the payment.", "example": 123, "readOnly": true, "type": "integer", "x-linode-cli-display": 1 }, "usd": { - "description": "__Read-only__ The amount, in US dollars, of the Payment.", + "description": "__Filterable__, __Read-only__ The amount, in US dollars, of the payment.", "example": "120.50", "readOnly": true, "type": "integer", - "x-linode-cli-display": 3 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 3, + "x-linode-filterable": true } }, "type": "object", @@ -5463,7 +5568,7 @@ "description": "Account Invoice object.", "properties": { "billing_source": { - "description": "__Filterable__, __Read-only__ `akamai`: This Invoice was generated according to the terms of an agreement between the customer and Akamai.\n\n`linode`: This Invoice was generated according to the default terms, prices, and discounts.", + "description": "__Filterable__, __Read-only__ The source of service charges for this invoice. A value of `akamai` indicates an invoice generated according to the terms of an agreement between the customer and Akamai. A value of `linode` indicates an invoice was generated according to the default terms, prices, and discounts.", "enum": [ "akamai", "linode" @@ -6163,26 +6268,38 @@ "description": "Payment object response.", "properties": { "date": { - "description": "__Read-only__ When the Payment was made.", + "description": "__Filterable__, __Read-only__ When the payment was made.", "example": "2018-01-15T00:01:01", "format": "date-time", "readOnly": true, "type": "string", - "x-linode-cli-display": 2 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 2, + "x-linode-filterable": true }, "id": { - "description": "__Read-only__ The unique ID of the Payment.", + "description": "__Read-only__ The unique ID of the payment.", "example": 123, "readOnly": true, "type": "integer", "x-linode-cli-display": 1 }, "usd": { - "description": "__Read-only__ The amount, in US dollars, of the Payment.", + "description": "__Filterable__, __Read-only__ The amount, in US dollars, of the payment.", "example": "120.50", "readOnly": true, "type": "integer", - "x-linode-cli-display": 3 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 3, + "x-linode-filterable": true } }, "type": "object", @@ -6877,6 +6994,98 @@ "x-akamai": { "file-path": "schemas/warning-object.yaml" } + }, + "x-filter": { + "description": "Specifies the `X-Filter` header JSON object's filtering and sort criteria.", + "oneOf": [ + { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + { + "additionalProperties": false, + "properties": { + "+and": { + "description": "All conditions need to be true.", + "items": { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + "type": "array" + }, + "+contains": { + "description": "The provided string needs to be in the value.", + "type": "string" + }, + "+gt": { + "description": "The value needs to be greater than the provided number.", + "type": "number" + }, + "+gte": { + "description": "The value needs to be greater than or equal to the provided number.", + "type": "number" + }, + "+lt": { + "description": "The value needs to be less than the provided number.", + "type": "number" + }, + "+lte": { + "description": "The value needs to be less than or equal to the provided number.", + "type": "number" + }, + "+neq": { + "description": "The provided string is left out of the results.", + "type": "string" + }, + "+or": { + "description": "At least one condition needs to be true.", + "items": { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + "type": "array" + }, + "+order": { + "default": "asc", + "description": "Sort in ascending (`asc`) or descending (`desc`) order. This defaults to `asc`. Requires `+order_by`.", + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "+order_by": { + "description": "Order results based on the provided attribute. The attribute needs to be filterable.", + "type": "string" + } + }, + "title": "Filter and sort criteria", + "type": "object" + } + ], + "x-akamai": { + "file-path": "schemas/x-filter.yaml" + } + }, + "x-filter-criteria": { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } } }, "securitySchemes": { @@ -6942,7 +7151,7 @@ "url": "https://www.apache.org/licenses/LICENSE-2.0.html" }, "title": "Akamai: Linode API", - "version": "4.210.0" + "version": "4.212.0" }, "openapi": "3.0.1", "paths": { @@ -11412,6 +11621,100 @@ }, "operationId": "get-events", "parameters": [ + { + "description": "Specifies a JSON object to filter down the results. See [Filtering and sorting](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) for details.", + "example": "{{X-Filter}}", + "in": "header", + "name": "X-Filter", + "required": false, + "schema": { + "description": "Specifies the `X-Filter` header JSON object's filtering and sort criteria.", + "oneOf": [ + { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + { + "additionalProperties": false, + "properties": { + "+and": { + "description": "All conditions need to be true.", + "items": { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + "type": "array" + }, + "+contains": { + "description": "The provided string needs to be in the value.", + "type": "string" + }, + "+gt": { + "description": "The value needs to be greater than the provided number.", + "type": "number" + }, + "+gte": { + "description": "The value needs to be greater than or equal to the provided number.", + "type": "number" + }, + "+lt": { + "description": "The value needs to be less than the provided number.", + "type": "number" + }, + "+lte": { + "description": "The value needs to be less than or equal to the provided number.", + "type": "number" + }, + "+neq": { + "description": "The provided string is left out of the results.", + "type": "string" + }, + "+or": { + "description": "At least one condition needs to be true.", + "items": { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + "type": "array" + }, + "+order": { + "default": "asc", + "description": "Sort in ascending (`asc`) or descending (`desc`) order. This defaults to `asc`. Requires `+order_by`.", + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "+order_by": { + "description": "Order results based on the provided attribute. The attribute needs to be filterable.", + "type": "string" + } + }, + "title": "Filter and sort criteria", + "type": "object" + } + ], + "x-akamai": { + "file-path": "schemas/x-filter.yaml" + } + }, + "x-akamai": { + "file-path": "parameters/x-filter-header.yaml" + } + }, { "description": "The page of a collection to return.", "example": "{{page}}", @@ -12811,13 +13114,107 @@ }, "/{apiVersion}/account/invoices": { "get": { - "description": "Returns a paginated list of Invoices against your Account.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli account invoices-list\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n account:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Returns a paginated list of invoices against your account.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli account invoices-list\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n account:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/get-invoices" }, "operationId": "get-invoices", "parameters": [ + { + "description": "Specifies a JSON object to filter down the results. See [Filtering and sorting](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) for details.", + "example": "{{X-Filter}}", + "in": "header", + "name": "X-Filter", + "required": false, + "schema": { + "description": "Specifies the `X-Filter` header JSON object's filtering and sort criteria.", + "oneOf": [ + { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + { + "additionalProperties": false, + "properties": { + "+and": { + "description": "All conditions need to be true.", + "items": { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + "type": "array" + }, + "+contains": { + "description": "The provided string needs to be in the value.", + "type": "string" + }, + "+gt": { + "description": "The value needs to be greater than the provided number.", + "type": "number" + }, + "+gte": { + "description": "The value needs to be greater than or equal to the provided number.", + "type": "number" + }, + "+lt": { + "description": "The value needs to be less than the provided number.", + "type": "number" + }, + "+lte": { + "description": "The value needs to be less than or equal to the provided number.", + "type": "number" + }, + "+neq": { + "description": "The provided string is left out of the results.", + "type": "string" + }, + "+or": { + "description": "At least one condition needs to be true.", + "items": { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + "type": "array" + }, + "+order": { + "default": "asc", + "description": "Sort in ascending (`asc`) or descending (`desc`) order. This defaults to `asc`. Requires `+order_by`.", + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "+order_by": { + "description": "Order results based on the provided attribute. The attribute needs to be filterable.", + "type": "string" + } + }, + "title": "Filter and sort criteria", + "type": "object" + } + ], + "x-akamai": { + "file-path": "schemas/x-filter.yaml" + } + }, + "x-akamai": { + "file-path": "parameters/x-filter-header.yaml" + } + }, { "description": "The page of a collection to return.", "example": "{{page}}", @@ -12864,7 +13261,7 @@ "description": "Account Invoice object.", "properties": { "billing_source": { - "description": "__Filterable__, __Read-only__ `akamai`: This Invoice was generated according to the terms of an agreement between the customer and Akamai.\n\n`linode`: This Invoice was generated according to the default terms, prices, and discounts.", + "description": "__Filterable__, __Read-only__ The source of service charges for this invoice. A value of `akamai` indicates an invoice generated according to the terms of an agreement between the customer and Akamai. A value of `linode` indicates an invoice was generated according to the default terms, prices, and discounts.", "enum": [ "akamai", "linode" @@ -13111,7 +13508,7 @@ "description": "Account Invoice object.", "properties": { "billing_source": { - "description": "__Filterable__, __Read-only__ `akamai`: This Invoice was generated according to the terms of an agreement between the customer and Akamai.\n\n`linode`: This Invoice was generated according to the default terms, prices, and discounts.", + "description": "__Filterable__, __Read-only__ The source of service charges for this invoice. A value of `akamai` indicates an invoice generated according to the terms of an agreement between the customer and Akamai. A value of `linode` indicates an invoice was generated according to the default terms, prices, and discounts.", "enum": [ "akamai", "linode" @@ -17041,7 +17438,7 @@ }, "/{apiVersion}/account/payments": { "post": { - "description": "Makes a Payment to your Account.\n\n- The requested amount is charged to the default Payment Method if no `payment_method_id` is specified.\n\n- A `payment_submitted` event is generated when a payment is successfully submitted.\n\n__Parent and child accounts__\n\nIn a [parent and child account](https://www.linode.com/docs/guides/parent-child-accounts/) environment, the following apply:\n\n- Child account users can't run this operation. These users don't have access to billing-related operations.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli account payment-create \\\n --usd 120.50 \\\n --payment_method_id 123\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n account:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Makes a payment to your account.\n\n- The requested amount is charged to the default payment method if no `payment_method_id` is specified.\n\n- A `payment_submitted` event is generated when a payment is successfully submitted.\n\n__Parent and child accounts__\n\nIn a [parent and child account](https://www.linode.com/docs/guides/parent-child-accounts/) environment, the following apply:\n\n- Child account users can't run this operation. These users don't have access to billing-related operations.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli account payment-create \\\n --usd 120.50 \\\n --payment_method_id 123\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n account:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/post-payment" @@ -17075,7 +17472,7 @@ } } }, - "description": "Information about the Payment you are making.", + "description": "Information about the payment you're making.", "required": true }, "responses": { @@ -17087,26 +17484,38 @@ "description": "Payment object response.", "properties": { "date": { - "description": "__Read-only__ When the Payment was made.", + "description": "__Filterable__, __Read-only__ When the payment was made.", "example": "2018-01-15T00:01:01", "format": "date-time", "readOnly": true, "type": "string", - "x-linode-cli-display": 2 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 2, + "x-linode-filterable": true }, "id": { - "description": "__Read-only__ The unique ID of the Payment.", + "description": "__Read-only__ The unique ID of the payment.", "example": 123, "readOnly": true, "type": "integer", "x-linode-cli-display": 1 }, "usd": { - "description": "__Read-only__ The amount, in US dollars, of the Payment.", + "description": "__Filterable__, __Read-only__ The amount, in US dollars, of the payment.", "example": "120.50", "readOnly": true, "type": "integer", - "x-linode-cli-display": 3 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 3, + "x-linode-filterable": true } }, "type": "object", @@ -17226,13 +17635,107 @@ "x-linode-grant": "read_write" }, "get": { - "description": "Returns a paginated list of Payments made on this Account.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli account payments-list\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n account:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Returns a paginated list of payments made on this Account.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli account payments-list\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n account:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/get-payments" }, "operationId": "get-payments", "parameters": [ + { + "description": "Specifies a JSON object to filter down the results. See [Filtering and sorting](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) for details.", + "example": "{{X-Filter}}", + "in": "header", + "name": "X-Filter", + "required": false, + "schema": { + "description": "Specifies the `X-Filter` header JSON object's filtering and sort criteria.", + "oneOf": [ + { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + { + "additionalProperties": false, + "properties": { + "+and": { + "description": "All conditions need to be true.", + "items": { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + "type": "array" + }, + "+contains": { + "description": "The provided string needs to be in the value.", + "type": "string" + }, + "+gt": { + "description": "The value needs to be greater than the provided number.", + "type": "number" + }, + "+gte": { + "description": "The value needs to be greater than or equal to the provided number.", + "type": "number" + }, + "+lt": { + "description": "The value needs to be less than the provided number.", + "type": "number" + }, + "+lte": { + "description": "The value needs to be less than or equal to the provided number.", + "type": "number" + }, + "+neq": { + "description": "The provided string is left out of the results.", + "type": "string" + }, + "+or": { + "description": "At least one condition needs to be true.", + "items": { + "description": "Specify the name of the data field and the accompanying value.", + "title": "Simple filter", + "type": "object", + "x-akamai": { + "file-path": "schemas/x-filter-criteria.yaml" + } + }, + "type": "array" + }, + "+order": { + "default": "asc", + "description": "Sort in ascending (`asc`) or descending (`desc`) order. This defaults to `asc`. Requires `+order_by`.", + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "+order_by": { + "description": "Order results based on the provided attribute. The attribute needs to be filterable.", + "type": "string" + } + }, + "title": "Filter and sort criteria", + "type": "object" + } + ], + "x-akamai": { + "file-path": "schemas/x-filter.yaml" + } + }, + "x-akamai": { + "file-path": "parameters/x-filter-header.yaml" + } + }, { "description": "The page of a collection to return.", "example": "{{page}}", @@ -17279,26 +17782,38 @@ "description": "Payment object response.", "properties": { "date": { - "description": "__Read-only__ When the Payment was made.", + "description": "__Filterable__, __Read-only__ When the payment was made.", "example": "2018-01-15T00:01:01", "format": "date-time", "readOnly": true, "type": "string", - "x-linode-cli-display": 2 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 2, + "x-linode-filterable": true }, "id": { - "description": "__Read-only__ The unique ID of the Payment.", + "description": "__Read-only__ The unique ID of the payment.", "example": 123, "readOnly": true, "type": "integer", "x-linode-cli-display": 1 }, "usd": { - "description": "__Read-only__ The amount, in US dollars, of the Payment.", + "description": "__Filterable__, __Read-only__ The amount, in US dollars, of the payment.", "example": "120.50", "readOnly": true, "type": "integer", - "x-linode-cli-display": 3 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 3, + "x-linode-filterable": true } }, "type": "object", @@ -17337,7 +17852,7 @@ } } }, - "description": "Returns a paginated list of Payment objects." + "description": "Returns a paginated list of payment objects." }, "default": { "content": { @@ -17881,26 +18396,38 @@ "description": "Payment object response.", "properties": { "date": { - "description": "__Read-only__ When the Payment was made.", + "description": "__Filterable__, __Read-only__ When the payment was made.", "example": "2018-01-15T00:01:01", "format": "date-time", "readOnly": true, "type": "string", - "x-linode-cli-display": 2 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 2, + "x-linode-filterable": true }, "id": { - "description": "__Read-only__ The unique ID of the Payment.", + "description": "__Read-only__ The unique ID of the payment.", "example": 123, "readOnly": true, "type": "integer", "x-linode-cli-display": 1 }, "usd": { - "description": "__Read-only__ The amount, in US dollars, of the Payment.", + "description": "__Filterable__, __Read-only__ The amount, in US dollars, of the payment.", "example": "120.50", "readOnly": true, "type": "integer", - "x-linode-cli-display": 3 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 3, + "x-linode-filterable": true } }, "type": "object", @@ -23883,16 +24410,16 @@ }, "hosts": { "additionalProperties": false, - "description": "__Read-only__ The primary and secondary hosts for the Managed Database. These are assigned after provisioning is complete.", + "description": "__Read-only__ The primary hostname and secondary read-only hostname for the Managed Database. The API assigns these hostnames after it successfully creates the Managed Database.", "properties": { "primary": { - "description": "The primary host for the Managed Database.", + "description": "The primary hostname for the Managed Database.\n\n> \ud83d\udcd8\n>\n> - If you've configured the Managed Database to use a Virtual Private Cloud (VPC) via the `private_network` object ([MySQL](https://techdocs.akamai.com/linode-api/reference/post-databases-mysql-instances) / [PostgreSQL](https://techdocs.akamai.com/linode-api/reference/post-databases-postgre-sql-instances)), this hostname resolves to a private IPv4 address within that VPC subnet's address range. Currently, IPv6 addresses aren't supported in a VPC.\n>\n> - With `public_access` enabled in a `private_network`, a public version of this hostname is also available. Resolving this hostname returns _publicly_ routable IPv4 and IPv6 addresses.", "example": "lin-123-456-mysql-mysql-primary.servers.linodedb.net", "nullable": true, "type": "string" }, "secondary": { - "description": "The secondary/private network host for the Managed Database. A private network host and a private IP can only be used to access a database cluster from Linodes in the same data center and will not incur transfer costs.\n\n> \ud83d\udcd8\n>\n> The secondary hostname is publicly visible and accessible.", + "description": "The secondary, read-only hostname for the Managed Database. This can only be used to access a Managed Database cluster from Linodes in the same data center (region). Accessing the cluster through this hostname doesn't incur transfer costs.\n\n> \ud83d\udcd8\n>\n> - The secondary hostname is publicly visible and accessible.\n>\n> - If you've configured the Managed Database to use a VPC via the `private_network` object ([MySQL](https://techdocs.akamai.com/linode-api/reference/post-databases-mysql-instances) / [PostgreSQL](https://techdocs.akamai.com/linode-api/reference/post-databases-postgre-sql-instances)), this hostname resolves to a private IPv4 address within that VPC subnet's address range. Currently, IPv6 addresses aren't supported in a VPC. You can also use this hostname for requests between clients within the same VPC to access the cluster over the private network, which avoids transfer costs.\n>\n> - With `public_access` enabled in a `private_network`, a public version of this hostname is also available. Resolving this hostname returns publicly routable IPv4 and IPv6 addresses.", "example": "lin-123-456-mysql-primary-private.servers.linodedb.net", "nullable": true, "type": "string" @@ -23968,7 +24495,7 @@ "type": "integer" }, "region": { - "description": "__Filterable__ The [Region](https://techdocs.akamai.com/linode-api/reference/get-regions) ID for the Managed Database.", + "description": "__Filterable__ The unique identifier for the [region](https://techdocs.akamai.com/linode-api/reference/get-regions) where the Managed Database lives.", "example": "us-east", "type": "string", "x-akamai": { @@ -25396,7 +25923,7 @@ }, "/{apiVersion}/databases/mysql/instances": { "post": { - "description": "**Provision a MySQL Managed Database**\n\nUse this operation to create a new MySQL Managed Database.\n\n- Restricted users need the `add_databases` [user grant](https://techdocs.akamai.com/linode-api/reference/get-user-grants).\n\n- New instances can take 10 to 15 minutes to deploy.\n\n- When you create a new MySQL Managed Database, our partner [Aiven](https://aiven.io/docs/platform/concepts/cloud-security#data-encryption) automatically enables disk encryption on each cluster.\n\n- All Managed Databases include automatic, daily backups. Up to seven backups are automatically stored for each Managed Database, providing restore points for each day of the past week.\n\n- All Managed Databases include automatic updates, which apply security patches to the underlying operating system of the MySQL Managed Database. Configure the maintenance window for these updates with the [Update a managed MySQL database](https://techdocs.akamai.com/linode-api/reference/put-databases-mysql-instance) operation.\n\n- If your database cluster is configured with a single node, downtime occurs during maintenance updates. You should adjust the window to match a time that's the least disruptive to your application and users. Also consider upgrading to a [high availability](https://techdocs.akamai.com/cloud-computing/docs/aiven-database-clusters#high-availability) plan to avoid any maintenance downtime.\n\n- Major upgrades are optional until the service reaches end of service, and can be done in place.\n\n- A successful request triggers a `database_create` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n**Restore a MySQL Managed Database**\n\nInclude the `fork` object in the request to target a backed-up database. Your user needs `read_write` access to the target database and its status can be `active`, `degraded`, or `failed`.\n\n> \ud83d\udcd8\n>\n> Restoring from a backup creates a second running cluster, which incurs billing. Delete the first cluster after the restore is complete, to avoid this billing.\n\n\n<>\n\n---\n\n\n- __CLI for create operation__.\n\n ```\n linode-cli databases mysql-create \\\n --label example-db1 \\\n --region us-east \\\n --type g6-dedicated-2 \\\n --cluster_size 3 \\\n --engine mysql/8.0.26 \\\n --engine_config.binlog_retention_period 60 \\\n --engine_config.mysql.connect_timeout 10 \\\n --engine_config.mysql.default_time_zone +03:00 \\\n --ssl_connection true \\\n --allow_list 203.0.113.1 \\\n --allow_list 192.0.1.0/24\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n databases:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "**Provision a MySQL Managed Database**\n\nUse this operation to create a new MySQL Managed Database.\n\n- Restricted users need the `add_databases` [user grant](https://techdocs.akamai.com/linode-api/reference/get-user-grants).\n\n- New instances can take 10 to 15 minutes to deploy.\n\n- When you create a new MySQL Managed Database, our partner [Aiven](https://aiven.io/docs/platform/concepts/cloud-security#data-encryption) automatically enables disk encryption on each cluster.\n\n- All Managed Databases include automatic, daily backups. Up to seven backups are automatically stored for each Managed Database, providing restore points for each day of the past week.\n\n- All Managed Databases include automatic updates, which apply security patches to the underlying operating system of the MySQL Managed Database. Configure the maintenance window for these updates with the [Update a managed MySQL database](https://techdocs.akamai.com/linode-api/reference/put-databases-mysql-instance) operation.\n\n- If your database cluster is configured with a single node, downtime occurs during maintenance updates. You should adjust the window to match a time that's the least disruptive to your application and users. Also consider upgrading to a [high availability](https://techdocs.akamai.com/cloud-computing/docs/aiven-database-clusters#high-availability) plan to avoid any maintenance downtime.\n\n- Major upgrades are optional until the service reaches end of service, and can be done in place.\n\n- **Beta**. You can create a MySQL Managed Database in a Virtual Private Cloud (VPC) using the `private_network` object in the request. This support is in beta. Talk to your Akamai account team for more details.\n\n > \ud83d\udcd8\n >\n > Currently, VPC subnets associated with Managed Database instances don't automatically block outbound connections outside the subnet. To limit network exposure, you should configure Cloud Firewall rules to explicitly deny outbound connections beyond the intended subnet. For more details on configuring rules, see the [Cloud Firewall](https://techdocs.akamai.com/cloud-computing/docs/cloud-firewall) documentation.\n\n- A successful request triggers a `database_create` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n**Restore a MySQL Managed Database**\n\nInclude the `fork` object in the request to target a backed-up database. Your user needs `read_write` access to the target database and its status can be `active`, `degraded`, or `failed`.\n\n> \ud83d\udcd8\n>\n> Restoring from a backup creates a second running cluster, which incurs billing. Delete the first cluster after the restore is complete, to avoid this billing.\n\n\n<>\n\n---\n\n\n- __CLI for create operation__.\n\n ```\n linode-cli databases mysql-create \\\n --label example-db1 \\\n --region us-east \\\n --type g6-dedicated-2 \\\n --cluster_size 3 \\\n --engine mysql/8.0.26 \\\n --engine_config.binlog_retention_period 60 \\\n --engine_config.mysql.connect_timeout 10 \\\n --engine_config.mysql.default_time_zone +03:00 \\\n --ssl_connection true \\\n --allow_list 203.0.113.1 \\\n --allow_list 192.0.1.0/24\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n databases:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/post-databases-mysql-instances" @@ -25449,6 +25976,11 @@ "source": 176881 }, "label": "example-db", + "private_network": { + "public_access": false, + "subnet_id": 456, + "vpc_id": 123 + }, "region": "us-east", "ssl_connection": true, "type": "g6-dedicated-2" @@ -25742,8 +26274,35 @@ "x-linode-cli-display": 2, "x-linode-filterable": true }, + "private_network": { + "additionalProperties": false, + "description": "__Beta__ Restricts access on a MySQL Managed Database to a specific Virtual Private Cloud (VPC) configured for the cluster.", + "nullable": true, + "properties": { + "public_access": { + "default": false, + "description": "Set to `true` to allow clients outside of the VPC to connect to the database using a public IP address. Defaults to `false`, where only nodes within the specified `vpc_id` can access the Managed Database cluster.\n\n> \ud83d\udcd8\n>\n> If your Managed Database is also configured using an `allow_list`, only IP addresses set in it can access that database, even if this object is set to `true`.", + "example": true, + "type": "boolean" + }, + "subnet_id": { + "description": "If the `vpc_id` includes multiple subnets, specify the `subnet_id` you want to use to control access to the database. Use the [List VPCs](https://techdocs.akamai.com/linode-api/reference/get-vpcs) operation to find and store the `id` of the relevant subnet object.\n\n> \ud83d\udcd8\n>\n> A VPC needs at least one subnet to assign a Manage Database instance.", + "example": 456, + "type": "integer" + }, + "vpc_id": { + "description": "The unique identifier of the VPC you want to use to enable private access to the Managed Database. Run the [List VPCs](https://techdocs.akamai.com/linode-api/reference/get-vpcs) operation and store the `id` for the applicable VPC.", + "example": 123, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "status": "BETA" + } + }, "region": { - "description": "__Filterable__ The [Region](https://techdocs.akamai.com/linode-api/reference/get-regions) ID for the Managed Database.", + "description": "__Filterable__ The unique identifier for the [region](https://techdocs.akamai.com/linode-api/reference/get-regions) where the Managed Database lives.", "example": "{{region}}", "type": "string", "x-akamai": { @@ -25855,6 +26414,11 @@ "oldest_restore_time": "2025-01-01T00:01:01", "platform": "rdbms-default", "port": 3306, + "private_network": { + "public_access": false, + "subnet_id": 456, + "vpc_id": 123 + }, "region": "us-east", "ssl_connection": true, "status": "active", @@ -26165,16 +26729,16 @@ }, "hosts": { "additionalProperties": false, - "description": "__Read-only__ The primary and secondary hosts for the Managed Database. These are assigned after provisioning is complete.", + "description": "__Read-only__ The primary hostname and secondary read-only hostname for the Managed Database. The API assigns these hostnames after it successfully creates the Managed Database.", "properties": { "primary": { - "description": "The primary host for the Managed Database.", + "description": "The primary hostname for the Managed Database.\n\n> \ud83d\udcd8\n>\n> - If you've configured the Managed Database to use a Virtual Private Cloud (VPC) via the `private_network` object ([MySQL](https://techdocs.akamai.com/linode-api/reference/post-databases-mysql-instances) / [PostgreSQL](https://techdocs.akamai.com/linode-api/reference/post-databases-postgre-sql-instances)), this hostname resolves to a private IPv4 address within that VPC subnet's address range. Currently, IPv6 addresses aren't supported in a VPC.\n>\n> - With `public_access` enabled in a `private_network`, a public version of this hostname is also available. Resolving this hostname returns _publicly_ routable IPv4 and IPv6 addresses.", "example": "lin-123-456-mysql-mysql-primary.servers.linodedb.net", "nullable": true, "type": "string" }, "secondary": { - "description": "The secondary/private network host for the Managed Database. A private network host and a private IP can only be used to access a database cluster from Linodes in the same data center and will not incur transfer costs.\n\n> \ud83d\udcd8\n>\n> The secondary hostname is publicly visible and accessible.", + "description": "The secondary, read-only hostname for the Managed Database. This can only be used to access a Managed Database cluster from Linodes in the same data center (region). Accessing the cluster through this hostname doesn't incur transfer costs.\n\n> \ud83d\udcd8\n>\n> - The secondary hostname is publicly visible and accessible.\n>\n> - If you've configured the Managed Database to use a VPC via the `private_network` object ([MySQL](https://techdocs.akamai.com/linode-api/reference/post-databases-mysql-instances) / [PostgreSQL](https://techdocs.akamai.com/linode-api/reference/post-databases-postgre-sql-instances)), this hostname resolves to a private IPv4 address within that VPC subnet's address range. Currently, IPv6 addresses aren't supported in a VPC. You can also use this hostname for requests between clients within the same VPC to access the cluster over the private network, which avoids transfer costs.\n>\n> - With `public_access` enabled in a `private_network`, a public version of this hostname is also available. Resolving this hostname returns publicly routable IPv4 and IPv6 addresses.", "example": "lin-123-456-mysql-primary-private.servers.linodedb.net", "nullable": true, "type": "string" @@ -26243,8 +26807,35 @@ "readOnly": true, "type": "integer" }, + "private_network": { + "additionalProperties": false, + "description": "__Beta__ Restricts access to a MySQL Managed Database using a Virtual Private Cloud (VPC). Displayed as `null` if no VPC is configured.", + "nullable": true, + "properties": { + "public_access": { + "default": false, + "description": "When set to `true`, clients outside of the VPC can connect to the database. Defaults to `false`, where only nodes within the specified `vpc_id` can access the Managed Database cluster.\n\n> \ud83d\udcd8\n>\n> If your Managed Database is also configured using an `allow_list`, only IP addresses set in it can access that database, even if this object is set to `true`.", + "example": true, + "type": "boolean" + }, + "subnet_id": { + "description": "The unique identifier of a specific subnet, in the VPC (`vpc_id`) where the Managed Database can be accessed.", + "example": 456, + "type": "integer" + }, + "vpc_id": { + "description": "The unique identifier of the VPC where this database exists.", + "example": 123, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "status": "BETA" + } + }, "region": { - "description": "__Filterable__ The [Region](https://techdocs.akamai.com/linode-api/reference/get-regions) ID for the Managed Database.", + "description": "__Filterable__ The unique identifier for the [region](https://techdocs.akamai.com/linode-api/reference/get-regions) where the Managed Database lives.", "example": "us-east", "type": "string", "x-akamai": { @@ -26591,6 +27182,11 @@ "oldest_restore_time": "2024-10-03T20:48:05", "platform": "rdbms-default", "port": 3306, + "private_network": { + "public_access": false, + "subnet_id": 456, + "vpc_id": 123 + }, "region": "us-east", "ssl_connection": true, "status": "active", @@ -26939,16 +27535,16 @@ }, "hosts": { "additionalProperties": false, - "description": "__Read-only__ The primary and secondary hosts for the Managed Database. These are assigned after provisioning is complete.", + "description": "__Read-only__ The primary hostname and secondary read-only hostname for the Managed Database. The API assigns these hostnames after it successfully creates the Managed Database.", "properties": { "primary": { - "description": "The primary host for the Managed Database.", + "description": "The primary hostname for the Managed Database.\n\n> \ud83d\udcd8\n>\n> - If you've configured the Managed Database to use a Virtual Private Cloud (VPC) via the `private_network` object ([MySQL](https://techdocs.akamai.com/linode-api/reference/post-databases-mysql-instances) / [PostgreSQL](https://techdocs.akamai.com/linode-api/reference/post-databases-postgre-sql-instances)), this hostname resolves to a private IPv4 address within that VPC subnet's address range. Currently, IPv6 addresses aren't supported in a VPC.\n>\n> - With `public_access` enabled in a `private_network`, a public version of this hostname is also available. Resolving this hostname returns _publicly_ routable IPv4 and IPv6 addresses.", "example": "lin-123-456-mysql-mysql-primary.servers.linodedb.net", "nullable": true, "type": "string" }, "secondary": { - "description": "The secondary/private network host for the Managed Database. A private network host and a private IP can only be used to access a database cluster from Linodes in the same data center and will not incur transfer costs.\n\n> \ud83d\udcd8\n>\n> The secondary hostname is publicly visible and accessible.", + "description": "The secondary, read-only hostname for the Managed Database. This can only be used to access a Managed Database cluster from Linodes in the same data center (region). Accessing the cluster through this hostname doesn't incur transfer costs.\n\n> \ud83d\udcd8\n>\n> - The secondary hostname is publicly visible and accessible.\n>\n> - If you've configured the Managed Database to use a VPC via the `private_network` object ([MySQL](https://techdocs.akamai.com/linode-api/reference/post-databases-mysql-instances) / [PostgreSQL](https://techdocs.akamai.com/linode-api/reference/post-databases-postgre-sql-instances)), this hostname resolves to a private IPv4 address within that VPC subnet's address range. Currently, IPv6 addresses aren't supported in a VPC. You can also use this hostname for requests between clients within the same VPC to access the cluster over the private network, which avoids transfer costs.\n>\n> - With `public_access` enabled in a `private_network`, a public version of this hostname is also available. Resolving this hostname returns publicly routable IPv4 and IPv6 addresses.", "example": "lin-123-456-mysql-primary-private.servers.linodedb.net", "nullable": true, "type": "string" @@ -27017,8 +27613,35 @@ "readOnly": true, "type": "integer" }, + "private_network": { + "additionalProperties": false, + "description": "__Beta__ Restricts access to a MySQL Managed Database using a Virtual Private Cloud (VPC). Displayed as `null` if no VPC is configured.", + "nullable": true, + "properties": { + "public_access": { + "default": false, + "description": "When set to `true`, clients outside of the VPC can connect to the database. Defaults to `false`, where only nodes within the specified `vpc_id` can access the Managed Database cluster.\n\n> \ud83d\udcd8\n>\n> If your Managed Database is also configured using an `allow_list`, only IP addresses set in it can access that database, even if this object is set to `true`.", + "example": true, + "type": "boolean" + }, + "subnet_id": { + "description": "The unique identifier of a specific subnet, in the VPC (`vpc_id`) where the Managed Database can be accessed.", + "example": 456, + "type": "integer" + }, + "vpc_id": { + "description": "The unique identifier of the VPC where this database exists.", + "example": 123, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "status": "BETA" + } + }, "region": { - "description": "__Filterable__ The [Region](https://techdocs.akamai.com/linode-api/reference/get-regions) ID for the Managed Database.", + "description": "__Filterable__ The unique identifier for the [region](https://techdocs.akamai.com/linode-api/reference/get-regions) where the Managed Database lives.", "example": "us-east", "type": "string", "x-akamai": { @@ -27364,6 +27987,11 @@ "oldest_restore_time": "2024-10-03T20:48:05", "platform": "rdbms-default", "port": 3306, + "private_network": { + "public_access": false, + "subnet_id": 456, + "vpc_id": 123 + }, "region": "us-east", "ssl_connection": true, "status": "active", @@ -27674,16 +28302,16 @@ }, "hosts": { "additionalProperties": false, - "description": "__Read-only__ The primary and secondary hosts for the Managed Database. These are assigned after provisioning is complete.", + "description": "__Read-only__ The primary hostname and secondary read-only hostname for the Managed Database. The API assigns these hostnames after it successfully creates the Managed Database.", "properties": { "primary": { - "description": "The primary host for the Managed Database.", + "description": "The primary hostname for the Managed Database.\n\n> \ud83d\udcd8\n>\n> - If you've configured the Managed Database to use a Virtual Private Cloud (VPC) via the `private_network` object ([MySQL](https://techdocs.akamai.com/linode-api/reference/post-databases-mysql-instances) / [PostgreSQL](https://techdocs.akamai.com/linode-api/reference/post-databases-postgre-sql-instances)), this hostname resolves to a private IPv4 address within that VPC subnet's address range. Currently, IPv6 addresses aren't supported in a VPC.\n>\n> - With `public_access` enabled in a `private_network`, a public version of this hostname is also available. Resolving this hostname returns _publicly_ routable IPv4 and IPv6 addresses.", "example": "lin-123-456-mysql-mysql-primary.servers.linodedb.net", "nullable": true, "type": "string" }, "secondary": { - "description": "The secondary/private network host for the Managed Database. A private network host and a private IP can only be used to access a database cluster from Linodes in the same data center and will not incur transfer costs.\n\n> \ud83d\udcd8\n>\n> The secondary hostname is publicly visible and accessible.", + "description": "The secondary, read-only hostname for the Managed Database. This can only be used to access a Managed Database cluster from Linodes in the same data center (region). Accessing the cluster through this hostname doesn't incur transfer costs.\n\n> \ud83d\udcd8\n>\n> - The secondary hostname is publicly visible and accessible.\n>\n> - If you've configured the Managed Database to use a VPC via the `private_network` object ([MySQL](https://techdocs.akamai.com/linode-api/reference/post-databases-mysql-instances) / [PostgreSQL](https://techdocs.akamai.com/linode-api/reference/post-databases-postgre-sql-instances)), this hostname resolves to a private IPv4 address within that VPC subnet's address range. Currently, IPv6 addresses aren't supported in a VPC. You can also use this hostname for requests between clients within the same VPC to access the cluster over the private network, which avoids transfer costs.\n>\n> - With `public_access` enabled in a `private_network`, a public version of this hostname is also available. Resolving this hostname returns publicly routable IPv4 and IPv6 addresses.", "example": "lin-123-456-mysql-primary-private.servers.linodedb.net", "nullable": true, "type": "string" @@ -27752,8 +28380,35 @@ "readOnly": true, "type": "integer" }, + "private_network": { + "additionalProperties": false, + "description": "__Beta__ Restricts access to a MySQL Managed Database using a Virtual Private Cloud (VPC). Displayed as `null` if no VPC is configured.", + "nullable": true, + "properties": { + "public_access": { + "default": false, + "description": "When set to `true`, clients outside of the VPC can connect to the database. Defaults to `false`, where only nodes within the specified `vpc_id` can access the Managed Database cluster.\n\n> \ud83d\udcd8\n>\n> If your Managed Database is also configured using an `allow_list`, only IP addresses set in it can access that database, even if this object is set to `true`.", + "example": true, + "type": "boolean" + }, + "subnet_id": { + "description": "The unique identifier of a specific subnet, in the VPC (`vpc_id`) where the Managed Database can be accessed.", + "example": 456, + "type": "integer" + }, + "vpc_id": { + "description": "The unique identifier of the VPC where this database exists.", + "example": 123, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "status": "BETA" + } + }, "region": { - "description": "__Filterable__ The [Region](https://techdocs.akamai.com/linode-api/reference/get-regions) ID for the Managed Database.", + "description": "__Filterable__ The unique identifier for the [region](https://techdocs.akamai.com/linode-api/reference/get-regions) where the Managed Database lives.", "example": "us-east", "type": "string", "x-akamai": { @@ -27995,7 +28650,7 @@ "x-linode-grant": "read_only" }, "put": { - "description": "Make changes to an existing MySQL Managed Database.\n\n- The user needs `read_write` [user grant](https://techdocs.akamai.com/linode-api/reference/get-user-grants) access to the database.\n\n- The database's status needs to be `active`.\n\n- New values set in the `allow_list` overwrite existing values. To keep existing values, run the [List MySQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-mysql-instances) operation, store the `allow_list` addresses from the response, and include them with any new addresses in this operation.\n\n- Updates to your `allow_list` may take a short time to complete, making this operation inappropriate for rapid successive updates.\n\n- Also allows resizing the database cluster to a larger one. Clusters can't be resized to smaller plans.\n\n- All Managed Databases include automatic updates, which apply security patches to the underlying operating system of the Managed MySQL Database. Use the `updates` object in this operation to modify the maintenance window for these updates.\n\n- If your database cluster is configured with a single node, downtime occurs during maintenance updates. Use the `updates` object to adjust the window to match a time that's the least disruptive to your application and users. Also consider upgrading to a [high availability](https://techdocs.akamai.com/cloud-computing/docs/aiven-database-clusters#high-availability) plan to avoid any maintenance downtime.\n\n- Major upgrades are optional until the service reaches end of service, and can be done in place.\n\n- You can't update `engine_config` advanced parameter settings for a suspended database. You'll need to [resume](https://techdocs.akamai.com/linode-api/reference/resume-databases-mysql-instance) it first.\n\n- A successful request triggers a `database_update` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli databases mysql-update 123 \\\n --label example-db \\\n --allow_list 203.0.113.1 \\\n --allow_list 192.0.1.0/24 \\\n --type g6-standard-1 \\\n --engine_config.binlog_retention_period 60 \\\n --engine_config.mysql.connect_timeout 10 \\\n --engine_config.mysql.default_time_zone +03:00 \\\n --updates.frequency weekly \\\n --updates.duration 3 \\\n --updates.hour_of_day 12 \\\n --updates.day_of_week 4 \\\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n databases:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Make changes to an existing MySQL Managed Database.\n\n- The user needs `read_write` [user grant](https://techdocs.akamai.com/linode-api/reference/get-user-grants) access to the database.\n\n- The database's status needs to be `active`.\n\n- New values set in the `allow_list` overwrite existing values. To keep existing values, run the [List MySQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-mysql-instances) operation, store the `allow_list` addresses from the response, and include them with any new addresses in this operation.\n\n- Updates to your `allow_list` may take a short time to complete, making this operation inappropriate for rapid successive updates.\n\n- Also allows resizing the database cluster to a larger one. Clusters can't be resized to smaller plans.\n\n- All Managed Databases include automatic updates, which apply security patches to the underlying operating system of the Managed MySQL Database. Use the `updates` object in this operation to modify the maintenance window for these updates.\n\n- If your database cluster is configured with a single node, downtime occurs during maintenance updates. Use the `updates` object to adjust the window to match a time that's the least disruptive to your application and users. Also consider upgrading to a [high availability](https://techdocs.akamai.com/cloud-computing/docs/aiven-database-clusters#high-availability) plan to avoid any maintenance downtime.\n\n- Major upgrades are optional until the service reaches end of service, and can be done in place.\n\n- You can't update `engine_config` advanced parameter settings for a suspended database. You'll need to [resume](https://techdocs.akamai.com/linode-api/reference/resume-databases-mysql-instance) it first.\n\n- A successful request triggers a `database_update` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n- **Beta**. You can update an existing MySQL Managed Database to move it to a Virtual Private Cloud (VPC) using the `private_network` object in the request. This support is in beta. Talk to your Akamai account team for more details.\n\n > \ud83d\udcd8\n >\n > Currently, VPC subnets associated with Managed Database instances don't automatically block outbound connections outside the subnet. To limit network exposure, you should configure Cloud Firewall rules to explicitly deny outbound connections beyond the intended subnet. For more details on configuring rules, see the [Cloud Firewall](https://techdocs.akamai.com/cloud-computing/docs/cloud-firewall) documentation.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli databases mysql-update 123 \\\n --label example-db \\\n --allow_list 203.0.113.1 \\\n --allow_list 192.0.1.0/24 \\\n --type g6-standard-1 \\\n --engine_config.binlog_retention_period 60 \\\n --engine_config.mysql.connect_timeout 10 \\\n --engine_config.mysql.default_time_zone +03:00 \\\n --updates.frequency weekly \\\n --updates.duration 3 \\\n --updates.hour_of_day 12 \\\n --updates.day_of_week 4 \\\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n databases:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/put-databases-mysql-instance" @@ -28042,6 +28697,11 @@ } }, "label": "example-db", + "private_network": { + "public_access": false, + "subnet_id": 456, + "vpc_id": 123 + }, "type": "g6-standard-1", "updates": { "day_of_week": 1, @@ -28299,6 +28959,33 @@ "x-linode-cli-display": 2, "x-linode-filterable": true }, + "private_network": { + "additionalProperties": false, + "description": "__Beta__ Restricts access on a MySQL Managed Database to a specific Virtual Private Cloud (VPC) configured for the cluster.", + "nullable": true, + "properties": { + "public_access": { + "default": false, + "description": "Set to `true` to allow clients outside of the VPC to connect to the database using a public IP address. Defaults to `false`, where only nodes within the specified `vpc_id` can access the Managed Database cluster.\n\n> \ud83d\udcd8\n>\n> If your Managed Database is also configured using an `allow_list`, only IP addresses set in it can access that database, even if this object is set to `true`.", + "example": true, + "type": "boolean" + }, + "subnet_id": { + "description": "If the `vpc_id` includes multiple subnets, specify the `subnet_id` you want to use to control access to the database. Use the [List VPCs](https://techdocs.akamai.com/linode-api/reference/get-vpcs) operation to find and store the `id` of the relevant subnet object.\n\n> \ud83d\udcd8\n>\n> A VPC needs at least one subnet to assign a Manage Database instance.", + "example": 456, + "type": "integer" + }, + "vpc_id": { + "description": "The unique identifier of the VPC you want to use to enable private access to the Managed Database. Run the [List VPCs](https://techdocs.akamai.com/linode-api/reference/get-vpcs) operation and store the `id` for the applicable VPC.", + "example": 123, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "status": "BETA" + } + }, "type": { "description": "Request re-sizing of your cluster to a Linode Type with more disk space. For example, you could request a Linode Type that uses a higher plan.\n\n- Needs to be a Linode Type with more disk space than your current Linode.\n\n- Resizing to a larger Linode Type can accrue additional cost. Review the `price` output in the [List types](https://techdocs.akamai.com/linode-api/reference/get-linode-types) operation for more information.\n\n- You can't update the `allow_list` and set a new `type` in the same request.\n\n- Any active updates to your cluster need to complete before you can request a resize. The reverse is also true: An active resizing needs to complete before you can perform any other update.", "example": "{{type}}", @@ -28458,6 +29145,11 @@ "oldest_restore_time": "2024-10-03T20:48:05", "platform": "rdbms-default", "port": 3306, + "private_network": { + "public_access": false, + "subnet_id": 456, + "vpc_id": 123 + }, "region": "us-east", "ssl_connection": true, "status": "active", @@ -28768,16 +29460,16 @@ }, "hosts": { "additionalProperties": false, - "description": "__Read-only__ The primary and secondary hosts for the Managed Database. These are assigned after provisioning is complete.", + "description": "__Read-only__ The primary hostname and secondary read-only hostname for the Managed Database. The API assigns these hostnames after it successfully creates the Managed Database.", "properties": { "primary": { - "description": "The primary host for the Managed Database.", + "description": "The primary hostname for the Managed Database.\n\n> \ud83d\udcd8\n>\n> - If you've configured the Managed Database to use a Virtual Private Cloud (VPC) via the `private_network` object ([MySQL](https://techdocs.akamai.com/linode-api/reference/post-databases-mysql-instances) / [PostgreSQL](https://techdocs.akamai.com/linode-api/reference/post-databases-postgre-sql-instances)), this hostname resolves to a private IPv4 address within that VPC subnet's address range. Currently, IPv6 addresses aren't supported in a VPC.\n>\n> - With `public_access` enabled in a `private_network`, a public version of this hostname is also available. Resolving this hostname returns _publicly_ routable IPv4 and IPv6 addresses.", "example": "lin-123-456-mysql-mysql-primary.servers.linodedb.net", "nullable": true, "type": "string" }, "secondary": { - "description": "The secondary/private network host for the Managed Database. A private network host and a private IP can only be used to access a database cluster from Linodes in the same data center and will not incur transfer costs.\n\n> \ud83d\udcd8\n>\n> The secondary hostname is publicly visible and accessible.", + "description": "The secondary, read-only hostname for the Managed Database. This can only be used to access a Managed Database cluster from Linodes in the same data center (region). Accessing the cluster through this hostname doesn't incur transfer costs.\n\n> \ud83d\udcd8\n>\n> - The secondary hostname is publicly visible and accessible.\n>\n> - If you've configured the Managed Database to use a VPC via the `private_network` object ([MySQL](https://techdocs.akamai.com/linode-api/reference/post-databases-mysql-instances) / [PostgreSQL](https://techdocs.akamai.com/linode-api/reference/post-databases-postgre-sql-instances)), this hostname resolves to a private IPv4 address within that VPC subnet's address range. Currently, IPv6 addresses aren't supported in a VPC. You can also use this hostname for requests between clients within the same VPC to access the cluster over the private network, which avoids transfer costs.\n>\n> - With `public_access` enabled in a `private_network`, a public version of this hostname is also available. Resolving this hostname returns publicly routable IPv4 and IPv6 addresses.", "example": "lin-123-456-mysql-primary-private.servers.linodedb.net", "nullable": true, "type": "string" @@ -28846,8 +29538,35 @@ "readOnly": true, "type": "integer" }, + "private_network": { + "additionalProperties": false, + "description": "__Beta__ Restricts access to a MySQL Managed Database using a Virtual Private Cloud (VPC). Displayed as `null` if no VPC is configured.", + "nullable": true, + "properties": { + "public_access": { + "default": false, + "description": "When set to `true`, clients outside of the VPC can connect to the database. Defaults to `false`, where only nodes within the specified `vpc_id` can access the Managed Database cluster.\n\n> \ud83d\udcd8\n>\n> If your Managed Database is also configured using an `allow_list`, only IP addresses set in it can access that database, even if this object is set to `true`.", + "example": true, + "type": "boolean" + }, + "subnet_id": { + "description": "The unique identifier of a specific subnet, in the VPC (`vpc_id`) where the Managed Database can be accessed.", + "example": 456, + "type": "integer" + }, + "vpc_id": { + "description": "The unique identifier of the VPC where this database exists.", + "example": 123, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "status": "BETA" + } + }, "region": { - "description": "__Filterable__ The [Region](https://techdocs.akamai.com/linode-api/reference/get-regions) ID for the Managed Database.", + "description": "__Filterable__ The unique identifier for the [region](https://techdocs.akamai.com/linode-api/reference/get-regions) where the Managed Database lives.", "example": "us-east", "type": "string", "x-akamai": { @@ -31930,7 +32649,7 @@ }, "/{apiVersion}/databases/postgresql/instances": { "post": { - "description": "**Provision a PostgreSQL Managed Database**\n\nUse this operation to create a new PostgreSQL Managed Database.\n\n- Restricted users need the `add_databases` [user grant](https://techdocs.akamai.com/linode-api/reference/get-user-grants).\n\n- New instances can take 10 to 15 minutes to deploy.\n\n- When you create a new PostgreSQL Managed Database, our partner [Aiven](https://aiven.io/docs/platform/concepts/cloud-security#data-encryption) automatically enables disk encryption on each cluster.\n\n- All Managed Databases include automatic, daily backups. Up to seven backups are automatically stored for each Managed Database, providing restore points for each day of the past week.\n\n- All Managed Databases include automatic updates, which apply security patches to the underlying operating system of the PostgreSQL Managed Database. Configure the maintenance window for these updates with the [Update a managed PostgreSQL database](https://techdocs.akamai.com/linode-api/reference/put-databases-postgre-sql-instance) operation.\n\n- If your database cluster is configured with a single node, downtime occurs during maintenance updates. Adjust the window to match a time that's the least disruptive to your application and users. Also consider upgrading to a [high availability](https://techdocs.akamai.com/cloud-computing/docs/aiven-database-clusters#high-availability) plan to avoid any maintenance downtime.\n\n- Major upgrades are optional until the service reaches end of service, and can be done in place.\n\n- A successful request triggers a `database_create` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n**Restore a PostgreSQL Managed Database**\n\nInclude the `fork` object in the request to target a backed-up database. Your user needs `read_write` access to the target database and its status can be `active`, `degraded`, or `failed`.\n\n> \ud83d\udcd8\n>\n> Restoring from a backup creates a second running cluster, which incurs billing. Delete the first cluster after the restore is complete, to avoid this billing.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli databases postgresql-create \\\n --label example-db \\\n --region us-east \\\n --type g6-dedicated-2 \\\n --cluster_size 3 \\\n --engine postgresql/13.2 \\\n --engine_config.shared_buffers_percentage 41.5 \\\n --engine_config.pg.autovacuum_analyze_scale_factor 0.0 \\\n --engine_config.pg.autovacuum_vacuum_cost_delay 60 \\\n --engine_config.pg.pg_partman_bgw.interval 3600 \\\n --engine_config.pg.pg_partman_bgw.role myrolename \\\n --engine_config.pglookout.max_failover_replication_time_lag 60 \\\n --ssl_connection true \\\n --allow_list 203.0.113.1 \\\n --allow_list 192.0.1.0/24\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n databases:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "**Provision a PostgreSQL Managed Database**\n\nUse this operation to create a new PostgreSQL Managed Database.\n\n- Restricted users need the `add_databases` [user grant](https://techdocs.akamai.com/linode-api/reference/get-user-grants).\n\n- New instances can take 10 to 15 minutes to deploy.\n\n- When you create a new PostgreSQL Managed Database, our partner [Aiven](https://aiven.io/docs/platform/concepts/cloud-security#data-encryption) automatically enables disk encryption on each cluster.\n\n- All Managed Databases include automatic, daily backups. Up to seven backups are automatically stored for each Managed Database, providing restore points for each day of the past week.\n\n- All Managed Databases include automatic updates, which apply security patches to the underlying operating system of the PostgreSQL Managed Database. Configure the maintenance window for these updates with the [Update a managed PostgreSQL database](https://techdocs.akamai.com/linode-api/reference/put-databases-postgre-sql-instance) operation.\n\n- If your database cluster is configured with a single node, downtime occurs during maintenance updates. Adjust the window to match a time that's the least disruptive to your application and users. Also consider upgrading to a [high availability](https://techdocs.akamai.com/cloud-computing/docs/aiven-database-clusters#high-availability) plan to avoid any maintenance downtime.\n\n- Major upgrades are optional until the service reaches end of service, and can be done in place.\n\n- A successful request triggers a `database_create` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n- You can create a PostgreSQL Managed Database in a Virtual Private Cloud (VPC) using the `private_network` object in the request. This support is in beta. Talk to your Akamai account team for more details.\n\n > \ud83d\udcd8\n >\n > Currently, VPC subnets associated with Managed Database instances don't automatically block outbound connections outside the subnet. To limit network exposure, you should configure Cloud Firewall rules to explicitly deny outbound connections beyond the intended subnet. For more details on configuring rules, see the [Cloud Firewall](https://techdocs.akamai.com/cloud-computing/docs/cloud-firewall) documentation.\n\n**Restore a PostgreSQL Managed Database**\n\nInclude the `fork` object in the request to target a backed-up database. Your user needs `read_write` access to the target database and its status can be `active`, `degraded`, or `failed`.\n\n> \ud83d\udcd8\n>\n> Restoring from a backup creates a second running cluster, which incurs billing. Delete the first cluster after the restore is complete, to avoid this billing.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli databases postgresql-create \\\n --label example-db \\\n --region us-east \\\n --type g6-dedicated-2 \\\n --cluster_size 3 \\\n --engine postgresql/13.2 \\\n --engine_config.shared_buffers_percentage 41.5 \\\n --engine_config.pg.autovacuum_analyze_scale_factor 0.0 \\\n --engine_config.pg.autovacuum_vacuum_cost_delay 60 \\\n --engine_config.pg.pg_partman_bgw.interval 3600 \\\n --engine_config.pg.pg_partman_bgw.role myrolename \\\n --engine_config.pglookout.max_failover_replication_time_lag 60 \\\n --ssl_connection true \\\n --allow_list 203.0.113.1 \\\n --allow_list 192.0.1.0/24\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n databases:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/post-databases-postgre-sql-instances" @@ -32004,6 +32723,11 @@ "source": 176881 }, "label": "example-db", + "private_network": { + "public_access": false, + "subnet_id": 456, + "vpc_id": 123 + }, "region": "us-east", "ssl_connection": true, "type": "g6-dedicated-2" @@ -32459,8 +33183,35 @@ "x-linode-cli-display": 2, "x-linode-filterable": true }, + "private_network": { + "additionalProperties": false, + "description": "__Beta__ Restricts access on a PostgreSQL Managed Database to a specific Virtual Private Cloud (VPC) configured for the cluster.", + "nullable": true, + "properties": { + "public_access": { + "default": false, + "description": "Set to `true` to allow clients outside of the VPC to connect to the database using a public IP address. Defaults to `false`, where only nodes within the specified `vpc_id` can access the Managed Database cluster.\n\n> \ud83d\udcd8\n>\n> If your Managed Database is also configured using an `allow_list`, only IP addresses set in it can access that database, even if this object is set to `true`.", + "example": true, + "type": "boolean" + }, + "subnet_id": { + "description": "If the `vpc_id` includes subnets, you can include the one you want to limit access to the database. From the [List VPCs](https://techdocs.akamai.com/linode-api/reference/get-vpcs) operation, store the `id` for the applicable `subnets` object.", + "example": 456, + "type": "integer" + }, + "vpc_id": { + "description": "The unique identifier of the VPC you want to use to enable private access to the Managed Database. Run the [List VPCs](https://techdocs.akamai.com/linode-api/reference/get-vpcs) operation and store the `id` for the applicable VPC.", + "example": 123, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "status": "BETA" + } + }, "region": { - "description": "__Filterable__ The [Region](https://techdocs.akamai.com/linode-api/reference/get-regions) ID for the Managed Database.", + "description": "__Filterable__ The unique identifier for the [region](https://techdocs.akamai.com/linode-api/reference/get-regions) where the Managed Database lives.", "example": "{{region}}", "type": "string", "x-akamai": { @@ -32593,6 +33344,11 @@ "oldest_restore_time": "2025-01-01T00:01:01", "platform": "rdbms-default", "port": 3306, + "private_network": { + "public_access": false, + "subnet_id": 456, + "vpc_id": 123 + }, "region": "us-east", "ssl_connection": true, "status": "active", @@ -33137,7 +33893,7 @@ "type": "integer" }, "region": { - "description": "__Filterable__ The [Region](https://techdocs.akamai.com/linode-api/reference/get-regions) ID for the Managed Database.", + "description": "__Filterable__ The unique identifier for the [region](https://techdocs.akamai.com/linode-api/reference/get-regions) where the Managed Database lives.", "example": "us-east", "type": "string", "x-akamai": { @@ -33505,6 +34261,11 @@ "oldest_restore_time": "2024-10-03T20:48:05", "platform": "rdbms-default", "port": 3306, + "private_network": { + "public_access": false, + "subnet_id": 456, + "vpc_id": 123 + }, "region": "us-east", "ssl_connection": true, "status": "active", @@ -34093,8 +34854,35 @@ "readOnly": true, "type": "integer" }, + "private_network": { + "additionalProperties": false, + "description": "__Beta__ Restricts access to a PostgreSQL Managed Database using a Virtual Private Cloud (VPC). Displayed as `null` if no VPC is configured.", + "nullable": true, + "properties": { + "public_access": { + "default": false, + "description": "When set to `true`, clients outside of the VPC can connect to the database. Defaults to `false`, where only nodes within the specified `vpc_id` can access the Managed Database cluster.\n\n> \ud83d\udcd8\n>\n> If your Managed Database is also configured using an `allow_list`, only IP addresses set in it can access that database, even if this object is set to `true`.", + "example": true, + "type": "boolean" + }, + "subnet_id": { + "description": "The specific subnet, in the VPC (`vpc_id`) where the Managed Database cluster can be accessed.", + "example": 456, + "type": "integer" + }, + "vpc_id": { + "description": "The unique identifier of the VPC where this database exists.", + "example": 123, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "status": "BETA" + } + }, "region": { - "description": "__Filterable__ The [Region](https://techdocs.akamai.com/linode-api/reference/get-regions) ID for the Managed Database.", + "description": "__Filterable__ The unique identifier for the [region](https://techdocs.akamai.com/linode-api/reference/get-regions) where the Managed Database lives.", "example": "us-east", "type": "string", "x-akamai": { @@ -34461,6 +35249,11 @@ "oldest_restore_time": "2024-10-03T20:48:05", "platform": "rdbms-default", "port": 3306, + "private_network": { + "public_access": false, + "subnet_id": 456, + "vpc_id": 123 + }, "region": "us-east", "ssl_connection": true, "status": "active", @@ -35011,8 +35804,35 @@ "readOnly": true, "type": "integer" }, + "private_network": { + "additionalProperties": false, + "description": "__Beta__ Restricts access to a PostgreSQL Managed Database using a Virtual Private Cloud (VPC). Displayed as `null` if no VPC is configured.", + "nullable": true, + "properties": { + "public_access": { + "default": false, + "description": "When set to `true`, clients outside of the VPC can connect to the database. Defaults to `false`, where only nodes within the specified `vpc_id` can access the Managed Database cluster.\n\n> \ud83d\udcd8\n>\n> If your Managed Database is also configured using an `allow_list`, only IP addresses set in it can access that database, even if this object is set to `true`.", + "example": true, + "type": "boolean" + }, + "subnet_id": { + "description": "The specific subnet, in the VPC (`vpc_id`) where the Managed Database cluster can be accessed.", + "example": 456, + "type": "integer" + }, + "vpc_id": { + "description": "The unique identifier of the VPC where this database exists.", + "example": 123, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "status": "BETA" + } + }, "region": { - "description": "__Filterable__ The [Region](https://techdocs.akamai.com/linode-api/reference/get-regions) ID for the Managed Database.", + "description": "__Filterable__ The unique identifier for the [region](https://techdocs.akamai.com/linode-api/reference/get-regions) where the Managed Database lives.", "example": "us-east", "type": "string", "x-akamai": { @@ -35254,7 +36074,7 @@ "x-linode-grant": "read_only" }, "put": { - "description": "Make changes to an existing PostgreSQL Managed Database.\n\n- The user needs `read_write` [user grant](https://techdocs.akamai.com/linode-api/reference/get-user-grants) access to the database.\n\n- The database's status needs to be `active`.\n\n- New values set in the `allow_list` overwrite existing values. To keep existing values, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation, store the `allow_list` addresses from the response, and include them with any new addresses in this operation.\n\n- Updates to your `allow_list` may take a short period of time to complete, making this operation inappropriate for rapid successive updates.\n\n- Also allows resizing the database cluster to a larger one. Clusters can't be resized to smaller plans.\n\n- All Managed Databases include automatic updates, which apply security patches to the underlying operating system of the Managed PostgreSQL Database. Use the `updates` object in this operation to modify the maintenance window for these updates.\n\n- If your database cluster is configured with a single node, downtime occurs during maintenance updates. Use the `updates` object to adjust the window to match a time that's the least disruptive to your application and users. Also consider upgrading to a [high availability](https://techdocs.akamai.com/cloud-computing/docs/aiven-database-clusters#high-availability) plan to avoid any maintenance downtime.\n\n- Major upgrades are optional until the service reaches end of service, and can be done in place.\n\n- You can't update `engine_config` advanced parameter settings for a suspended database. You'll need to [resume](https://techdocs.akamai.com/linode-api/reference/resume-databases-postgre-sql-instance) it first.\n\n- A successful request triggers a `database_update` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli databases postgresql-update 123 \\\n --label example-db \\\n --allow_list 203.0.113.1 \\\n --allow_list 192.0.1.0/24 \\\n --type g6-standard-1 \\\n --updates.frequency weekly \\\n --updates.duration 3 \\\n --updates.hour_of_day 12 \\\n --updates.day_of_week 4 \\\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n databases:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Make changes to an existing PostgreSQL Managed Database.\n\n- The user needs `read_write` [user grant](https://techdocs.akamai.com/linode-api/reference/get-user-grants) access to the database.\n\n- The database's status needs to be `active`.\n\n- New values set in the `allow_list` overwrite existing values. To keep existing values, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation, store the `allow_list` addresses from the response, and include them with any new addresses in this operation.\n\n- Updates to your `allow_list` may take a short period of time to complete, making this operation inappropriate for rapid successive updates.\n\n- Also allows resizing the database cluster to a larger one. Clusters can't be resized to smaller plans.\n\n- All Managed Databases include automatic updates, which apply security patches to the underlying operating system of the Managed PostgreSQL Database. Use the `updates` object in this operation to modify the maintenance window for these updates.\n\n- If your database cluster is configured with a single node, downtime occurs during maintenance updates. Use the `updates` object to adjust the window to match a time that's the least disruptive to your application and users. Also consider upgrading to a [high availability](https://techdocs.akamai.com/cloud-computing/docs/aiven-database-clusters#high-availability) plan to avoid any maintenance downtime.\n\n- Major upgrades are optional until the service reaches end of service, and can be done in place.\n\n- You can't update `engine_config` advanced parameter settings for a suspended database. You'll need to [resume](https://techdocs.akamai.com/linode-api/reference/resume-databases-postgre-sql-instance) it first.\n\n- A successful request triggers a `database_update` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n- **Beta**. You can update an existing PostgreSQL Managed Database to move it to a Virtual Private Cloud (VPC) using the `private_network` object in the request. This support is in beta. Talk to your Akamai account team for more details.\n\n > \ud83d\udcd8\n >\n > Currently, VPC subnets associated with Managed Database instances don't automatically block outbound connections outside the subnet. To limit network exposure, you should configure Cloud Firewall rules to explicitly deny outbound connections beyond the intended subnet. For more details on configuring rules, see the [Cloud Firewall](https://techdocs.akamai.com/cloud-computing/docs/cloud-firewall) documentation.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli databases postgresql-update 123 \\\n --label example-db \\\n --allow_list 203.0.113.1 \\\n --allow_list 192.0.1.0/24 \\\n --type g6-standard-1 \\\n --updates.frequency weekly \\\n --updates.duration 3 \\\n --updates.hour_of_day 12 \\\n --updates.day_of_week 4 \\\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n databases:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/put-databases-postgre-sql-instance" @@ -35322,6 +36142,11 @@ "work_mem": 4 }, "label": "example-db", + "private_network": { + "public_access": false, + "subnet_id": 456, + "vpc_id": 123 + }, "type": "g6-standard-1", "updates": { "day_of_week": 1, @@ -35741,6 +36566,33 @@ "x-linode-cli-display": 2, "x-linode-filterable": true }, + "private_network": { + "additionalProperties": false, + "description": "__Beta__ Restricts access on a PostgreSQL Managed Database to a specific Virtual Private Cloud (VPC) configured for the cluster.", + "nullable": true, + "properties": { + "public_access": { + "default": false, + "description": "Set to `true` to allow clients outside of the VPC to connect to the database using a public IP address. Defaults to `false`, where only nodes within the specified `vpc_id` can access the Managed Database cluster.\n\n> \ud83d\udcd8\n>\n> If your Managed Database is also configured using an `allow_list`, only IP addresses set in it can access that database, even if this object is set to `true`.", + "example": true, + "type": "boolean" + }, + "subnet_id": { + "description": "If the `vpc_id` includes subnets, you can include the one you want to limit access to the database. From the [List VPCs](https://techdocs.akamai.com/linode-api/reference/get-vpcs) operation, store the `id` for the applicable `subnets` object.", + "example": 456, + "type": "integer" + }, + "vpc_id": { + "description": "The unique identifier of the VPC you want to use to enable private access to the Managed Database. Run the [List VPCs](https://techdocs.akamai.com/linode-api/reference/get-vpcs) operation and store the `id` for the applicable VPC.", + "example": 123, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "status": "BETA" + } + }, "type": { "description": "Request re-sizing of your cluster to a Linode Type with more disk space. For example, you could request a Linode Type that uses a higher plan.\n\n- Needs to be a Linode Type with more disk space than your current Linode.\n\n- Resizing to a larger Linode Type can accrue additional cost. Review the `price` output from the [List types](https://techdocs.akamai.com/linode-api/reference/get-linode-types) operation for more information.\n\n- You can't update the `allow_list` and set a new `type` in the same request.\n\n- Any active updates to your cluster need to complete before you can request a resize. The reverse is also true: An active resizing needs to complete before you can perform any other update.", "example": "{{type}}", @@ -35921,6 +36773,11 @@ "oldest_restore_time": "2024-10-03T20:48:05", "platform": "rdbms-default", "port": 3306, + "private_network": { + "public_access": false, + "subnet_id": 456, + "vpc_id": 123 + }, "region": "us-east", "ssl_connection": true, "status": "active", @@ -36471,8 +37328,35 @@ "readOnly": true, "type": "integer" }, + "private_network": { + "additionalProperties": false, + "description": "__Beta__ Restricts access to a PostgreSQL Managed Database using a Virtual Private Cloud (VPC). Displayed as `null` if no VPC is configured.", + "nullable": true, + "properties": { + "public_access": { + "default": false, + "description": "When set to `true`, clients outside of the VPC can connect to the database. Defaults to `false`, where only nodes within the specified `vpc_id` can access the Managed Database cluster.\n\n> \ud83d\udcd8\n>\n> If your Managed Database is also configured using an `allow_list`, only IP addresses set in it can access that database, even if this object is set to `true`.", + "example": true, + "type": "boolean" + }, + "subnet_id": { + "description": "The specific subnet, in the VPC (`vpc_id`) where the Managed Database cluster can be accessed.", + "example": 456, + "type": "integer" + }, + "vpc_id": { + "description": "The unique identifier of the VPC where this database exists.", + "example": 123, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "status": "BETA" + } + }, "region": { - "description": "__Filterable__ The [Region](https://techdocs.akamai.com/linode-api/reference/get-regions) ID for the Managed Database.", + "description": "__Filterable__ The unique identifier for the [region](https://techdocs.akamai.com/linode-api/reference/get-regions) where the Managed Database lives.", "example": "us-east", "type": "string", "x-akamai": { @@ -37703,7 +38587,7 @@ "example": { "data": [ { - "class": "nanode", + "class": "dedicated", "deprecated": false, "disk": 25600, "engines": { @@ -37726,8 +38610,8 @@ } ] }, - "id": "g6-nanode-1", - "label": "DBaaS - Nanode 1GB", + "id": "g6-dedicated-1", + "label": "DBaaS - Dedicated 80GB", "memory": 1024, "vcpus": 1 } @@ -37774,8 +38658,13 @@ "description": "Managed Database plan type object.", "properties": { "class": { - "description": "The compute class category.", - "example": "nanode", + "description": "The Linode class category. This can be [dedicated](https://techdocs.akamai.com/cloud-computing/docs/dedicated-cpu-compute-instances), [shared](https://techdocs.akamai.com/cloud-computing/docs/shared-cpu-compute-instances), or [premium](https://techdocs.akamai.com/cloud-computing/docs/premium-compute-instances).\n\n> \ud83d\udcd8\n>\n> Premium plan Linodes are available in limited regions.", + "enum": [ + "dedicated", + "shared", + "premium" + ], + "example": "dedicated", "type": "string" }, "disk": { @@ -38081,7 +38970,7 @@ "content": { "application/json": { "example": { - "class": "nanode", + "class": "dedicated", "disk": 25600, "engines": { "mysql": [ @@ -38103,8 +38992,8 @@ } ] }, - "id": "g6-nanode-1", - "label": "DBaaS - Nanode 1GB", + "id": "g6-dedicated-1", + "label": "DBaaS - Dedicated 80GB", "memory": 1024, "vcpus": 1 }, @@ -38113,8 +39002,13 @@ "description": "Managed Database plan type object.", "properties": { "class": { - "description": "The compute class category.", - "example": "nanode", + "description": "The Linode class category. This can be [dedicated](https://techdocs.akamai.com/cloud-computing/docs/dedicated-cpu-compute-instances), [shared](https://techdocs.akamai.com/cloud-computing/docs/shared-cpu-compute-instances), or [premium](https://techdocs.akamai.com/cloud-computing/docs/premium-compute-instances).\n\n> \ud83d\udcd8\n>\n> Premium plan Linodes are available in limited regions.", + "enum": [ + "dedicated", + "shared", + "premium" + ], + "example": "dedicated", "type": "string" }, "disk": { @@ -42015,7 +42909,7 @@ }, "/{apiVersion}/images": { "post": { - "description": "Captures a private, gold-master image from a Linode disk.\n\n> \ud83d\udcd8\n>\n> - When you capture an image, we store it using our Object Storage service. The `region` where the target image exists determines where the [resulting image is stored](https://techdocs.akamai.com/cloud-computing/docs/images#regions-and-captured-custom-images).\n>\n> - When you create a new image, we automatically encrypt it for its protection. Images remain encrypted at rest, in storage, in caching, and in transit. When you deploy an image to a [new](https://techdocs.akamai.com/cloud-computing/docs/deploy-an-image-to-a-new-compute-instance) or [existing](https://techdocs.akamai.com/cloud-computing/docs/deploy-an-image-to-an-existing-compute-instance) Linode, we automatically decrypt it. If you've enabled encryption for a Linode you want to create an image of, we also encrypt the image. When you deploy that image, the image is decrypted and the resulting disk will be automatically encrypted.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli images create \\\n --label this_is_a_label \\\n --description \"A longer description \\\n of the image\" \\\n --disk_id 123\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n images:read_write\nlinodes:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Captures a private, gold-master image from a Linode disk and stores it for later use.\n\n> \ud83d\udcd8\n>\n> This operation has specific requirements for use. Check out its [workflow](https://techdocs.akamai.com/linode-api/reference/capture-an-image) for details.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli images create \\\n --label this_is_a_label \\\n --description \"A longer description \\\n of the image\" \\\n --disk_id 123\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n images:read_write\nlinodes:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/post-image" @@ -43091,7 +43985,7 @@ }, "/{apiVersion}/images/upload": { "post": { - "description": "Creates a new private image container and returns a URL as the `upload_to` object in the response. Use this URL to upload your own disk image to the container.\n\n1. Ensure the disk image is raw disk image (`.img`) format.\n\n2. Compress the disk image using gzip (`.gz`) format. Compressed, the file can be up to 5 GB and decompressed it can be up to 6 GB.\n\n3. Upload the file in a separate PUT request that includes the `Content-type: application/octet-stream` header:\n\n ```\n curl -v \\\n -H \"Content-Type: application/octet-stream\" \\\n --upload-file example.img.gz \\\n $UPLOAD_URL \\\n --progress-bar \\\n --output /dev/null\n ```\n\n> \ud83d\udcd8\n>\n> - You need to upload image data within 24 hours of creation or the API cancels the upload and deletes the image container.\n>\n> - Only core regions that support our [Object Storage](https://techdocs.akamai.com/cloud-computing/reference/how-to-choose-a-data-center#product-availability) service can store an uploaded image.\n>\n> - When you create a new image, we automatically encrypt it for its protection. Images remain encrypted at rest, in storage, in caching, and in transit. When you deploy an image to a [new](https://techdocs.akamai.com/cloud-computing/docs/deploy-an-image-to-a-new-compute-instance) or [existing](https://techdocs.akamai.com/cloud-computing/docs/deploy-an-image-to-an-existing-compute-instance) Linode, we automatically decrypt it. If you've enabled encryption for a Linode you want to create an image of, we also encrypt the image. When you deploy that image, the image is decrypted and the resulting disk will be automatically encrypted.\n>\n> - You can create a new image and upload image data using a single process through [Cloud Manager](https://www.linode.com/docs/products/tools/images/guides/upload-an-image/#uploading-an-image-file-through-the-cloud-manager) or the [Linode CLI](https://www.linode.com/docs/products/tools/images/guides/upload-an-image/#uploading-an-image-file-through-the-linode-cli).\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n # Run the operation to just get the upload_to URL\nlinode-cli images upload \\\n --description \"Optional details about the Image\" \\\n --label \"Example Image\" \\\n --region us-east\n\n# Upload the image file in a single step\nlinode-cli image-upload \\\n --description \"Optional details about the Image\" \\\n --label \"Example Image\" \\\n --region us-east \\\n /path/to/image-file.img.gz\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n images:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Creates a new private image container and returns a URL as the `upload_to` object in the response. Use this URL to upload your own disk image to the container.\n\n> \ud83d\udcd8\n>\n> This operation has specific requirements for use. Check out its [workflow](https://techdocs.akamai.com/linode-api/reference/upload-an-image) for details.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n # Run the operation to just get the upload_to URL\nlinode-cli images upload \\\n --description \"Optional details about the Image\" \\\n --label \"Example Image\" \\\n --region us-east\n\n# Upload the image file in a single step\nlinode-cli image-upload \\\n --description \"Optional details about the Image\" \\\n --label \"Example Image\" \\\n --region us-east \\\n /path/to/image-file.img.gz\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n images:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/post-upload-image" @@ -43119,7 +44013,7 @@ "type": "string" }, "region": { - "description": "The region to upload to. Once uploaded, the image can be used in any region.", + "description": "The region to upload to. Once uploaded, the image can be used in any region.\n\n> \ud83d\udcd8\n>\n> Only core regions that support our [Object Storage](https://techdocs.akamai.com/cloud-computing/reference/how-to-choose-a-data-center#product-availability) service can store an uploaded image.", "example": "{{region}}", "type": "string" }, @@ -45545,7 +46439,7 @@ "writeOnly": true }, "authorized_users": { - "description": "__Write-only__ A list of usernames. If the usernames have associated SSH keys, the keys will be appended to the root users `~/.ssh/authorized_keys` file automatically when deploying from an Image.", + "description": "__Write-only__ A list of usernames for authorized users. Before you can add a user, it needs an SSH key assigned to its profile. See [Add an SSH key](https://techdocs.akamai.com/linode-api/reference/post-add-ssh-key) for more information. If the usernames already have associated SSH keys, the keys will be appended to the root users `~/.ssh/authorized_keys` file automatically when deploying from an image.", "example": [ "myUser", "secondaryUser" @@ -46771,7 +47665,7 @@ "operationId": "get-linode-instances", "parameters": [ { - "description": "Specifies a JSON object to filter down the results. See [Filtering and sorting](filtering-and-sorting) for details.", + "description": "Specifies a JSON object to filter down the results. See [Filtering and sorting](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) for details.", "example": "{{X-Filter}}", "in": "header", "name": "X-Filter", @@ -56613,7 +57507,7 @@ }, "/{apiVersion}/linode/instances/{linodeId}/disks": { "post": { - "description": "Add a new disk to an existing Linode. You can create an empty disk to manually configure it later. You can also target a stored `image` to build the disk using a pre-configured file system.\n\n- A Linode can have up to 50 disks.\n\n- When creating an empty disk, you need to provide a `label` for it. If you don't include a `label`, you need to target an `image` instead.\n\n- When you create a disk from an `image`, you need to set a `root_pass` for the disk.\n\n- The default file system for a new disk is `ext4`. If you're creating one from an `image`, the disk inherits the file system of that `image`, is unless you specify otherwise.\n\n- When you deploy a StackScript on a disk:\n\n - You can run [List StackScripts](https://techdocs.akamai.com/linode-api/reference/get-stack-scripts) to review available StackScripts.\n\n - You need to include a compatible `image` when creating the disk. Run [Get a StackScript](https://techdocs.akamai.com/linode-api/reference/get-stack-script) to review compatible images.\n\n - You should supply SSH keys for the disk's root user, using the `authorized_keys` field.\n\n - You can include individual users via the `authorized_users` field. Before you can add a user, it needs an SSH key assigned to its profile. See [Add an SSH key](https://techdocs.akamai.com/linode-api/reference/post-add-ssh-key) for more information.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli linodes disk-create 123 \\\n --size 1300 \\\n --authorized_keys \"ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer\" \\\n --authorized_users \"myUser\" \\\n --authorized_users \"secondaryUser\" \\\n --root_pass aComplex@Password \\\n --image \"linode/debian9\" \\\n --stackscript_id 10079 \\\n --stackscript_data '{\"gh_username\": \"linode\"}'\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n linodes:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Add a new disk to an existing Linode. You can create an empty disk to manually configure it later. You can also target a stored `image` to build the disk using a pre-configured file system--either through an image you've [created](https://techdocs.akamai.com/linode-api/reference/create-an-image) or via a StackScript. For added security with all disks, you should supply SSH keys for the disk's `root_pass` user, using the `authorized_keys` field.\n\n> \ud83d\udcd8\n>\n> A Linode can have up to 50 disks.\n\n**Empty disks**\n\n- When creating an empty disk, a `label` is required.\n\n- The default file system for an empty disk is `ext4`.\n\n**Disks created from an `image`**\n\n- A `root_pass` is required for a disk created from a stored image.\n\n- A created disk inherits both the `label` and the `filesystem` from the target `image`, unless you specify otherwise.\n\n- We offer an example workflow to [create a disk using a stored image](https://techdocs.akamai.com/linode-api/reference/deploy-an-image).\n\n**Disks created from a StackScript**\n\n- You can run [List StackScripts](https://techdocs.akamai.com/linode-api/reference/get-stack-scripts) to review available StackScripts.\n\n- You need to include a StackScript-compatible `image` when creating the disk. Run [Get a StackScript](https://techdocs.akamai.com/linode-api/reference/get-stack-script) to review available images.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli linodes disk-create 123 \\\n --size 1300 \\\n --authorized_keys \"ssh-rsa AAAA_valid_public_ssh_key_123456785== user@their-computer\" \\\n --authorized_users \"myUser\" \\\n --authorized_users \"secondaryUser\" \\\n --root_pass aComplex@Password \\\n --image \"linode/debian9\" \\\n --stackscript_id 10079 \\\n --stackscript_data '{\"gh_username\": \"linode\"}'\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n linodes:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/post-add-linode-disk" @@ -56640,7 +57534,7 @@ "writeOnly": true }, "authorized_users": { - "description": "__Write-only__ A list of usernames. If the usernames have associated SSH keys, the keys will be appended to the root users `~/.ssh/authorized_keys` file automatically when deploying from an Image.", + "description": "__Write-only__ A list of usernames for authorized users. Before you can add a user, it needs an SSH key assigned to its profile. See [Add an SSH key](https://techdocs.akamai.com/linode-api/reference/post-add-ssh-key) for more information. If the usernames already have associated SSH keys, the keys will be appended to the root users `~/.ssh/authorized_keys` file automatically when deploying from an image.", "example": [ "myUser", "secondaryUser" @@ -58384,7 +59278,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -58396,6 +59290,85 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, + "entities": { + "description": "__Read-only__ The Linodes, NodeBalancers, and Linode interfaces this firewall is assigned to.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "The entity's ID.", + "example": 123, + "type": "integer" + }, + "label": { + "description": "__Read-only__ The entity's label.", + "example": "my-linode", + "readOnly": true, + "type": "string" + }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, + "type": { + "description": "The entity's type.", + "enum": [ + "linode", + "linode_interface", + "nodebalancer" + ], + "example": "linode_interface", + "type": "string" + }, + "url": { + "description": "__Read-only__ The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/123", + "format": "url", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "readOnly": true, + "type": "array" + }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", "example": 123, @@ -58658,7 +59631,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -58867,7 +59840,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -58879,6 +59852,85 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, + "entities": { + "description": "__Read-only__ The Linodes, NodeBalancers, and Linode interfaces this firewall is assigned to.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "The entity's ID.", + "example": 123, + "type": "integer" + }, + "label": { + "description": "__Read-only__ The entity's label.", + "example": "my-linode", + "readOnly": true, + "type": "string" + }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, + "type": { + "description": "The entity's type.", + "enum": [ + "linode", + "linode_interface", + "nodebalancer" + ], + "example": "linode_interface", + "type": "string" + }, + "url": { + "description": "__Read-only__ The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/123", + "format": "url", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "readOnly": true, + "type": "array" + }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", "example": 123, @@ -59141,7 +60193,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -59788,17 +60840,17 @@ "ipv6": { "ranges": [ { - "range": "2600:3c09:e001:59::/64", + "range": "2001:DB8::/64", "route_target": "2600:3c09::ff:feab:cdef" }, { - "range": "2600:3c09:e001:5a::/64", + "range": "2001:DB8::/64", "route_target": "2600:3c09::ff:feab:cdef" } ], "shared": [ { - "range": "2600:3c09:e001:2a::/64", + "range": "2001:DB8::/64", "route_target": null } ], @@ -61653,17 +62705,17 @@ "ipv6": { "ranges": [ { - "range": "2600:3c09:e001:59::/64", + "range": "2001:DB8::/64", "route_target": "2600:3c09::ff:feab:cdef" }, { - "range": "2600:3c09:e001:5a::/64", + "range": "2001:DB8::/64", "route_target": "2600:3c09::ff:feab:cdef" } ], "shared": [ { - "range": "2600:3c09:e001:2a::/64", + "range": "2001:DB8::/64", "route_target": null } ], @@ -62549,17 +63601,17 @@ "ipv6": { "ranges": [ { - "range": "2600:3c09:e001:59::/64", + "range": "2001:DB8::/64", "route_target": "2600:3c09::ff:feab:cdef" }, { - "range": "2600:3c09:e001:5a::/64", + "range": "2001:DB8::/64", "route_target": "2600:3c09::ff:feab:cdef" } ], "shared": [ { - "range": "2600:3c09:e001:2a::/64", + "range": "2001:DB8::/64", "route_target": null } ], @@ -63448,7 +64500,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -63460,6 +64512,85 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, + "entities": { + "description": "__Read-only__ The Linodes, NodeBalancers, and Linode interfaces this firewall is assigned to.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "The entity's ID.", + "example": 123, + "type": "integer" + }, + "label": { + "description": "__Read-only__ The entity's label.", + "example": "my-linode", + "readOnly": true, + "type": "string" + }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, + "type": { + "description": "The entity's type.", + "enum": [ + "linode", + "linode_interface", + "nodebalancer" + ], + "example": "linode_interface", + "type": "string" + }, + "url": { + "description": "__Read-only__ The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/123", + "format": "url", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "readOnly": true, + "type": "array" + }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", "example": 123, @@ -63722,7 +64853,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -66644,7 +67775,7 @@ "writeOnly": true }, "authorized_users": { - "description": "__Write-only__ A list of usernames. If the usernames have associated SSH keys, the keys will be appended to the root users `~/.ssh/authorized_keys` file automatically when deploying from an Image.", + "description": "__Write-only__ A list of usernames for authorized users. Before you can add a user, it needs an SSH key assigned to its profile. See [Add an SSH key](https://techdocs.akamai.com/linode-api/reference/post-add-ssh-key) for more information. If the usernames already have associated SSH keys, the keys will be appended to the root users `~/.ssh/authorized_keys` file automatically when deploying from an image.", "example": [ "myUser", "secondaryUser" @@ -69021,17 +70152,17 @@ "ipv6": { "ranges": [ { - "range": "2600:3c09:e001:59::/64", + "range": "2001:DB8::/64", "route_target": "2600:3c09::ff:feab:cdef" }, { - "range": "2600:3c09:e001:5a::/64", + "range": "2001:DB8::/64", "route_target": "2600:3c09::ff:feab:cdef" } ], "shared": [ { - "range": "2600:3c09:e001:2a::/64", + "range": "2001:DB8::/64", "route_target": null } ], @@ -73149,7 +74280,7 @@ }, "/{apiVersion}/lke/clusters": { "post": { - "description": "Creates a Kubernetes cluster. The Kubernetes cluster will be created asynchronously. You can use the events system to determine when the Kubernetes cluster is ready to use. Please note that it often takes 2-5 minutes before the [Kubernetes API endpoints](https://techdocs.akamai.com/linode-api/reference/get-lke-cluster-api-endpoints) and the [Kubeconfig file](https://techdocs.akamai.com/linode-api/reference/get-lke-cluster-kubeconfig) for the new cluster are ready.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli lke cluster-create \\\n --label cluster12345 \\\n --region us-central \\\n --k8s_version 1.32 \\\n --apl_enabled false \\\n --control_plane.high_availability true \\\n --node_pools.type g6-standard-4 --node_pools.count 6 \\\n --node_pools.type g6-standard-8 --node_pools.count 3 \\\n --node_pools.autoscaler.enabled true \\\n --node_pools.autoscaler.max 12 \\\n --node_pools.autoscaler.min 3 \\\n --tags ecomm\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n lke:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Creates a Kubernetes cluster. The Kubernetes cluster will be created asynchronously. You can use the events system to determine when the Kubernetes cluster is ready to use. Please note that it often takes 2-5 minutes before the [Kubernetes API endpoints](https://techdocs.akamai.com/linode-api/reference/get-lke-cluster-api-endpoints) and the [Kubeconfig file](https://techdocs.akamai.com/linode-api/reference/get-lke-cluster-kubeconfig) for the new cluster are ready.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli lke cluster-create \\\n --label cluster12345 \\\n --region us-central \\\n --k8s_version 1.33 \\\n --apl_enabled false \\\n --control_plane.high_availability true \\\n --node_pools.type g6-standard-4 --node_pools.count 6 \\\n --node_pools.type g6-standard-8 --node_pools.count 3 \\\n --node_pools.autoscaler.enabled true \\\n --node_pools.autoscaler.max 12 \\\n --node_pools.autoscaler.min 3 \\\n --tags ecomm\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n lke:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/post-lke-cluster" @@ -73308,7 +74439,8 @@ "example": 6, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 4 }, "disks": { "description": "This node pool's custom disk layout. Each item in this array will create a new disk partition for each node in this node pool.\n\n> \ud83d\udcd8\n>\n> Omit this field, except for special use cases. The disks specified here are partitions in _addition_ to the primary partition and reduce the size of the primary partition. This can lead to stability problems for the node.\n\n - The custom disk layout is applied to each node in this node pool.\n\n - The maximum number of custom disk partitions that can be configured is 7.\n\n - Once the requested disk partitions are allocated, the remaining disk space is allocated to the node's boot disk.\n\n - A node pool's custom disk layout is immutable over the lifetime of the node pool.", @@ -73446,7 +74578,8 @@ "type": { "description": "The Linode Type for all of the nodes in the node pool.", "example": "g6-standard-4", - "type": "string" + "type": "string", + "x-linode-cli-display": 3 }, "update_strategy": { "description": "__Beta__, __LKE Enterprise__ Determines when the worker nodes within this node pool upgrade to the latest selected Kubernetes version, after the cluster has been upgraded. This field is required when creating node pools on LKE Enterprise clusters.\n\n- `rolling_update`: Immediately triggers a recycle of this node pool when the Kubernetes version is updated.\n- `on_recycle` (default): Does not trigger any immediate recycle. New worker nodes are created with the new Kubernetes version. Existing worker nodes will be upgraded when a recycle is manually triggered.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", @@ -73501,8 +74634,7 @@ "LKE Enterprise" ], "status": "BETA" - }, - "x-linode-cli-display": 9 + } }, "subnet_id": { "description": "__Beta__, __LKE Enterprise__ The ID of the VPC subnet to use for the Kubernetes cluster. This subnet must have both IPv4 and IPv6 enabled (dual-stack). When this field is specified, the cluster is deployed to the given subnet and its corresponding VPC. To specify a VPC and have a subnet auto-allocated, use `vpc_id` instead. If `subnet_id` and `vpc_id` are both unspecified, a new VPC and subnet are auto-allocated for the cluster.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", @@ -73513,8 +74645,7 @@ "LKE Enterprise" ], "status": "BETA" - }, - "x-linode-cli-display": 8 + } }, "tags": { "description": "__Filterable__ An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only.", @@ -73559,8 +74690,7 @@ "LKE Enterprise" ], "status": "BETA" - }, - "x-linode-cli-display": 7 + } } }, "required": [ @@ -73605,6 +74735,19 @@ "additionalProperties": false, "description": "Defines settings for the Kubernetes control plane, including enabling High Availability (HA) for the control plane.", "properties": { + "audit_logs_enabled": { + "default": false, + "description": "__Beta__, __LKE Enterprise__ Enables audit logs on the cluster's control plane. These logs provide detailed information about user access and the operations performed on the cluster, which can be useful for security and compliance purposes.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", + "example": true, + "type": "boolean", + "x-akamai": { + "labels": [ + "LKE Enterprise" + ], + "status": "BETA" + }, + "x-linode-cli-display": 4 + }, "high_availability": { "default": false, "description": "Enables High Availability for the cluster's control plane components. It defaults to `false`. Enabling High Availability for LKE is an irreversible change.", @@ -73631,7 +74774,7 @@ }, "k8s_version": { "description": "__Filterable__ The desired Kubernetes version for this Kubernetes cluster in the format of `.`. The latest supported patch version is deployed.", - "example": "1.32", + "example": "1.33", "type": "string", "x-akamai": { "labels": [ @@ -73681,8 +74824,7 @@ "LKE Enterprise" ], "status": "BETA" - }, - "x-linode-cli-display": 9 + } }, "subnet_id": { "description": "__Beta__, __LKE Enterprise__ The ID of the VPC subnet to use for the Kubernetes cluster. This subnet must have both IPv4 and IPv6 enabled (dual-stack). When this field is specified, the cluster is deployed to the given subnet and its corresponding VPC. To specify a VPC and have a subnet auto-allocated, use `vpc_id` instead. If `subnet_id` and `vpc_id` are both unspecified, a new VPC and subnet are auto-allocated for the cluster.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", @@ -73693,8 +74835,7 @@ "LKE Enterprise" ], "status": "BETA" - }, - "x-linode-cli-display": 8 + } }, "tags": { "description": "__Filterable__ An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only.", @@ -73746,8 +74887,7 @@ "LKE Enterprise" ], "status": "BETA" - }, - "x-linode-cli-display": 7 + } } }, "type": "object", @@ -73816,7 +74956,7 @@ "x-akamai": { "tabs": [ { - "syntax": "linode-cli lke cluster-create \\\n --label cluster12345 \\\n --region us-central \\\n --k8s_version 1.32 \\\n --apl_enabled false \\\n --control_plane.high_availability true \\\n --node_pools.type g6-standard-4 --node_pools.count 6 \\\n --node_pools.type g6-standard-8 --node_pools.count 3 \\\n --node_pools.autoscaler.enabled true \\\n --node_pools.autoscaler.max 12 \\\n --node_pools.autoscaler.min 3 \\\n --tags ecomm", + "syntax": "linode-cli lke cluster-create \\\n --label cluster12345 \\\n --region us-central \\\n --k8s_version 1.33 \\\n --apl_enabled false \\\n --control_plane.high_availability true \\\n --node_pools.type g6-standard-4 --node_pools.count 6 \\\n --node_pools.type g6-standard-8 --node_pools.count 3 \\\n --node_pools.autoscaler.enabled true \\\n --node_pools.autoscaler.max 12 \\\n --node_pools.autoscaler.min 3 \\\n --tags ecomm", "title": "CLI", "url": "https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli" }, @@ -73863,6 +75003,19 @@ "additionalProperties": false, "description": "Defines settings for the Kubernetes control plane, including enabling High Availability (HA) for the control plane.", "properties": { + "audit_logs_enabled": { + "default": false, + "description": "__Beta__, __LKE Enterprise__ Enables audit logs on the cluster's control plane. These logs provide detailed information about user access and the operations performed on the cluster, which can be useful for security and compliance purposes.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", + "example": true, + "type": "boolean", + "x-akamai": { + "labels": [ + "LKE Enterprise" + ], + "status": "BETA" + }, + "x-linode-cli-display": 4 + }, "high_availability": { "default": false, "description": "Enables High Availability for the cluster's control plane components. It defaults to `false`. Enabling High Availability for LKE is an irreversible change.", @@ -73889,7 +75042,7 @@ }, "k8s_version": { "description": "__Filterable__ The desired Kubernetes version for this Kubernetes cluster in the format of `.`. The latest supported patch version is deployed.", - "example": "1.32", + "example": "1.33", "type": "string", "x-akamai": { "labels": [ @@ -73939,8 +75092,7 @@ "LKE Enterprise" ], "status": "BETA" - }, - "x-linode-cli-display": 9 + } }, "subnet_id": { "description": "__Beta__, __LKE Enterprise__ The ID of the VPC subnet to use for the Kubernetes cluster. This subnet must have both IPv4 and IPv6 enabled (dual-stack). When this field is specified, the cluster is deployed to the given subnet and its corresponding VPC. To specify a VPC and have a subnet auto-allocated, use `vpc_id` instead. If `subnet_id` and `vpc_id` are both unspecified, a new VPC and subnet are auto-allocated for the cluster.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", @@ -73951,8 +75103,7 @@ "LKE Enterprise" ], "status": "BETA" - }, - "x-linode-cli-display": 8 + } }, "tags": { "description": "__Filterable__ An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only.", @@ -74004,8 +75155,7 @@ "LKE Enterprise" ], "status": "BETA" - }, - "x-linode-cli-display": 7 + } } }, "type": "object", @@ -74168,6 +75318,19 @@ "additionalProperties": false, "description": "Defines settings for the Kubernetes control plane, including enabling High Availability (HA) for the control plane.", "properties": { + "audit_logs_enabled": { + "default": false, + "description": "__Beta__, __LKE Enterprise__ Enables audit logs on the cluster's control plane. These logs provide detailed information about user access and the operations performed on the cluster, which can be useful for security and compliance purposes.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", + "example": true, + "type": "boolean", + "x-akamai": { + "labels": [ + "LKE Enterprise" + ], + "status": "BETA" + }, + "x-linode-cli-display": 4 + }, "high_availability": { "default": false, "description": "Enables High Availability for the cluster's control plane components. It defaults to `false`. Enabling High Availability for LKE is an irreversible change.", @@ -74194,7 +75357,7 @@ }, "k8s_version": { "description": "__Filterable__ The desired Kubernetes version for this Kubernetes cluster in the format of `.`. The latest supported patch version is deployed.", - "example": "1.32", + "example": "1.33", "type": "string", "x-akamai": { "labels": [ @@ -74244,8 +75407,7 @@ "LKE Enterprise" ], "status": "BETA" - }, - "x-linode-cli-display": 9 + } }, "subnet_id": { "description": "__Beta__, __LKE Enterprise__ The ID of the VPC subnet to use for the Kubernetes cluster. This subnet must have both IPv4 and IPv6 enabled (dual-stack). When this field is specified, the cluster is deployed to the given subnet and its corresponding VPC. To specify a VPC and have a subnet auto-allocated, use `vpc_id` instead. If `subnet_id` and `vpc_id` are both unspecified, a new VPC and subnet are auto-allocated for the cluster.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", @@ -74256,8 +75418,7 @@ "LKE Enterprise" ], "status": "BETA" - }, - "x-linode-cli-display": 8 + } }, "tags": { "description": "__Filterable__ An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only.", @@ -74309,8 +75470,7 @@ "LKE Enterprise" ], "status": "BETA" - }, - "x-linode-cli-display": 7 + } } }, "type": "object", @@ -74393,7 +75553,7 @@ "x-linode-cli-action": "cluster-view" }, "put": { - "description": "Updates a Kubernetes cluster.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli lke cluster-update 12345 \\\n --label lkecluster54321 \\\n --control_plane.high_availability true \\\n --k8s_version 1.31 \\\n --tags ecomm \\\n --tags blog \\\n --tags prod \\\n --tags monitoring\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n lke:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Updates a Kubernetes cluster.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli lke cluster-update 12345 \\\n --label lkecluster54321 \\\n --control_plane.high_availability true \\\n --k8s_version 1.33 \\\n --tags ecomm \\\n --tags blog \\\n --tags prod \\\n --tags monitoring\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n lke:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/put-lke-cluster" @@ -74529,11 +75689,34 @@ "application/json": { "schema": { "additionalProperties": false, + "description": "A Kubernetes cluster.", "properties": { + "apl_enabled": { + "description": "__Write-once__ Indicates whether the Akamai App Platform is installed during creation of the LKE cluster. It defaults to `false`. If set to `true`, `control_plane.high_availability` also needs to be `true`. Automatic installation of the App Platform is only possible when creating a new cluster (not when modifying existing clusters).", + "example": true, + "type": "boolean", + "x-akamai": { + "write-once": true + }, + "x-linode-cli-display": 6 + }, "control_plane": { "additionalProperties": false, "description": "Defines settings for the Kubernetes control plane, including enabling High Availability (HA) for the control plane.", "properties": { + "audit_logs_enabled": { + "default": false, + "description": "__Beta__, __LKE Enterprise__ Enables audit logs on the cluster's control plane. These logs provide detailed information about user access and the operations performed on the cluster, which can be useful for security and compliance purposes.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", + "example": true, + "type": "boolean", + "x-akamai": { + "labels": [ + "LKE Enterprise" + ], + "status": "BETA" + }, + "x-linode-cli-display": 4 + }, "high_availability": { "default": false, "description": "Enables High Availability for the cluster's control plane components. It defaults to `false`. Enabling High Availability for LKE is an irreversible change.", @@ -74551,9 +75734,16 @@ "readOnly": true, "type": "string" }, + "id": { + "description": "__Read-only__ This Kubernetes cluster's unique ID.", + "example": 1234, + "readOnly": true, + "type": "integer", + "x-linode-cli-display": 1 + }, "k8s_version": { "description": "__Filterable__ The desired Kubernetes version for this Kubernetes cluster in the format of `.`. The latest supported patch version is deployed.", - "example": "1.32", + "example": "1.33", "type": "string", "x-akamai": { "labels": [ @@ -74589,18 +75779,66 @@ "x-linode-cli-display": 3, "x-linode-filterable": true }, + "stack_type": { + "default": "ipv4", + "description": "__Beta__, __LKE Enterprise__ The networking stack type of the Kubernetes cluster. This specifies that the cluster is IPv4 only (default) or supports both IPv4 and IPv6 (dual-stack).\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", + "enum": [ + "ipv4", + "ipv4-ipv6" + ], + "example": "ipv4", + "type": "string", + "x-akamai": { + "labels": [ + "LKE Enterprise" + ], + "status": "BETA" + } + }, + "subnet_id": { + "description": "__Beta__, __LKE Enterprise__ The ID of the VPC subnet to use for the Kubernetes cluster. This subnet must have both IPv4 and IPv6 enabled (dual-stack). When this field is specified, the cluster is deployed to the given subnet and its corresponding VPC. To specify a VPC and have a subnet auto-allocated, use `vpc_id` instead. If `subnet_id` and `vpc_id` are both unspecified, a new VPC and subnet are auto-allocated for the cluster.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", + "example": 123456, + "type": "integer", + "x-akamai": { + "labels": [ + "LKE Enterprise" + ], + "status": "BETA" + } + }, "tags": { - "description": "An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only. To delete a tag, exclude it from your `tags` array.", + "description": "__Filterable__ An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only.", "example": [ - "prod", - "monitoring", "ecomm", - "blog" + "blogs" ], "items": { "type": "string" }, - "type": "array" + "type": "array", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true + }, + "tier": { + "description": "__Beta__, __Filterable__ The desired Kubernetes tier, either `standard` or `enterprise`.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API. Call the URL with the `apiVersion` path parameter set to `v4beta`.", + "enum": [ + "standard", + "enterprise" + ], + "example": "standard", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-cli-display": 5, + "x-linode-filterable": true }, "updated": { "description": "__Read-only__ When this Kubernetes cluster was updated.", @@ -74608,11 +75846,22 @@ "format": "date-time", "readOnly": true, "type": "string" + }, + "vpc_id": { + "description": "__Beta__, __LKE Enterprise__ The ID of the VPC to use for the Kubernetes cluster. An appropriately sized subnet is auto-allocated. To specify an existing subnet, use `subnet_id` instead. If `subnet_id` and `vpc_id` are both unspecified, a new VPC and subnet are auto-allocated for the cluster.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", + "example": 123456, + "type": "integer", + "x-akamai": { + "labels": [ + "LKE Enterprise" + ], + "status": "BETA" + } } }, "type": "object", "x-akamai": { - "file-path": "schemas/added-put-lke-cluster-200.yaml" + "file-path": "schemas/lke-cluster.yaml" } }, "x-example": { @@ -74640,7 +75889,7 @@ "x-akamai": { "tabs": [ { - "syntax": "linode-cli lke cluster-update 12345 \\\n --label lkecluster54321 \\\n --control_plane.high_availability true \\\n --k8s_version 1.31 \\\n --tags ecomm \\\n --tags blog \\\n --tags prod \\\n --tags monitoring", + "syntax": "linode-cli lke cluster-update 12345 \\\n --label lkecluster54321 \\\n --control_plane.high_availability true \\\n --k8s_version 1.33 \\\n --tags ecomm \\\n --tags blog \\\n --tags prod \\\n --tags monitoring", "title": "CLI", "url": "https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli" }, @@ -76541,7 +77790,8 @@ "example": 6, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 4 }, "disks": { "description": "This node pool's custom disk layout. Each item in this array will create a new disk partition for each node in this node pool.\n\n> \ud83d\udcd8\n>\n> Omit this field, except for special use cases. The disks specified here are partitions in _addition_ to the primary partition and reduce the size of the primary partition. This can lead to stability problems for the node.\n\n - The custom disk layout is applied to each node in this node pool.\n\n - The maximum number of custom disk partitions that can be configured is 7.\n\n - Once the requested disk partitions are allocated, the remaining disk space is allocated to the node's boot disk.\n\n - A node pool's custom disk layout is immutable over the lifetime of the node pool.", @@ -76679,7 +77929,8 @@ "type": { "description": "The Linode Type for all of the nodes in the node pool.", "example": "g6-standard-4", - "type": "string" + "type": "string", + "x-linode-cli-display": 3 }, "update_strategy": { "description": "__Beta__, __LKE Enterprise__ Determines when the worker nodes within this node pool upgrade to the latest selected Kubernetes version, after the cluster has been upgraded. This field is required when creating node pools on LKE Enterprise clusters.\n\n- `rolling_update`: Immediately triggers a recycle of this node pool when the Kubernetes version is updated.\n- `on_recycle` (default): Does not trigger any immediate recycle. New worker nodes are created with the new Kubernetes version. Existing worker nodes will be upgraded when a recycle is manually triggered.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and can only be used with accounts that have been enrolled in the LKE Enterprise LA. Call the URL with the `apiVersion` path parameter set to `v4beta`.", @@ -76739,21 +77990,24 @@ "enabled": { "description": "Whether autoscaling is enabled for this node pool. Defaults to `false`.", "example": true, - "type": "boolean" + "type": "boolean", + "x-linode-cli-display": 5 }, "max": { "description": "The maximum number of nodes to autoscale to. Defaults to the node pool's `count`.", "example": 12, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 6 }, "min": { "description": "The minimum number of nodes to autoscale to. Defaults to the node pool's `count`.", "example": 3, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 7 } }, "type": "object" @@ -76763,7 +78017,8 @@ "example": 6, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 4 }, "disk_encryption": { "description": "Indicates the local disk encryption setting for this LKE node pool.", @@ -76809,6 +78064,7 @@ "Filterable" ] }, + "x-linode-cli-display": 1, "x-linode-filterable": true }, "k8s_version": { @@ -76827,7 +78083,8 @@ "type": "string", "x-akamai": { "status": "BETA" - } + }, + "x-linode-cli-display": 2 }, "labels": { "additionalProperties": { @@ -76893,6 +78150,7 @@ "Filterable" ] }, + "x-linode-cli-display": 8, "x-linode-filterable": true }, "taints": { @@ -76945,7 +78203,8 @@ "type": { "description": "The Linode Type for all of the nodes in the node pool.", "example": "g6-standard-4", - "type": "string" + "type": "string", + "x-linode-cli-display": 3 }, "update_strategy": { "description": "__Beta__ Determines when the worker nodes within this node pool upgrade to the latest selected Kubernetes version, after the cluster has been upgraded. This field is required for LKE Enterprise clusters but should not be used for non-enterprise LKE clusters.", @@ -77065,21 +78324,24 @@ "enabled": { "description": "Whether autoscaling is enabled for this node pool. Defaults to `false`.", "example": true, - "type": "boolean" + "type": "boolean", + "x-linode-cli-display": 5 }, "max": { "description": "The maximum number of nodes to autoscale to. Defaults to the node pool's `count`.", "example": 12, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 6 }, "min": { "description": "The minimum number of nodes to autoscale to. Defaults to the node pool's `count`.", "example": 3, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 7 } }, "type": "object" @@ -77089,7 +78351,8 @@ "example": 6, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 4 }, "disk_encryption": { "description": "Indicates the local disk encryption setting for this LKE node pool.", @@ -77135,6 +78398,7 @@ "Filterable" ] }, + "x-linode-cli-display": 1, "x-linode-filterable": true }, "k8s_version": { @@ -77153,7 +78417,8 @@ "type": "string", "x-akamai": { "status": "BETA" - } + }, + "x-linode-cli-display": 2 }, "labels": { "additionalProperties": { @@ -77219,6 +78484,7 @@ "Filterable" ] }, + "x-linode-cli-display": 8, "x-linode-filterable": true }, "taints": { @@ -77271,7 +78537,8 @@ "type": { "description": "The Linode Type for all of the nodes in the node pool.", "example": "g6-standard-4", - "type": "string" + "type": "string", + "x-linode-cli-display": 3 }, "update_strategy": { "description": "__Beta__ Determines when the worker nodes within this node pool upgrade to the latest selected Kubernetes version, after the cluster has been upgraded. This field is required for LKE Enterprise clusters but should not be used for non-enterprise LKE clusters.", @@ -77452,21 +78719,24 @@ "enabled": { "description": "Whether autoscaling is enabled for this node pool. Defaults to `false`.", "example": true, - "type": "boolean" + "type": "boolean", + "x-linode-cli-display": 5 }, "max": { "description": "The maximum number of nodes to autoscale to. Defaults to the node pool's `count`.", "example": 12, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 6 }, "min": { "description": "The minimum number of nodes to autoscale to. Defaults to the node pool's `count`.", "example": 3, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 7 } }, "type": "object" @@ -77476,7 +78746,8 @@ "example": 6, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 4 }, "disk_encryption": { "description": "Indicates the local disk encryption setting for this LKE node pool.", @@ -77522,6 +78793,7 @@ "Filterable" ] }, + "x-linode-cli-display": 1, "x-linode-filterable": true }, "k8s_version": { @@ -77540,7 +78812,8 @@ "type": "string", "x-akamai": { "status": "BETA" - } + }, + "x-linode-cli-display": 2 }, "labels": { "additionalProperties": { @@ -77606,6 +78879,7 @@ "Filterable" ] }, + "x-linode-cli-display": 8, "x-linode-filterable": true }, "taints": { @@ -77658,7 +78932,8 @@ "type": { "description": "The Linode Type for all of the nodes in the node pool.", "example": "g6-standard-4", - "type": "string" + "type": "string", + "x-linode-cli-display": 3 }, "update_strategy": { "description": "__Beta__ Determines when the worker nodes within this node pool upgrade to the latest selected Kubernetes version, after the cluster has been upgraded. This field is required for LKE Enterprise clusters but should not be used for non-enterprise LKE clusters.", @@ -77760,7 +79035,8 @@ "example": "{{count}}", "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 4 }, "labels": { "additionalProperties": { @@ -77875,21 +79151,24 @@ "enabled": { "description": "Whether autoscaling is enabled for this node pool. Defaults to `false`.", "example": true, - "type": "boolean" + "type": "boolean", + "x-linode-cli-display": 5 }, "max": { "description": "The maximum number of nodes to autoscale to. Defaults to the node pool's `count`.", "example": 12, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 6 }, "min": { "description": "The minimum number of nodes to autoscale to. Defaults to the node pool's `count`.", "example": 3, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 7 } }, "type": "object" @@ -77899,7 +79178,8 @@ "example": 6, "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 4 }, "disk_encryption": { "description": "Indicates the local disk encryption setting for this LKE node pool.", @@ -77945,6 +79225,7 @@ "Filterable" ] }, + "x-linode-cli-display": 1, "x-linode-filterable": true }, "k8s_version": { @@ -77963,7 +79244,8 @@ "type": "string", "x-akamai": { "status": "BETA" - } + }, + "x-linode-cli-display": 2 }, "labels": { "additionalProperties": { @@ -78029,6 +79311,7 @@ "Filterable" ] }, + "x-linode-cli-display": 8, "x-linode-filterable": true }, "taints": { @@ -78081,7 +79364,8 @@ "type": { "description": "The Linode Type for all of the nodes in the node pool.", "example": "g6-standard-4", - "type": "string" + "type": "string", + "x-linode-cli-display": 3 }, "update_strategy": { "description": "__Beta__ Determines when the worker nodes within this node pool upgrade to the latest selected Kubernetes version, after the cluster has been upgraded. This field is required for LKE Enterprise clusters but should not be used for non-enterprise LKE clusters.", @@ -78995,15 +80279,15 @@ "value": { "data": [ { - "id": "1.32", + "id": "1.33", "tier": "standard" }, { - "id": "1.31", + "id": "1.32", "tier": "standard" }, { - "id": "1.30", + "id": "1.31", "tier": "standard" } ], @@ -79222,7 +80506,7 @@ "standard": { "summary": "LKE version for standard tier", "value": { - "id": "1.32", + "id": "1.33", "tier": "standard" } } @@ -79377,7 +80661,7 @@ "name": "version", "required": true, "schema": { - "example": "1.32", + "example": "1.33", "type": "string" }, "x-akamai": { @@ -79637,13 +80921,13 @@ "example": { "data": [ { - "id": "1.32" + "id": "1.33" }, { - "id": "1.31" + "id": "1.32" }, { - "id": "1.30" + "id": "1.31" } ], "page": 1, @@ -79820,7 +81104,7 @@ "content": { "application/json": { "example": { - "id": "1.32" + "id": "1.33" }, "schema": { "additionalProperties": false, @@ -79943,7 +81227,7 @@ "name": "version", "required": true, "schema": { - "example": "1.32", + "example": "1.33", "type": "string" }, "x-akamai": { @@ -89439,15 +90723,12 @@ } }, { - "description": "__Enum__ The Akamai Cloud Computing service being monitored. Currently, only the Managed Databases (`dbaas`) service type is supported.", + "description": "The Akamai Cloud Computing service being monitored.", "example": "{{service_type}}", "in": "path", "name": "service_type", "required": true, "schema": { - "enum": [ - "dbaas" - ], "example": "dbaas", "type": "string" }, @@ -90697,15 +91978,12 @@ } }, { - "description": "__Enum__ The Akamai Cloud Computing service being monitored. Currently, only the Managed Databases (`dbaas`) service type is supported.", + "description": "The Akamai Cloud Computing service being monitored.", "example": "{{service_type}}", "in": "path", "name": "service_type", "required": true, "schema": { - "enum": [ - "dbaas" - ], "example": "dbaas", "type": "string" }, @@ -91957,15 +93235,12 @@ } }, { - "description": "__Enum__ The Akamai Cloud Computing service being monitored. Currently, only the Managed Databases (`dbaas`) service type is supported.", + "description": "The Akamai Cloud Computing service being monitored.", "example": "{{service_type}}", "in": "path", "name": "service_type", "required": true, "schema": { - "enum": [ - "dbaas" - ], "example": "dbaas", "type": "string" }, @@ -92295,15 +93570,12 @@ } }, { - "description": "__Enum__ The Akamai Cloud Computing service being monitored. Currently, only the Managed Databases (`dbaas`) service type is supported.", + "description": "The Akamai Cloud Computing service being monitored.", "example": "{{service_type}}", "in": "path", "name": "service_type", "required": true, "schema": { - "enum": [ - "dbaas" - ], "example": "dbaas", "type": "string" }, @@ -92708,15 +93980,12 @@ } }, { - "description": "__Enum__ The Akamai Cloud Computing service being monitored. Currently, only the Managed Databases (`dbaas`) service type is supported.", + "description": "The Akamai Cloud Computing service being monitored.", "example": "{{service_type}}", "in": "path", "name": "service_type", "required": true, "schema": { - "enum": [ - "dbaas" - ], "example": "dbaas", "type": "string" }, @@ -93349,15 +94618,12 @@ }, "parameters": [ { - "description": "__Enum__ The Akamai Cloud Computing service being monitored. Currently, only the Managed Databases (`dbaas`) service type is supported.", + "description": "The Akamai Cloud Computing service being monitored.", "example": "{{service_type}}", "in": "path", "name": "service_type", "required": true, "schema": { - "enum": [ - "dbaas" - ], "example": "dbaas", "type": "string" }, @@ -93548,15 +94814,12 @@ } }, { - "description": "__Enum__ The Akamai Cloud Computing service being monitored. Currently, only the Managed Databases (`dbaas`) service type is supported.", + "description": "The Akamai Cloud Computing service being monitored.", "example": "{{service_type}}", "in": "path", "name": "service_type", "required": true, "schema": { - "enum": [ - "dbaas" - ], "example": "dbaas", "type": "string" }, @@ -93822,7 +95085,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -93834,6 +95097,85 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, + "entities": { + "description": "__Read-only__ The Linodes, NodeBalancers, and Linode interfaces this firewall is assigned to.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "The entity's ID.", + "example": 123, + "type": "integer" + }, + "label": { + "description": "__Read-only__ The entity's label.", + "example": "my-linode", + "readOnly": true, + "type": "string" + }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, + "type": { + "description": "The entity's type.", + "enum": [ + "linode", + "linode_interface", + "nodebalancer" + ], + "example": "linode_interface", + "type": "string" + }, + "url": { + "description": "__Read-only__ The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/123", + "format": "url", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "readOnly": true, + "type": "array" + }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", "example": 123, @@ -94096,7 +95438,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -94203,7 +95545,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -94215,6 +95557,85 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, + "entities": { + "description": "__Read-only__ The Linodes, NodeBalancers, and Linode interfaces this firewall is assigned to.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "The entity's ID.", + "example": 123, + "type": "integer" + }, + "label": { + "description": "__Read-only__ The entity's label.", + "example": "my-linode", + "readOnly": true, + "type": "string" + }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, + "type": { + "description": "The entity's type.", + "enum": [ + "linode", + "linode_interface", + "nodebalancer" + ], + "example": "linode_interface", + "type": "string" + }, + "url": { + "description": "__Read-only__ The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/123", + "format": "url", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "readOnly": true, + "type": "array" + }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", "example": 123, @@ -94477,7 +95898,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -94615,6 +96036,91 @@ "200": { "content": { "application/json": { + "example": { + "created": "2025-05-01T15:12:51", + "entities": [ + { + "id": 5000, + "label": "linode5000", + "parent_entity": null, + "type": "linode", + "url": "/v4/linode/instances/5000" + }, + { + "id": 2, + "label": null, + "parent_entity": { + "id": 5000, + "label": "linode5000", + "parent_entity": null, + "type": "linode", + "url": "/v4/linode/instances/5000" + }, + "type": "interface", + "url": "/v4/linode/instances/506963/interfaces/2" + }, + { + "id": 6, + "label": null, + "parent_entity": { + "id": 5000, + "label": "linode506969", + "parent_entity": null, + "type": "linode", + "url": "/v4/linode/instances/506969" + }, + "type": "interface", + "url": "/v4/linode/instances/506969/interfaces/6" + } + ], + "id": 1, + "label": "myfw", + "rules": { + "fingerprint": "9eb911da", + "inbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "inbound_policy": "DROP", + "outbound": [ + { + "action": "ACCEPT", + "addresses": { + "ipv4": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "ipv6": [ + "2001:DB8::/128" + ] + }, + "description": "An example firewall rule description.", + "label": "firewallrule123", + "ports": "22-24, 80, 443", + "protocol": "TCP" + } + ], + "outbound_policy": "ACCEPT", + "version": 1 + }, + "status": "enabled", + "tags": [], + "updated": "2025-05-01T15:12:51" + }, "schema": { "additionalProperties": false, "properties": { @@ -94625,7 +96131,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -94637,6 +96143,85 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, + "entities": { + "description": "__Read-only__ The Linodes, NodeBalancers, and Linode interfaces this firewall is assigned to.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "The entity's ID.", + "example": 123, + "type": "integer" + }, + "label": { + "description": "__Read-only__ The entity's label.", + "example": "my-linode", + "readOnly": true, + "type": "string" + }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, + "type": { + "description": "The entity's type.", + "enum": [ + "linode", + "linode_interface", + "nodebalancer" + ], + "example": "linode_interface", + "type": "string" + }, + "url": { + "description": "__Read-only__ The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/123", + "format": "url", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "readOnly": true, + "type": "array" + }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", "example": 123, @@ -94899,7 +96484,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -94942,9 +96527,6 @@ "x-akamai": { "file-path": "schemas/added-get-firewalls-200.yaml" } - }, - "x-example": { - "x-ref": "../examples/get-firewalls-200.json" } } }, @@ -96471,7 +98053,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -96483,6 +98065,85 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, + "entities": { + "description": "__Read-only__ The Linodes, NodeBalancers, and Linode interfaces this firewall is assigned to.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "The entity's ID.", + "example": 123, + "type": "integer" + }, + "label": { + "description": "__Read-only__ The entity's label.", + "example": "my-linode", + "readOnly": true, + "type": "string" + }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, + "type": { + "description": "The entity's type.", + "enum": [ + "linode", + "linode_interface", + "nodebalancer" + ], + "example": "linode_interface", + "type": "string" + }, + "url": { + "description": "__Read-only__ The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/123", + "format": "url", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "readOnly": true, + "type": "array" + }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", "example": 123, @@ -96745,7 +98406,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -96915,7 +98576,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -96927,6 +98588,85 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, + "entities": { + "description": "__Read-only__ The Linodes, NodeBalancers, and Linode interfaces this firewall is assigned to.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "The entity's ID.", + "example": 123, + "type": "integer" + }, + "label": { + "description": "__Read-only__ The entity's label.", + "example": "my-linode", + "readOnly": true, + "type": "string" + }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, + "type": { + "description": "The entity's type.", + "enum": [ + "linode", + "linode_interface", + "nodebalancer" + ], + "example": "linode_interface", + "type": "string" + }, + "url": { + "description": "__Read-only__ The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/123", + "format": "url", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "readOnly": true, + "type": "array" + }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", "example": 123, @@ -97189,7 +98929,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -97433,7 +99173,7 @@ "allOf": [ { "additionalProperties": false, - "description": "The compute service or interface this firewall is assigned to.", + "description": "The Linode, NodeBalancer, or Linode interface this firewall is assigned to.", "properties": { "id": { "description": "The entity's ID.", @@ -97446,6 +99186,46 @@ "readOnly": true, "type": "string" }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a Linode.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, "type": { "description": "The entity's type.", "enum": [ @@ -97492,7 +99272,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this device was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -97506,7 +99286,7 @@ }, "entity": { "additionalProperties": false, - "description": "The compute service or interface this firewall is assigned to.", + "description": "The Linode, NodeBalancer, or Linode interface this firewall is assigned to.", "properties": { "id": { "description": "The entity's ID.", @@ -97519,6 +99299,46 @@ "readOnly": true, "type": "string" }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a Linode.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, "type": { "description": "The entity's type.", "enum": [ @@ -97553,7 +99373,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this device was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -97701,6 +99521,7 @@ "entity": { "id": 123, "label": "my-linode", + "parent_entity": null, "type": "linode", "url": "/v4/linode/instances/123" }, @@ -97712,6 +99533,7 @@ "entity": { "id": 321, "label": "my-nodebalancer", + "parent_entity": null, "type": "nodebalancer", "url": "/v4/nodebalancers/1234" }, @@ -97723,6 +99545,13 @@ "entity": { "id": 321, "label": "my-interface", + "parent_entity": { + "id": 5000, + "label": "linode5000", + "parent_entity": null, + "type": "linode", + "url": "/v4/linode/instances/5000" + }, "type": "linode_interfaces", "url": "/v4/linode/instances/123/linode_interfaces/12345" }, @@ -97736,7 +99565,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this device was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -97750,7 +99579,7 @@ }, "entity": { "additionalProperties": false, - "description": "The compute service or interface this firewall is assigned to.", + "description": "The Linode, NodeBalancer, or Linode interface this firewall is assigned to.", "properties": { "id": { "description": "The entity's ID.", @@ -97763,6 +99592,46 @@ "readOnly": true, "type": "string" }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a Linode.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, "type": { "description": "The entity's type.", "enum": [ @@ -97797,7 +99666,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this device was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -97973,7 +99842,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this device was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -97987,7 +99856,7 @@ }, "entity": { "additionalProperties": false, - "description": "The compute service or interface this firewall is assigned to.", + "description": "The Linode, NodeBalancer, or Linode interface this firewall is assigned to.", "properties": { "id": { "description": "The entity's ID.", @@ -98000,6 +99869,46 @@ "readOnly": true, "type": "string" }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a Linode.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, "type": { "description": "The entity's type.", "enum": [ @@ -98034,7 +99943,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this device was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -98292,7 +100201,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -98304,6 +100213,85 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, + "entities": { + "description": "__Read-only__ The Linodes, NodeBalancers, and Linode interfaces this firewall is assigned to.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "The entity's ID.", + "example": 123, + "type": "integer" + }, + "label": { + "description": "__Read-only__ The entity's label.", + "example": "my-linode", + "readOnly": true, + "type": "string" + }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, + "type": { + "description": "The entity's type.", + "enum": [ + "linode", + "linode_interface", + "nodebalancer" + ], + "example": "linode_interface", + "type": "string" + }, + "url": { + "description": "__Read-only__ The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/123", + "format": "url", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "readOnly": true, + "type": "array" + }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", "example": 123, @@ -98566,7 +100554,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -98716,7 +100704,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -98728,6 +100716,85 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, + "entities": { + "description": "__Read-only__ The Linodes, NodeBalancers, and Linode interfaces this firewall is assigned to.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "The entity's ID.", + "example": 123, + "type": "integer" + }, + "label": { + "description": "__Read-only__ The entity's label.", + "example": "my-linode", + "readOnly": true, + "type": "string" + }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, + "type": { + "description": "The entity's type.", + "enum": [ + "linode", + "linode_interface", + "nodebalancer" + ], + "example": "linode_interface", + "type": "string" + }, + "url": { + "description": "__Read-only__ The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/123", + "format": "url", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "readOnly": true, + "type": "array" + }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", "example": 123, @@ -98990,7 +101057,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -118229,7 +120296,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -118241,6 +120308,85 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, + "entities": { + "description": "__Read-only__ The Linodes, NodeBalancers, and Linode interfaces this firewall is assigned to.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "The entity's ID.", + "example": 123, + "type": "integer" + }, + "label": { + "description": "__Read-only__ The entity's label.", + "example": "my-linode", + "readOnly": true, + "type": "string" + }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, + "type": { + "description": "The entity's type.", + "enum": [ + "linode", + "linode_interface", + "nodebalancer" + ], + "example": "linode_interface", + "type": "string" + }, + "url": { + "description": "__Read-only__ The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/123", + "format": "url", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "readOnly": true, + "type": "array" + }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", "example": 123, @@ -118503,7 +120649,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -118780,7 +120926,7 @@ "properties": { "created": { "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", + "example": "2025-01-01T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -118792,6 +120938,85 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, + "entities": { + "description": "__Read-only__ The Linodes, NodeBalancers, and Linode interfaces this firewall is assigned to.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "The entity's ID.", + "example": 123, + "type": "integer" + }, + "label": { + "description": "__Read-only__ The entity's label.", + "example": "my-linode", + "readOnly": true, + "type": "string" + }, + "parent_entity": { + "additionalProperties": false, + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, + "properties": { + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" + }, + "label": { + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", + "type": "string" + }, + "parent_entity": { + "description": "__Read-only__ Currently, no parent entity has a parent of its own. Each `parent_entity` will have its own `parent_entity` set to `null`.", + "example": null, + "nullable": true, + "readOnly": true, + "type": "string" + }, + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", + "enum": [ + "linode" + ], + "example": "linode", + "type": "string" + }, + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", + "type": "string" + } + }, + "readOnly": true, + "type": "object" + }, + "type": { + "description": "The entity's type.", + "enum": [ + "linode", + "linode_interface", + "nodebalancer" + ], + "example": "linode_interface", + "type": "string" + }, + "url": { + "description": "__Read-only__ The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/123", + "format": "url", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "readOnly": true, + "type": "array" + }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", "example": 123, @@ -119054,7 +121279,7 @@ }, "updated": { "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -119839,7 +122064,7 @@ }, "/{apiVersion}/object-storage/buckets": { "post": { - "description": "Creates an Object Storage bucket in the specified data center ([region](https://techdocs.akamai.com/linode-api/reference/get-regions)). If the bucket already exists on your account, this operation returns a 200 response with that bucket as if the API just created it.\n\n> \ud83d\udcd8\n>\n> - Accounts with negative balances can't access this operation.\n>\n> - The API still supports the `clusterId` equivalent (`us-west-1`) when setting a `region` for a new bucket, but you should use the `regionId` (`us-west`) instead.\n>\n> - You can use an outside API, such as the [Ceph Object Gateway S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#put-bucket) for more options.\n\n\n<>\n\n---\n\n\n- __OAuth scopes__.\n\n ```\n object_storage:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Creates an Object Storage bucket in the specified data center ([region](https://techdocs.akamai.com/linode-api/reference/get-regions)). If the bucket already exists on your account, this operation returns a 200 response with that bucket as if the API just created it.\n\n> \ud83d\udcd8\n>\n> - Accounts with negative balances can't access this operation.\n>\n> - The API still supports the `clusterId` equivalent (`us-west-1`) when setting a `region` for a new bucket, but you should use the `regionId` (`us-west`) instead.\n>\n> - This operation has specific [rate limits](https://techdocs.akamai.com/linode-api/reference/rate-limits#specific-operation-rate-limits).\n>\n> - You can use an outside API, such as the [Ceph Object Gateway S3 API](https://docs.ceph.com/en/latest/radosgw/s3/bucketops/#put-bucket) for more options.\n\n\n<>\n\n---\n\n\n- __OAuth scopes__.\n\n ```\n object_storage:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/post-object-storage-bucket" @@ -120862,7 +123087,7 @@ ], "summary": "Allow access to an Object Storage bucket", "tags": [ - "Bucket access" + "Buckets" ], "x-akamai": { "tabs": [ @@ -120980,7 +123205,7 @@ ], "summary": "Get Object Storage bucket access", "tags": [ - "Bucket access" + "Buckets" ], "x-akamai": { "tabs": [ @@ -121103,7 +123328,7 @@ ], "summary": "Update access to an Object Storage bucket", "tags": [ - "Bucket access" + "Buckets" ], "x-akamai": { "tabs": [ @@ -121276,7 +123501,7 @@ ], "summary": "Get an Object Storage object ACL configuration", "tags": [ - "ACL configurations" + "Buckets" ], "x-akamai": { "tabs": [ @@ -121403,7 +123628,7 @@ ], "summary": "Update an object's ACL configuration", "tags": [ - "ACL configurations" + "Buckets" ], "x-akamai": { "tabs": [ @@ -121651,7 +123876,7 @@ ], "summary": "List Object Storage bucket contents", "tags": [ - "Bucket contents" + "Buckets" ], "x-akamai": { "tabs": [ @@ -122731,7 +124956,7 @@ }, "/{apiVersion}/object-storage/endpoints": { "get": { - "description": "Returns a paginated list of all Object Storage endpoints available in your account.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli object-storage endpoints\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n object_storage:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Returns a paginated list of all Object Storage [endpoints](https://techdocs.akamai.com/cloud-computing/docs/object-storage#endpoint-types) available in your account.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli object-storage endpoints\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n object_storage:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/get-object-storage-endpoints" @@ -122741,6 +124966,18 @@ "200": { "content": { "application/json": { + "example": { + "data": [ + { + "endpoint_type": "E1", + "region": "us-iad", + "s3_endpoint": "us-iad-1.linodeobjects.com" + } + ], + "page": 1, + "pages": 1, + "results": 1 + }, "schema": { "allOf": [ { @@ -122818,9 +125055,6 @@ "x-akamai": { "file-path": "schemas/added-get-object-storage-endpoints-200.yaml" } - }, - "x-example": { - "x-ref": "../examples/added-get-object-storage-endpoints-200.json" } } }, @@ -122920,7 +125154,7 @@ }, "/{apiVersion}/object-storage/keys": { "post": { - "description": "Provisions a new Object Storage key for authentication. A successful request triggers an `obj_access_key_create` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n> \ud83d\udcd8\n>\n> Accounts with negative balances can't access this operation.\n\n**Create an unlimited access key**\n\nThis type of key grants full access to all of your buckets in each region you name, using the `regions` array. Run the [List regions](https://techdocs.akamai.com/linode-api/reference/get-regions) operation, verify that each desired region includes `\"Object Storage\"` among its `capabilities`, and store the `id` value for each. Leave the `bucket_access` array out to create an unlimited access key.\n\nCheck out this [example workflow](https://techdocs.akamai.com/linode-api/reference/create-an-unlimited-access-key) for an unlimited access key.\n\n**Create a limited access key**\n\nThis type of key lets you name specific buckets where you need to manage content. In the `bucket_access` array, include individual objects for each bucket, comprised of the target `bucket_name`, the `permissions` level for access to the bucket, and the `region` where the bucket lives. Run the [List Object Storage buckets](https://techdocs.akamai.com/linode-api/reference/get-object-storage-buckets) operation and store the `label`, to use as the `bucket_name`, and the `region` for each. With a limited access key, the parent-level `regions` array isn't required.\n\nCheck out this [example workflow](https://techdocs.akamai.com/linode-api/reference/create-a-limited-access-key) for a limited access key.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli object-storage keys-create \\\n --label \"my-object-storage-key\" \\\n --bucket_access '[{\"region\": \"ap-south\", \"bucket_name\": \"bucket-example-1\", \"permissions\": \"read_write\" }]'\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n object_storage:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Provisions a new Object Storage key for authentication. A successful request triggers an `obj_access_key_create` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n> \ud83d\udcd8\n>\n> - Accounts with negative balances can't access this operation.\n>\n> - This operation has specific [rate limits](https://techdocs.akamai.com/linode-api/reference/rate-limits#specific-operation-rate-limits).\n\n**Create an unlimited access key**\n\nThis type of key grants full access to all of your buckets in each region you name, using the `regions` array. Run the [List regions](https://techdocs.akamai.com/linode-api/reference/get-regions) operation, verify that each desired region includes `\"Object Storage\"` among its `capabilities`, and store the `id` value for each. Leave the `bucket_access` array out to create an unlimited access key.\n\nCheck out this [example workflow](https://techdocs.akamai.com/linode-api/reference/create-an-unlimited-access-key) for an unlimited access key.\n\n**Create a limited access key**\n\nThis type of key lets you name specific buckets where you need to manage content. In the `bucket_access` array, include individual objects for each bucket, comprised of the target `bucket_name`, the `permissions` level for access to the bucket, and the `region` where the bucket lives. Run the [List Object Storage buckets](https://techdocs.akamai.com/linode-api/reference/get-object-storage-buckets) operation and store the `label`, to use as the `bucket_name`, and the `region` for each. With a limited access key, the parent-level `regions` array isn't required.\n\nCheck out this [example workflow](https://techdocs.akamai.com/linode-api/reference/create-a-limited-access-key) for a limited access key.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli object-storage keys-create \\\n --label \"my-object-storage-key\" \\\n --bucket_access '[{\"region\": \"ap-south\", \"bucket_name\": \"bucket-example-1\", \"permissions\": \"read_write\" }]'\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n object_storage:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/post-object-storage-keys" @@ -123775,7 +126009,7 @@ "x-linode-cli-action": "keys-view" }, "put": { - "description": "Updates an Object Storage key on your account. A successful request triggers an `obj_access_key_update` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli object-storage keys-update \\\n --keyId 12345\n --label \"my-object-storage-key\"\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n object_storage:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Updates an Object Storage key on your account. A successful request triggers an `obj_access_key_update` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n> \ud83d\udcd8\n>\n> This operation has specific [rate limits](https://techdocs.akamai.com/linode-api/reference/rate-limits#specific-operation-rate-limits).\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli object-storage keys-update \\\n --keyId 12345\n --label \"my-object-storage-key\"\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n object_storage:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/put-object-storage-key" @@ -123983,7 +126217,7 @@ "x-linode-cli-action": "keys-update" }, "delete": { - "description": "Revokes an Object Storage Key. This key pair will no longer be usable by third-party clients. A successful request triggers an `obj_access_key_delete` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli object-storage keys-delete 12345\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n object_storage:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Revokes an Object Storage Key. This key pair will no longer be usable by third-party clients. A successful request triggers an `obj_access_key_delete` [event](https://techdocs.akamai.com/linode-api/reference/get-events).\n\n> \ud83d\udcd8\n>\n> This operation has specific [rate limits](https://techdocs.akamai.com/linode-api/reference/rate-limits#specific-operation-rate-limits).\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli object-storage keys-delete 12345\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __OAuth scopes__.\n\n ```\n object_storage:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/delete-object-storage-key" @@ -124318,7 +126552,7 @@ ], "summary": "List Object Storage quotas", "tags": [ - "Object Storage quotas" + "Object Storage" ], "x-akamai": { "tabs": [ @@ -124518,7 +126752,7 @@ ], "summary": "Get an Object Storage quota", "tags": [ - "Object Storage quotas" + "Object Storage" ], "x-akamai": { "tabs": [ @@ -124670,7 +126904,7 @@ ], "summary": "Get Object Storage quota usage data", "tags": [ - "Object Storage quotas" + "Object Storage" ], "x-akamai": { "tabs": [ @@ -125052,7 +127286,7 @@ }, "summary": "List Object Storage types", "tags": [ - "Object Storage types" + "Object Storage" ], "x-akamai": { "tabs": [ @@ -132387,10 +134621,7 @@ "description": "__Beta__ Lists the services in this region that support metrics and alerts use with Akamai Cloud Pulse (ACLP).\n\n> \ud83d\udcd8\n>\n> The ACLP service is currently beta. This object is only returned in a response if you're participating in the ACLP beta. Contact your account team for more information.", "properties": { "alerts": { - "description": "Each `service_type` supported for use in managing ACLP [alerts](https://techdocs.akamai.com/linode-api/reference/post-alert-definition-for-service-type) in this region. A `service_type` is the identifier for the Akamai Cloud Computing service. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "Each `service_type` supported for use in managing ACLP [alerts](https://techdocs.akamai.com/linode-api/reference/post-alert-definition-for-service-type) in this region, for your account. A `service_type` identifies the Akamai Cloud Computing service.", "example": [ "dbaas" ], @@ -132400,10 +134631,7 @@ "type": "array" }, "metrics": { - "description": "Each `service_type` supported for use in managing ACLP [metrics](https://techdocs.akamai.com/linode-api/reference/get-dashboards-all) in this region. A `service_type` is the identifier for the Akamai Cloud Computing service. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "Each `service_type` supported for use in managing ACLP [metrics](https://techdocs.akamai.com/linode-api/reference/get-dashboards-all) in this region, for your account. A `service_type` identifies the Akamai Cloud Computing service.", "example": [ "dbaas" ], @@ -132866,10 +135094,7 @@ "description": "__Beta__ Lists the services in this region that support metrics and alerts use with Akamai Cloud Pulse (ACLP).\n\n> \ud83d\udcd8\n>\n> The ACLP service is currently beta. This object is only returned in a response if you're participating in the ACLP beta. Contact your account team for more information.", "properties": { "alerts": { - "description": "Each `service_type` supported for use in managing ACLP [alerts](https://techdocs.akamai.com/linode-api/reference/post-alert-definition-for-service-type) in this region. A `service_type` is the identifier for the Akamai Cloud Computing service. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "Each `service_type` supported for use in managing ACLP [alerts](https://techdocs.akamai.com/linode-api/reference/post-alert-definition-for-service-type) in this region, for your account. A `service_type` identifies the Akamai Cloud Computing service.", "example": [ "dbaas" ], @@ -132879,10 +135104,7 @@ "type": "array" }, "metrics": { - "description": "Each `service_type` supported for use in managing ACLP [metrics](https://techdocs.akamai.com/linode-api/reference/get-dashboards-all) in this region. A `service_type` is the identifier for the Akamai Cloud Computing service. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "Each `service_type` supported for use in managing ACLP [metrics](https://techdocs.akamai.com/linode-api/reference/get-dashboards-all) in this region, for your account. A `service_type` identifies the Akamai Cloud Computing service.", "example": [ "dbaas" ], @@ -133320,7 +135542,7 @@ }, "severity": { "default": null, - "description": "The severity of the issue. Set `1` for major issues, `2` for moderate priority issues, or `3` for low priority issues.\n\nSetting this field may not be available for all accounts.", + "description": "The severity of the issue. A value of `1` indicates a major issue, `2` indicates a moderate priority issue, and `3` is a low priority issue. Your account may not have access to set this value. Talk to your Akamai account team for more details.", "enum": [ 1, 2, @@ -135500,7 +137722,7 @@ "203.0.113.1", "192.0.2.1" ], - "ipv6": "c001:d00d::1337/128", + "ipv6": "2001:DB8::/128", "label": "linode123", "lke_cluster_id": 1, "placement_group": {