diff --git a/openapi.json b/openapi.json index 2a87c176e..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": { @@ -726,6 +819,19 @@ "type": "string", "x-linode-cli-display": 2 }, + "maintenance_policy": { + "description": "__Beta__ Defines the default maintenance policy for new Linodes created on this account. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "status": "BETA" + }, + "x-linode-cli-display": 7 + }, "managed": { "description": "__Read-only__ Our 24/7 incident response service. This robust, multi-homed monitoring system distributes monitoring checks to ensure that your servers remain online and available at all times. Linode Managed can monitor any service or software stack reachable over TCP or HTTP. Once you add a service to Linode Managed, we'll monitor it for connectivity, response, and total request time.", "example": true, @@ -1683,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" @@ -1821,17 +1927,42 @@ "additionalProperties": false, "description": "Information about maintenance affecting an entity.", "properties": { + "complete_time": { + "description": "__Beta__, __Filterable__ The time the maintenance completed. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, + "description": { + "description": "__Beta__ Differentiates between scheduled and emergency maintenance.", + "enum": [ + "Scheduled Maintenance", + "Emergency Maintenance" + ], + "example": "Scheduled Maintenance", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "entity": { "additionalProperties": false, - "description": "The entity being affected by maintenance.", + "description": "The entity affected by the maintenance.", "properties": { "id": { - "description": "The id of the entity being affected by maintenance.", + "description": "The unique identifier of the entity targeted by the maintenance.", "example": 1234, "type": "number" }, "label": { - "description": "The label of the entity being affected by maintenance.", + "description": "The name of the entity targeted by the maintenance.", "example": "demo-linode", "type": "string" }, @@ -1841,24 +1972,77 @@ "type": "string" }, "url": { - "description": "The API endpoint prefix to use in combination with the entity id to find specific information about the entity.", + "description": "A combination of the API operation prefix and the entity's `id` that can be used to review the entity.", "example": "https://api.linode.com/v4/linode/instances/{linodeId}", "type": "string" } }, "type": "object" }, + "maintenance_policy_set": { + "description": "__Beta__, __Filterable__ The maintenance policy configured by the user.", + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, + "not_before": { + "description": "__Beta__, __Filterable__ The earliest time when the maintenance can start. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "reason": { "description": "The reason maintenance is being performed.", "example": "This maintenance will allow us to update the BIOS on the host's motherboard.", "type": "string" }, + "source": { + "description": "__Beta__ The origin of the maintenance. A `platform` source indicates that the maintenance was initiated by Akamai. A `user` source indicates that the maintenance was initiated by the user.", + "enum": [ + "platform", + "user" + ], + "example": "platform", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, + "start_time": { + "description": "__Beta__, __Filterable__ The time the maintenance started. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "status": { - "description": "__Filterable__ The maintenance status.\n\nMaintenance progresses in the following sequence: pending, started, then completed.", + "description": "__Filterable__ The maintenance status. Maintenance progress follows the sequence `pending`, `scheduled`, `started`, and `completed`. A `scheduled` status is unique to Linodes that require a reboot for [QEMU maintenance](https://techdocs.akamai.com/linode-api/reference/reboot-your-linodes-for-qemu-maintenance).", "enum": [ - "completed", "pending", - "started" + "scheduled", + "started", + "in-progress", + "completed", + "canceled" ], "example": "started", "type": "string", @@ -1874,7 +2058,9 @@ "enum": [ "reboot", "cold_migration", - "live_migration" + "live_migration", + "migrate", + "power_off_on" ], "example": "reboot", "type": "string", @@ -1886,7 +2072,7 @@ "x-linode-filterable": true }, "when": { - "description": "__Filterable__ When the maintenance will begin.\n\n[Filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) with the following parameters:\n\n- A single value in date-time string format (`%Y-%m-%dT%H:%M:%S`), which returns only matches to that value.\n\n- A dictionary containing pairs of inequality operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single date-time string format values (`%Y-%m-%dT%H:%M:%S`). `+or` accepts an array of values that may consist of single date-time strings or dictionaries of inequality operator pairs.", + "description": "__Filterable__ The start time for the maintenance. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (yyyy-mm-ddThh:mm:ss), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", "example": "2020-07-09T00:01:01", "format": "date-time", "type": "string", @@ -1938,15 +2124,15 @@ "description": "An important, often time-sensitive item related to your account.", "properties": { "body": { - "description": "__Read-only__ A full description of this notification, in markdown format. Not all notifications include a `body`.", + "description": "A full description of this notification, in markdown format. Not all notifications include a `body`. Returned as `null` for an event `type` of `security_reboot_maintenance_scheduled`.", "example": null, "nullable": true, - "readOnly": true, "type": "string" }, "entity": { "additionalProperties": false, - "description": "__Read-only__ Detailed information about the notification.", + "description": "Detailed information about the notification. Returned as `null` for an event `type` of `security_reboot_maintenance_scheduled`.", + "nullable": true, "properties": { "id": { "description": "The unique ID of the notification's entity, based on the entity type. Returns `null` for an `account` or `promotion` entity.", @@ -1955,13 +2141,13 @@ "type": "integer" }, "label": { - "description": "The current label for this notification's entity.\n\nReturns `null` for the following entity types:\n\n- `entity_transfer`\n- `promotion`\n- `region`", + "description": "The current name of this notification's entity. Returns `null` for the following `entity` types:\n\n- `entity_transfer`\n\n- `promotion`\n\n- `region`", "example": "Linode not booting.", "nullable": true, "type": "string" }, "type": { - "description": "The type of entity this is related to.", + "description": "__Filterable__ The type of entity this is related to. An entity can be product or service-specific, such as a `linode`, `loadbalancers`, or `nodebalancers`. It can apply to a specific component, such as your `account`, a specific `promotion` your participating in, a data center (`region`) where you're using services, a transfer from one component to another (an `entity_transfer`), a support `ticket` you've opened, or a `volume` on a specific Linode.", "enum": [ "account", "entity_transfer", @@ -1974,7 +2160,13 @@ "volume" ], "example": "ticket", - "type": "string" + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true }, "url": { "description": "The URL where you can access the notification's object. The URL is relative to the domain where you retrieved the notification. This value is `null` for the `promotion` entity type.", @@ -1983,32 +2175,28 @@ "type": "string" } }, - "readOnly": true, "type": "object" }, "label": { - "description": "__Read-only__ A short description of this notification.", + "description": "A short description of this notification.", "example": "You have an important ticket open!", - "readOnly": true, "type": "string", "x-linode-cli-display": 1 }, "message": { - "description": "__Read-only__ A human-readable description of the notification.", + "description": "A human-readable description of the notification.", "example": "You have an important ticket open!", - "readOnly": true, "type": "string", "x-linode-cli-display": 2 }, "severity": { - "description": "__Read-only__ The severity of this notification. This field determines how prominently the notification is displayed and the color of the display text.", + "description": "The severity of this notification. This field determines how prominently the notification is displayed and the color of the display text.", "enum": [ "minor", "major", "critical" ], "example": "major", - "readOnly": true, "type": "string", "x-linode-cli-color": { "critical": "b", @@ -2018,7 +2206,7 @@ "x-linode-cli-display": 3 }, "type": { - "description": "__Read-only__ The type of notification.", + "description": "__Filterable__ The type of notification.\n\n> \ud83d\udcd8\n>\n> A `security_reboot_maintenance_scheduled` event is a global notice that a Linode needs to be rebooted for QEMU upgrade maintenance. Have a look at [this workflow](https://techdocs.akamai.com/linode-api/reference/reboot-your-linodes-for-qemu-maintenance) for guidance on reboooting your Linodes for this maintenance.", "enum": [ "migration_scheduled", "migration_imminent", @@ -2030,19 +2218,25 @@ "ticket_abuse", "notice", "maintenance", + "maintenance_scheduled", "promotion", + "security_reboot_maintenance_scheduled", "tax_id_verifying" ], "example": "ticket_important", - "readOnly": true, - "type": "string" + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true }, "until": { - "description": "__Read-only__ If this notification has a duration, this is when the event or action will complete. For example, if there's scheduled maintenance for one of our systems, `until` represents the end of the maintenance window.", + "description": "If this notification has a duration, this is when the event or action will complete. For example, if there's scheduled maintenance for one of our systems, `until` represents the end of the maintenance window. Returned as `null` for an event `type` of `security_reboot_maintenance_scheduled`.", "example": null, "format": "date-time", "nullable": true, - "readOnly": true, "type": "string", "x-linode-cli-color": { "None": "black", @@ -2051,11 +2245,10 @@ "x-linode-cli-display": 5 }, "when": { - "description": "__Read-only__ If this notification is for an event in the future, this specifies when the action occurs. For example, if a compute instance needs to migrate in response to a security advisory, this field sets the approximate time the compute instance will be taken offline for migration.", + "description": "If this notification is for an event in the future, this specifies when the action occurs. For example, if a compute instance needs to migrate in response to a security advisory, this field sets the approximate time the compute instance will be taken offline for migration. Returned as `null` for an event `type` of `security_reboot_maintenance_scheduled`.", "example": null, "format": "date-time", "nullable": true, - "readOnly": true, "type": "string", "x-linode-cli-color": { "None": "black", @@ -2266,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", @@ -2550,7 +2755,7 @@ "description": "The type of user on an account. Mostly applies to the use of the parent and child accounts for Akamai partners functionality.", "properties": { "user_type": { - "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractural relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", + "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractual relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", "enum": [ "parent", "child", @@ -2681,7 +2886,7 @@ "description": "The type of user on an account. Mostly applies to the use of the parent and child accounts for Akamai partners functionality.", "properties": { "user_type": { - "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractural relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", + "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractual relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", "enum": [ "parent", "child", @@ -3322,7 +3527,7 @@ "description": "The type of user on an account. Mostly applies to the use of the parent and child accounts for Akamai partners functionality.", "properties": { "user_type": { - "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractural relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", + "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractual relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", "enum": [ "parent", "child", @@ -3995,6 +4200,7 @@ "linode_migrate_datacenter_create", "linode_mutate", "linode_mutate_create", + "linode_poweroff_on", "linode_reboot", "linode_rebuild", "linode_resize", @@ -4102,6 +4308,15 @@ "type": "string", "x-linode-cli-display": 3 }, + "complete_time": { + "description": "__Beta__ The time the maintenance completed. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "created": { "description": "__Read-only__ When the system created this event.", "example": "2018-01-01T00:01:01", @@ -4110,6 +4325,18 @@ "type": "string", "x-linode-cli-display": 6 }, + "description": { + "description": "__Beta__ Differentiates between scheduled and emergency maintenance.", + "enum": [ + "Scheduled Maintenance", + "Emergency Maintenance" + ], + "example": "Scheduled Maintenance", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "duration": { "description": "__Read-only__ The number of seconds that it takes for the event to complete.", "example": 300.56, @@ -4179,6 +4406,14 @@ "type": "integer", "x-linode-cli-display": 1 }, + "maintenance_policy_set": { + "description": "__Beta__ The maintenance policy configured by the user for this event.", + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "message": { "description": "Additional information about the event. This can be a more detailed representation of an event that can help you diagnose non-obvious failures.", "example": "None", @@ -4186,6 +4421,15 @@ "type": "string", "x-linode-cli-display": 9 }, + "not_before": { + "description": "__Beta__ The scheduled start time for the event. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "percent_complete": { "description": "__Read-only__ A percentage estimating the amount of time remaining for an event. Returned as `null` for notification events.", "example": null, @@ -4241,6 +4485,27 @@ "readOnly": true, "type": "boolean" }, + "source": { + "description": "__Beta__ The origin of the event. A `platform` source indicates that the event was initiated by Akamai. A `user` source indicates that the event was initiated by the user.", + "enum": [ + "platform", + "user" + ], + "example": "platform", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, + "start_time": { + "description": "__Beta__ The actual start time for the event. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "status": { "description": "__Read-only__ The current status of this event.", "enum": [ @@ -4374,6 +4639,7 @@ "linode_migrate_datacenter_create", "linode_mutate", "linode_mutate_create", + "linode_poweroff_on", "linode_reboot", "linode_rebuild", "linode_resize", @@ -4486,6 +4752,19 @@ "x-linode-cli-display": 3, "x-linode-filterable": true }, + "complete_time": { + "description": "__Beta__, __Filterable__ The time the maintenance completed. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "created": { "description": "__Filterable__ When the system created this event.", "example": "2018-01-01T00:01:01", @@ -4499,6 +4778,22 @@ "x-linode-cli-display": 6, "x-linode-filterable": true }, + "description": { + "description": "__Beta__, __Filterable__ Differentiates between scheduled and emergency maintenance.", + "enum": [ + "Scheduled Maintenance", + "Emergency Maintenance" + ], + "example": "Scheduled Maintenance", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "duration": { "description": "The number of seconds that it takes for the event to complete.", "example": 300.56, @@ -4582,6 +4877,18 @@ "x-linode-cli-display": 1, "x-linode-filterable": true }, + "maintenance_policy_set": { + "description": "__Beta__, __Filterable__ The maintenance policy configured by the user for this event.", + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "message": { "description": "Additional information about the event. This can be a more detailed representation of an event that can help you diagnose non-obvious failures.", "example": "None", @@ -4589,6 +4896,19 @@ "type": "string", "x-linode-cli-display": 9 }, + "not_before": { + "description": "__Beta__, __Filterable__ The scheduled start time for the event. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "percent_complete": { "description": "A percentage estimating the amount of time remaining for an event. Returned as `null` for notification events.", "example": null, @@ -4644,20 +4964,53 @@ "example": true, "type": "boolean" }, + "source": { + "description": "__Beta__, __Filterable__ The origin of the event. A `platform` source indicates that the event was initiated by Akamai. A `user` source indicates that the event was initiated by the user.", + "enum": [ + "platform", + "user" + ], + "example": "platform", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, + "start_time": { + "description": "__Beta__, __Filterable__ The actual start time for the event. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "status": { "description": "The current status of this event.", "enum": [ + "completed", "failed", "finished", + "in_progress", "notification", "scheduled", "started" ], "type": "string", "x-linode-cli-color": { + "completed": "green", "default_": "white", "failed": "red", "finished": "green", + "in_progress": "yellow", "started": "yellow" }, "x-linode-cli-display": 8 @@ -5215,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" @@ -5484,17 +5837,42 @@ "additionalProperties": false, "description": "Information about maintenance affecting an entity.", "properties": { + "complete_time": { + "description": "__Beta__, __Filterable__ The time the maintenance completed. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, + "description": { + "description": "__Beta__ Differentiates between scheduled and emergency maintenance.", + "enum": [ + "Scheduled Maintenance", + "Emergency Maintenance" + ], + "example": "Scheduled Maintenance", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "entity": { "additionalProperties": false, - "description": "The entity being affected by maintenance.", + "description": "The entity affected by the maintenance.", "properties": { "id": { - "description": "The id of the entity being affected by maintenance.", + "description": "The unique identifier of the entity targeted by the maintenance.", "example": 1234, "type": "number" }, "label": { - "description": "The label of the entity being affected by maintenance.", + "description": "The name of the entity targeted by the maintenance.", "example": "demo-linode", "type": "string" }, @@ -5504,24 +5882,77 @@ "type": "string" }, "url": { - "description": "The API endpoint prefix to use in combination with the entity id to find specific information about the entity.", + "description": "A combination of the API operation prefix and the entity's `id` that can be used to review the entity.", "example": "https://api.linode.com/v4/linode/instances/{linodeId}", "type": "string" } }, "type": "object" }, + "maintenance_policy_set": { + "description": "__Beta__, __Filterable__ The maintenance policy configured by the user.", + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, + "not_before": { + "description": "__Beta__, __Filterable__ The earliest time when the maintenance can start. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "reason": { "description": "The reason maintenance is being performed.", "example": "This maintenance will allow us to update the BIOS on the host's motherboard.", "type": "string" }, + "source": { + "description": "__Beta__ The origin of the maintenance. A `platform` source indicates that the maintenance was initiated by Akamai. A `user` source indicates that the maintenance was initiated by the user.", + "enum": [ + "platform", + "user" + ], + "example": "platform", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, + "start_time": { + "description": "__Beta__, __Filterable__ The time the maintenance started. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "status": { - "description": "__Filterable__ The maintenance status.\n\nMaintenance progresses in the following sequence: pending, started, then completed.", + "description": "__Filterable__ The maintenance status. Maintenance progress follows the sequence `pending`, `scheduled`, `started`, and `completed`. A `scheduled` status is unique to Linodes that require a reboot for [QEMU maintenance](https://techdocs.akamai.com/linode-api/reference/reboot-your-linodes-for-qemu-maintenance).", "enum": [ - "completed", "pending", - "started" + "scheduled", + "started", + "in-progress", + "completed", + "canceled" ], "example": "started", "type": "string", @@ -5537,7 +5968,9 @@ "enum": [ "reboot", "cold_migration", - "live_migration" + "live_migration", + "migrate", + "power_off_on" ], "example": "reboot", "type": "string", @@ -5549,7 +5982,7 @@ "x-linode-filterable": true }, "when": { - "description": "__Filterable__ When the maintenance will begin.\n\n[Filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) with the following parameters:\n\n- A single value in date-time string format (`%Y-%m-%dT%H:%M:%S`), which returns only matches to that value.\n\n- A dictionary containing pairs of inequality operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single date-time string format values (`%Y-%m-%dT%H:%M:%S`). `+or` accepts an array of values that may consist of single date-time strings or dictionaries of inequality operator pairs.", + "description": "__Filterable__ The start time for the maintenance. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (yyyy-mm-ddThh:mm:ss), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", "example": "2020-07-09T00:01:01", "format": "date-time", "type": "string", @@ -5571,15 +6004,15 @@ "description": "An important, often time-sensitive item related to your account.", "properties": { "body": { - "description": "__Read-only__ A full description of this notification, in markdown format. Not all notifications include a `body`.", + "description": "A full description of this notification, in markdown format. Not all notifications include a `body`. Returned as `null` for an event `type` of `security_reboot_maintenance_scheduled`.", "example": null, "nullable": true, - "readOnly": true, "type": "string" }, "entity": { "additionalProperties": false, - "description": "__Read-only__ Detailed information about the notification.", + "description": "Detailed information about the notification. Returned as `null` for an event `type` of `security_reboot_maintenance_scheduled`.", + "nullable": true, "properties": { "id": { "description": "The unique ID of the notification's entity, based on the entity type. Returns `null` for an `account` or `promotion` entity.", @@ -5588,13 +6021,13 @@ "type": "integer" }, "label": { - "description": "The current label for this notification's entity.\n\nReturns `null` for the following entity types:\n\n- `entity_transfer`\n- `promotion`\n- `region`", + "description": "The current name of this notification's entity. Returns `null` for the following `entity` types:\n\n- `entity_transfer`\n\n- `promotion`\n\n- `region`", "example": "Linode not booting.", "nullable": true, "type": "string" }, "type": { - "description": "The type of entity this is related to.", + "description": "__Filterable__ The type of entity this is related to. An entity can be product or service-specific, such as a `linode`, `loadbalancers`, or `nodebalancers`. It can apply to a specific component, such as your `account`, a specific `promotion` your participating in, a data center (`region`) where you're using services, a transfer from one component to another (an `entity_transfer`), a support `ticket` you've opened, or a `volume` on a specific Linode.", "enum": [ "account", "entity_transfer", @@ -5607,7 +6040,13 @@ "volume" ], "example": "ticket", - "type": "string" + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true }, "url": { "description": "The URL where you can access the notification's object. The URL is relative to the domain where you retrieved the notification. This value is `null` for the `promotion` entity type.", @@ -5616,32 +6055,28 @@ "type": "string" } }, - "readOnly": true, "type": "object" }, "label": { - "description": "__Read-only__ A short description of this notification.", + "description": "A short description of this notification.", "example": "You have an important ticket open!", - "readOnly": true, "type": "string", "x-linode-cli-display": 1 }, "message": { - "description": "__Read-only__ A human-readable description of the notification.", + "description": "A human-readable description of the notification.", "example": "You have an important ticket open!", - "readOnly": true, "type": "string", "x-linode-cli-display": 2 }, "severity": { - "description": "__Read-only__ The severity of this notification. This field determines how prominently the notification is displayed and the color of the display text.", + "description": "The severity of this notification. This field determines how prominently the notification is displayed and the color of the display text.", "enum": [ "minor", "major", "critical" ], "example": "major", - "readOnly": true, "type": "string", "x-linode-cli-color": { "critical": "b", @@ -5651,7 +6086,7 @@ "x-linode-cli-display": 3 }, "type": { - "description": "__Read-only__ The type of notification.", + "description": "__Filterable__ The type of notification.\n\n> \ud83d\udcd8\n>\n> A `security_reboot_maintenance_scheduled` event is a global notice that a Linode needs to be rebooted for QEMU upgrade maintenance. Have a look at [this workflow](https://techdocs.akamai.com/linode-api/reference/reboot-your-linodes-for-qemu-maintenance) for guidance on reboooting your Linodes for this maintenance.", "enum": [ "migration_scheduled", "migration_imminent", @@ -5663,19 +6098,25 @@ "ticket_abuse", "notice", "maintenance", + "maintenance_scheduled", "promotion", + "security_reboot_maintenance_scheduled", "tax_id_verifying" ], "example": "ticket_important", - "readOnly": true, - "type": "string" + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true }, "until": { - "description": "__Read-only__ If this notification has a duration, this is when the event or action will complete. For example, if there's scheduled maintenance for one of our systems, `until` represents the end of the maintenance window.", + "description": "If this notification has a duration, this is when the event or action will complete. For example, if there's scheduled maintenance for one of our systems, `until` represents the end of the maintenance window. Returned as `null` for an event `type` of `security_reboot_maintenance_scheduled`.", "example": null, "format": "date-time", "nullable": true, - "readOnly": true, "type": "string", "x-linode-cli-color": { "None": "black", @@ -5684,11 +6125,10 @@ "x-linode-cli-display": 5 }, "when": { - "description": "__Read-only__ If this notification is for an event in the future, this specifies when the action occurs. For example, if a compute instance needs to migrate in response to a security advisory, this field sets the approximate time the compute instance will be taken offline for migration.", + "description": "If this notification is for an event in the future, this specifies when the action occurs. For example, if a compute instance needs to migrate in response to a security advisory, this field sets the approximate time the compute instance will be taken offline for migration. Returned as `null` for an event `type` of `security_reboot_maintenance_scheduled`.", "example": null, "format": "date-time", "nullable": true, - "readOnly": true, "type": "string", "x-linode-cli-color": { "None": "black", @@ -5828,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", @@ -6506,7 +6958,7 @@ "description": "The type of user on an account. Mostly applies to the use of the parent and child accounts for Akamai partners functionality.", "properties": { "user_type": { - "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractural relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", + "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractual relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", "enum": [ "parent", "child", @@ -6542,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": { @@ -6607,7 +7151,7 @@ "url": "https://www.apache.org/licenses/LICENSE-2.0.html" }, "title": "Akamai: Linode API", - "version": "4.208.1" + "version": "4.212.0" }, "openapi": "3.0.1", "paths": { @@ -11077,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}}", @@ -11240,6 +11878,7 @@ "linode_migrate_datacenter_create", "linode_mutate", "linode_mutate_create", + "linode_poweroff_on", "linode_reboot", "linode_rebuild", "linode_resize", @@ -11352,6 +11991,19 @@ "x-linode-cli-display": 3, "x-linode-filterable": true }, + "complete_time": { + "description": "__Beta__, __Filterable__ The time the maintenance completed. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "created": { "description": "__Filterable__ When the system created this event.", "example": "2018-01-01T00:01:01", @@ -11365,6 +12017,22 @@ "x-linode-cli-display": 6, "x-linode-filterable": true }, + "description": { + "description": "__Beta__, __Filterable__ Differentiates between scheduled and emergency maintenance.", + "enum": [ + "Scheduled Maintenance", + "Emergency Maintenance" + ], + "example": "Scheduled Maintenance", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "duration": { "description": "The number of seconds that it takes for the event to complete.", "example": 300.56, @@ -11448,6 +12116,18 @@ "x-linode-cli-display": 1, "x-linode-filterable": true }, + "maintenance_policy_set": { + "description": "__Beta__, __Filterable__ The maintenance policy configured by the user for this event.", + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "message": { "description": "Additional information about the event. This can be a more detailed representation of an event that can help you diagnose non-obvious failures.", "example": "None", @@ -11455,6 +12135,19 @@ "type": "string", "x-linode-cli-display": 9 }, + "not_before": { + "description": "__Beta__, __Filterable__ The scheduled start time for the event. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "percent_complete": { "description": "A percentage estimating the amount of time remaining for an event. Returned as `null` for notification events.", "example": null, @@ -11510,20 +12203,53 @@ "example": true, "type": "boolean" }, + "source": { + "description": "__Beta__, __Filterable__ The origin of the event. A `platform` source indicates that the event was initiated by Akamai. A `user` source indicates that the event was initiated by the user.", + "enum": [ + "platform", + "user" + ], + "example": "platform", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, + "start_time": { + "description": "__Beta__, __Filterable__ The actual start time for the event. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "status": { "description": "The current status of this event.", "enum": [ + "completed", "failed", "finished", + "in_progress", "notification", "scheduled", "started" ], "type": "string", "x-linode-cli-color": { + "completed": "green", "default_": "white", "failed": "red", "finished": "green", + "in_progress": "yellow", "started": "yellow" }, "x-linode-cli-display": 8 @@ -11795,6 +12521,7 @@ "linode_migrate_datacenter_create", "linode_mutate", "linode_mutate_create", + "linode_poweroff_on", "linode_reboot", "linode_rebuild", "linode_resize", @@ -11902,6 +12629,15 @@ "type": "string", "x-linode-cli-display": 3 }, + "complete_time": { + "description": "__Beta__ The time the maintenance completed. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "created": { "description": "__Read-only__ When the system created this event.", "example": "2018-01-01T00:01:01", @@ -11910,6 +12646,18 @@ "type": "string", "x-linode-cli-display": 6 }, + "description": { + "description": "__Beta__ Differentiates between scheduled and emergency maintenance.", + "enum": [ + "Scheduled Maintenance", + "Emergency Maintenance" + ], + "example": "Scheduled Maintenance", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "duration": { "description": "__Read-only__ The number of seconds that it takes for the event to complete.", "example": 300.56, @@ -11979,6 +12727,14 @@ "type": "integer", "x-linode-cli-display": 1 }, + "maintenance_policy_set": { + "description": "__Beta__ The maintenance policy configured by the user for this event.", + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "message": { "description": "Additional information about the event. This can be a more detailed representation of an event that can help you diagnose non-obvious failures.", "example": "None", @@ -11986,6 +12742,15 @@ "type": "string", "x-linode-cli-display": 9 }, + "not_before": { + "description": "__Beta__ The scheduled start time for the event. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "percent_complete": { "description": "__Read-only__ A percentage estimating the amount of time remaining for an event. Returned as `null` for notification events.", "example": null, @@ -12041,6 +12806,27 @@ "readOnly": true, "type": "boolean" }, + "source": { + "description": "__Beta__ The origin of the event. A `platform` source indicates that the event was initiated by Akamai. A `user` source indicates that the event was initiated by the user.", + "enum": [ + "platform", + "user" + ], + "example": "platform", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, + "start_time": { + "description": "__Beta__ The actual start time for the event. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "status": { "description": "__Read-only__ The current status of this event.", "enum": [ @@ -12328,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}}", @@ -12381,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" @@ -12628,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" @@ -13504,7 +14384,7 @@ }, "/{apiVersion}/account/maintenance": { "get": { - "description": "Returns a collection of Maintenance objects for any entity a user has permissions to view. Canceled Maintenance objects are not returned.\n\nCurrently, Linodes are the only entities available for viewing.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli account maintenance-list\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)", + "description": "Returns maintenance information for any entity your user has permissions to view. If a maintenance object has been canceled, it's not returned.\n\n> \ud83d\udcd8\n>\n> Currently, only Linodes are included as entities for viewing.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli account maintenance-list\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/get-maintenance" @@ -13522,17 +14402,42 @@ "additionalProperties": false, "description": "Information about maintenance affecting an entity.", "properties": { + "complete_time": { + "description": "__Beta__, __Filterable__ The time the maintenance completed. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, + "description": { + "description": "__Beta__ Differentiates between scheduled and emergency maintenance.", + "enum": [ + "Scheduled Maintenance", + "Emergency Maintenance" + ], + "example": "Scheduled Maintenance", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "entity": { "additionalProperties": false, - "description": "The entity being affected by maintenance.", + "description": "The entity affected by the maintenance.", "properties": { "id": { - "description": "The id of the entity being affected by maintenance.", + "description": "The unique identifier of the entity targeted by the maintenance.", "example": 1234, "type": "number" }, "label": { - "description": "The label of the entity being affected by maintenance.", + "description": "The name of the entity targeted by the maintenance.", "example": "demo-linode", "type": "string" }, @@ -13542,24 +14447,77 @@ "type": "string" }, "url": { - "description": "The API endpoint prefix to use in combination with the entity id to find specific information about the entity.", + "description": "A combination of the API operation prefix and the entity's `id` that can be used to review the entity.", "example": "https://api.linode.com/v4/linode/instances/{linodeId}", "type": "string" } }, "type": "object" }, + "maintenance_policy_set": { + "description": "__Beta__, __Filterable__ The maintenance policy configured by the user.", + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, + "not_before": { + "description": "__Beta__, __Filterable__ The earliest time when the maintenance can start. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "reason": { "description": "The reason maintenance is being performed.", "example": "This maintenance will allow us to update the BIOS on the host's motherboard.", "type": "string" }, + "source": { + "description": "__Beta__ The origin of the maintenance. A `platform` source indicates that the maintenance was initiated by Akamai. A `user` source indicates that the maintenance was initiated by the user.", + "enum": [ + "platform", + "user" + ], + "example": "platform", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, + "start_time": { + "description": "__Beta__, __Filterable__ The time the maintenance started. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (`yyyy-mm-ddThh:mm:ss`), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", + "example": "2020-07-09T00:01:01", + "format": "date-time", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ], + "status": "BETA" + }, + "x-linode-filterable": true + }, "status": { - "description": "__Filterable__ The maintenance status.\n\nMaintenance progresses in the following sequence: pending, started, then completed.", + "description": "__Filterable__ The maintenance status. Maintenance progress follows the sequence `pending`, `scheduled`, `started`, and `completed`. A `scheduled` status is unique to Linodes that require a reboot for [QEMU maintenance](https://techdocs.akamai.com/linode-api/reference/reboot-your-linodes-for-qemu-maintenance).", "enum": [ - "completed", "pending", - "started" + "scheduled", + "started", + "in-progress", + "completed", + "canceled" ], "example": "started", "type": "string", @@ -13575,7 +14533,9 @@ "enum": [ "reboot", "cold_migration", - "live_migration" + "live_migration", + "migrate", + "power_off_on" ], "example": "reboot", "type": "string", @@ -13587,7 +14547,7 @@ "x-linode-filterable": true }, "when": { - "description": "__Filterable__ When the maintenance will begin.\n\n[Filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) with the following parameters:\n\n- A single value in date-time string format (`%Y-%m-%dT%H:%M:%S`), which returns only matches to that value.\n\n- A dictionary containing pairs of inequality operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single date-time string format values (`%Y-%m-%dT%H:%M:%S`). `+or` accepts an array of values that may consist of single date-time strings or dictionaries of inequality operator pairs.", + "description": "__Filterable__ The start time for the maintenance. This field is [filterable](https://techdocs.akamai.com/linode-api/reference/filtering-and-sorting) based on these parameters:\n\n- A single ISO 8601 timestamp (yyyy-mm-ddThh:mm:ss), which returns only matches for that value.\n\n- Pairs of operator string keys (`+or`, `+gt`, `+gte`, `+lt`, `+lte`, or `+neq`) and single ISO 8601 timestamp. The `+or` operator accepts an array of values that can consist of single date-time strings or dictionaries of inequality operator pairs.", "example": "2020-07-09T00:01:01", "format": "date-time", "type": "string", @@ -13725,7 +14685,7 @@ }, "/{apiVersion}/account/notifications": { "get": { - "description": "Returns a collection of notification objects that represent important, often time-sensitive details about your account. You can't interact directly with notifications, and a notification disappears when the circumstances that caused it have been resolved. For example, if you have an important ticket open, you can respond to that ticket to dismiss its notification.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli account notifications-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 notifications that represent important, often time-sensitive details about your account. You can't interact directly with notifications, and a notification disappears when you've resolved its cause. For example, if you have an important ticket open, you can respond to that ticket to dismiss its notification.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli account notifications-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-notifications" @@ -13744,15 +14704,15 @@ "description": "An important, often time-sensitive item related to your account.", "properties": { "body": { - "description": "__Read-only__ A full description of this notification, in markdown format. Not all notifications include a `body`.", + "description": "A full description of this notification, in markdown format. Not all notifications include a `body`. Returned as `null` for an event `type` of `security_reboot_maintenance_scheduled`.", "example": null, "nullable": true, - "readOnly": true, "type": "string" }, "entity": { "additionalProperties": false, - "description": "__Read-only__ Detailed information about the notification.", + "description": "Detailed information about the notification. Returned as `null` for an event `type` of `security_reboot_maintenance_scheduled`.", + "nullable": true, "properties": { "id": { "description": "The unique ID of the notification's entity, based on the entity type. Returns `null` for an `account` or `promotion` entity.", @@ -13761,13 +14721,13 @@ "type": "integer" }, "label": { - "description": "The current label for this notification's entity.\n\nReturns `null` for the following entity types:\n\n- `entity_transfer`\n- `promotion`\n- `region`", + "description": "The current name of this notification's entity. Returns `null` for the following `entity` types:\n\n- `entity_transfer`\n\n- `promotion`\n\n- `region`", "example": "Linode not booting.", "nullable": true, "type": "string" }, "type": { - "description": "The type of entity this is related to.", + "description": "__Filterable__ The type of entity this is related to. An entity can be product or service-specific, such as a `linode`, `loadbalancers`, or `nodebalancers`. It can apply to a specific component, such as your `account`, a specific `promotion` your participating in, a data center (`region`) where you're using services, a transfer from one component to another (an `entity_transfer`), a support `ticket` you've opened, or a `volume` on a specific Linode.", "enum": [ "account", "entity_transfer", @@ -13780,7 +14740,13 @@ "volume" ], "example": "ticket", - "type": "string" + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true }, "url": { "description": "The URL where you can access the notification's object. The URL is relative to the domain where you retrieved the notification. This value is `null` for the `promotion` entity type.", @@ -13789,32 +14755,28 @@ "type": "string" } }, - "readOnly": true, "type": "object" }, "label": { - "description": "__Read-only__ A short description of this notification.", + "description": "A short description of this notification.", "example": "You have an important ticket open!", - "readOnly": true, "type": "string", "x-linode-cli-display": 1 }, "message": { - "description": "__Read-only__ A human-readable description of the notification.", + "description": "A human-readable description of the notification.", "example": "You have an important ticket open!", - "readOnly": true, "type": "string", "x-linode-cli-display": 2 }, "severity": { - "description": "__Read-only__ The severity of this notification. This field determines how prominently the notification is displayed and the color of the display text.", + "description": "The severity of this notification. This field determines how prominently the notification is displayed and the color of the display text.", "enum": [ "minor", "major", "critical" ], "example": "major", - "readOnly": true, "type": "string", "x-linode-cli-color": { "critical": "b", @@ -13824,7 +14786,7 @@ "x-linode-cli-display": 3 }, "type": { - "description": "__Read-only__ The type of notification.", + "description": "__Filterable__ The type of notification.\n\n> \ud83d\udcd8\n>\n> A `security_reboot_maintenance_scheduled` event is a global notice that a Linode needs to be rebooted for QEMU upgrade maintenance. Have a look at [this workflow](https://techdocs.akamai.com/linode-api/reference/reboot-your-linodes-for-qemu-maintenance) for guidance on reboooting your Linodes for this maintenance.", "enum": [ "migration_scheduled", "migration_imminent", @@ -13836,19 +14798,25 @@ "ticket_abuse", "notice", "maintenance", + "maintenance_scheduled", "promotion", + "security_reboot_maintenance_scheduled", "tax_id_verifying" ], "example": "ticket_important", - "readOnly": true, - "type": "string" + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true }, "until": { - "description": "__Read-only__ If this notification has a duration, this is when the event or action will complete. For example, if there's scheduled maintenance for one of our systems, `until` represents the end of the maintenance window.", + "description": "If this notification has a duration, this is when the event or action will complete. For example, if there's scheduled maintenance for one of our systems, `until` represents the end of the maintenance window. Returned as `null` for an event `type` of `security_reboot_maintenance_scheduled`.", "example": null, "format": "date-time", "nullable": true, - "readOnly": true, "type": "string", "x-linode-cli-color": { "None": "black", @@ -13857,11 +14825,10 @@ "x-linode-cli-display": 5 }, "when": { - "description": "__Read-only__ If this notification is for an event in the future, this specifies when the action occurs. For example, if a compute instance needs to migrate in response to a security advisory, this field sets the approximate time the compute instance will be taken offline for migration.", + "description": "If this notification is for an event in the future, this specifies when the action occurs. For example, if a compute instance needs to migrate in response to a security advisory, this field sets the approximate time the compute instance will be taken offline for migration. Returned as `null` for an event `type` of `security_reboot_maintenance_scheduled`.", "example": null, "format": "date-time", "nullable": true, - "readOnly": true, "type": "string", "x-linode-cli-color": { "None": "black", @@ -16471,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" @@ -16505,7 +17472,7 @@ } } }, - "description": "Information about the Payment you are making.", + "description": "Information about the payment you're making.", "required": true }, "responses": { @@ -16517,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", @@ -16656,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}}", @@ -16709,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", @@ -16767,7 +17852,7 @@ } } }, - "description": "Returns a paginated list of Payment objects." + "description": "Returns a paginated list of payment objects." }, "default": { "content": { @@ -17311,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", @@ -18658,6 +19755,19 @@ "type": "string", "x-linode-cli-display": 2 }, + "maintenance_policy": { + "description": "__Beta__ Defines the default maintenance policy for new Linodes created on this account. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "status": "BETA" + }, + "x-linode-cli-display": 7 + }, "managed": { "description": "__Read-only__ Our 24/7 incident response service. This robust, multi-homed monitoring system distributes monitoring checks to ensure that your servers remain online and available at all times. Linode Managed can monitor any service or software stack reachable over TCP or HTTP. Once you add a service to Linode Managed, we'll monitor it for connectivity, response, and total request time.", "example": true, @@ -18807,6 +19917,19 @@ "type": "string", "x-linode-cli-display": 2 }, + "maintenance_policy": { + "description": "__Beta__ Defines the default maintenance policy for new Linodes created on this account. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "{{maintenance_policy}}", + "type": "string", + "x-akamai": { + "status": "BETA" + }, + "x-linode-cli-display": 7 + }, "managed": { "description": "__Read-only__ Our 24/7 incident response service. This robust, multi-homed monitoring system distributes monitoring checks to ensure that your servers remain online and available at all times. Linode Managed can monitor any service or software stack reachable over TCP or HTTP. Once you add a service to Linode Managed, we'll monitor it for connectivity, response, and total request time.", "example": "{{managed}}", @@ -18883,6 +20006,19 @@ "type": "string", "x-linode-cli-display": 2 }, + "maintenance_policy": { + "description": "__Beta__ Defines the default maintenance policy for new Linodes created on this account. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "status": "BETA" + }, + "x-linode-cli-display": 7 + }, "managed": { "description": "__Read-only__ Our 24/7 incident response service. This robust, multi-homed monitoring system distributes monitoring checks to ensure that your servers remain online and available at all times. Linode Managed can monitor any service or software stack reachable over TCP or HTTP. Once you add a service to Linode Managed, we'll monitor it for connectivity, response, and total request time.", "example": true, @@ -19315,7 +20451,7 @@ }, "/{apiVersion}/account/users": { "post": { - "description": "Creates a user on your account. You determine the new user's account access by setting it to restricted or unrestricted and by defining its grants. After completion, the API sends a confirmation message containing password creation and login instructions to the user's `email` address.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access.\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- A parent account user can create new parent account users.\n\n- A child account can [update](https://techdocs.akamai.com/linode-api/reference/put-user) the child account parent user (proxy user) to `unrestricted`. This gives the proxy user access to create new child account users.\n\n- A child account user can create new child account users.\n\n- You can't create a proxy user. The proxy user in a child account is predefined when you initially provision the parent-child relationship.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli users create \\\n --username example_user \\\n --email example_user@linode.com \\\n --restricted true\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": "Creates a user on your account. You determine the new user's account access by setting it to restricted or unrestricted and by defining its grants. After completion, the API sends a confirmation message containing password creation and login instructions to the user's `email` address.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access. Talk to your local account administrator about access management.\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- A parent account user can create new parent account users.\n\n- A child account can [update](https://techdocs.akamai.com/linode-api/reference/put-user) the child account parent user (proxy user) to `unrestricted`. This gives the proxy user access to create new child account users.\n\n- A child account user can create new child account users.\n\n- You can't create a proxy user. The proxy user in a child account is predefined when you initially provision the parent-child relationship.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli users create \\\n --username example_user \\\n --email example_user@linode.com \\\n --restricted true\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-user" @@ -19618,7 +20754,7 @@ "x-linode-grant": "unrestricted only" }, "get": { - "description": "Returns a paginated list of all users on your account.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access.\n\nA user can access all or part of an account based on their access status and grants:\n\n- __Unrestricted access__. These users can access everything on an account.\n\n- __Restricted access__. These users can only access entities or perform actions they've been given specific grants to.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli users 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 all users on your account.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access. Talk to your local account administrator about access management.\n\nA user can access all or part of an account based on their access status and grants:\n\n- __Unrestricted access__. These users can access everything on an account.\n\n- __Restricted access__. These users can only access entities or perform actions they've been given specific grants to.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli users 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-users" @@ -19795,7 +20931,7 @@ "description": "The type of user on an account. Mostly applies to the use of the parent and child accounts for Akamai partners functionality.", "properties": { "user_type": { - "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractural relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", + "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractual relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", "enum": [ "parent", "child", @@ -19942,7 +21078,7 @@ }, "/{apiVersion}/account/users/{username}": { "get": { - "description": "Returns information about a single user on your account.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli users view example_user\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 information about a single user on your account.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access. Talk to your local account administrator about access management.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli users view example_user\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-user" @@ -20060,7 +21196,7 @@ "description": "The type of user on an account. Mostly applies to the use of the parent and child accounts for Akamai partners functionality.", "properties": { "user_type": { - "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractural relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", + "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractual relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", "enum": [ "parent", "child", @@ -20155,7 +21291,7 @@ "x-linode-grant": "unrestricted only" }, "put": { - "description": "Update information about a user on your account, including its restricted status. When setting a user to `restricted`, the API sets no grants for it. You need to set grants so that user can access things on the account.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access.\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- You can't edit the `username` or `email` values for the child account parent user (proxy user). These are predefined for the proxy user when you initially provision the parent-child relationship. Only a proxy user's `restricted` status can be modified. This can only be done by an unrestricted child account user.\n\n- A parent account using an unrestricted proxy user in a child account can modify the `username`, `email`, and `restricted` status for an existing child account user.\n\n- A restricted account user--parent or child--can't change their user to `unrestricted`.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli users update example_user \\\n --username example_user \\\n --email example@linode.com \\\n --restricted true\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": "Update information about a user on your account, including its restricted status. When setting a user to `restricted`, the API sets no grants for it. You need to set grants so that user can access things on the account.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access. Talk to your local account administrator about access management.\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- You can't edit the `username` or `email` values for the child account parent user (proxy user). These are predefined for the proxy user when you initially provision the parent-child relationship. Only a proxy user's `restricted` status can be modified. This can only be done by an unrestricted child account user.\n\n- A parent account using an unrestricted proxy user in a child account can modify the `username`, `email`, and `restricted` status for an existing child account user.\n\n- A restricted account user--parent or child--can't change their user to `unrestricted`.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli users update example_user \\\n --username example_user \\\n --email example@linode.com \\\n --restricted true\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/put-user" @@ -20395,7 +21531,7 @@ "description": "The type of user on an account. Mostly applies to the use of the parent and child accounts for Akamai partners functionality.", "properties": { "user_type": { - "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractural relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", + "description": "__Read-only__ If the user belongs to a [parent or child account](https://www.linode.com/docs/guides/parent-child-accounts/) relationship, this defines the user type in the respective account. Possible values include:\n\n- `parent`. This is a user in an Akamai partner account. Akamai partners have a contractual relationship with their end customers, to sell Akamai services. This user can either have full access (a parent account admin user) or limited access. Limited users don't have access to manage child accounts, but they can be granted this access by an admin user.\n\n- `child`. This is an Akamai partner's end customer user, in a child account. A child user can have either full or limited access. Full access lets the user manage other child users and the proxy user in a child account.\n\n- `proxy`. This is a user on a child account that gives parent account users access to that child account. A parent account user with the `child_account_access` grant can [Create a proxy user token](https://techdocs.akamai.com/linode-api/reference/post-child-account-token) from the parent account. The parent user can use this token to run API operations from the child account, as if they were a child user.\n\n- `default`. This applies to all regular, non-parent-child account users.", "enum": [ "parent", "child", @@ -20490,7 +21626,7 @@ "x-linode-grant": "unrestricted only" }, "delete": { - "description": "Deletes a user. The API immediately logs the user out and removes all of its `grants`.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access.\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- You can't delete a child account parent user (proxy user). The API returns a 403 error if you target a proxy user with this operation.\n\n- A parent account using an unrestricted proxy user can use this operation to delete a child account user.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli users delete example_user\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": "Deletes a user. The API immediately logs the user out and removes all of its `grants`.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access. Talk to your local account administrator about access management.\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- You can't delete a child account parent user (proxy user). The API returns a 403 error if you target a proxy user with this operation.\n\n- A parent account using an unrestricted proxy user can use this operation to delete a child account user.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli users delete example_user\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/delete-user" @@ -20626,7 +21762,7 @@ }, "/{apiVersion}/account/users/{username}/grants": { "get": { - "description": "Returns the full grants structure for an account username you specify. This includes all entities on the account, and the level of access this user has to each of them.\n\nThis doesn't apply to the account owner or the current authenticated user. You can run the [List grants](https://techdocs.akamai.com/linode-api/reference/get-profile-grants) operation to view those grants. However, this doesn't show the entities that they _don't_ have access to.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access.\n\n\n<>\n\n---\n\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 the full grants structure for an account username you specify. This includes all entities on the account, and the level of access this user has to each of them.\n\nThis doesn't apply to the account owner or the current authenticated user. You can run the [List grants](https://techdocs.akamai.com/linode-api/reference/get-profile-grants) operation to view those grants. However, this doesn't show the entities that they _don't_ have access to.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access. Talk to your local account administrator about access management.\n\n\n<>\n\n---\n\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-user-grants" @@ -21154,7 +22290,7 @@ "x-linode-grant": "unrestricted only" }, "put": { - "description": "Update the grants for a [restricted](https://techdocs.akamai.com/linode-api/reference/post-user) user. This can be used to give a user access to new entities or actions, or take access away. Omit a grant object from the request to keep its current setting.\n\n> \ud83d\udcd8\n>\n> - This operation can only be accessed by account users with _unrestricted_ access.\n>\n> - This operation only applies to _restricted_ users. An unrestricted user has access to everything and doesn't use grants.\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- No child account user can modify the `account_access` grant for the child account parent user (proxy user).\n\n- An unrestricted child account user can configure all other grants for the proxy user, with the `global` object.\n\n- An unrestricted child account user can enable the `account_access` grant for other child account users. However, enabled child users are still subject to child user restrictions--they can't perform write operations for any billing or account information.\n\n\n<>\n\n---\n\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": "Update the grants for a [restricted](https://techdocs.akamai.com/linode-api/reference/post-user) user. This can be used to give a user access to new entities or actions, or take access away. Omit a grant object from the request to keep its current setting.\n\n> \ud83d\udcd8\n>\n> - This operation can only be accessed by account users with _unrestricted_ access. Talk to your local account administrator about access management.\n>\n> - This operation only applies to _restricted_ users. An unrestricted user has access to everything and doesn't use grants.\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- No child account user can modify the `account_access` grant for the child account parent user (proxy user).\n\n- An unrestricted child account user can configure all other grants for the proxy user, with the `global` object.\n\n- An unrestricted child account user can enable the `account_access` grant for other child account users. However, enabled child users are still subject to child user restrictions--they can't perform write operations for any billing or account information.\n\n\n<>\n\n---\n\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/put-user-grants" @@ -23274,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" @@ -23359,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": { @@ -24787,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" @@ -24840,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" @@ -25133,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": { @@ -25246,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", @@ -25556,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" @@ -25634,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": { @@ -25982,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", @@ -26330,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" @@ -26408,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": { @@ -26755,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", @@ -27065,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" @@ -27143,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": { @@ -27386,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" @@ -27433,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, @@ -27690,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}}", @@ -27849,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", @@ -28159,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" @@ -28237,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": { @@ -31321,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" @@ -31395,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" @@ -31850,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": { @@ -31984,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", @@ -32528,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": { @@ -32896,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", @@ -33484,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": { @@ -33852,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", @@ -34402,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": { @@ -34645,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" @@ -34713,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, @@ -35132,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}}", @@ -35312,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", @@ -35862,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": { @@ -37094,7 +38587,7 @@ "example": { "data": [ { - "class": "nanode", + "class": "dedicated", "deprecated": false, "disk": 25600, "engines": { @@ -37117,8 +38610,8 @@ } ] }, - "id": "g6-nanode-1", - "label": "DBaaS - Nanode 1GB", + "id": "g6-dedicated-1", + "label": "DBaaS - Dedicated 80GB", "memory": 1024, "vcpus": 1 } @@ -37165,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": { @@ -37472,7 +38970,7 @@ "content": { "application/json": { "example": { - "class": "nanode", + "class": "dedicated", "disk": 25600, "engines": { "mysql": [ @@ -37494,8 +38992,8 @@ } ] }, - "id": "g6-nanode-1", - "label": "DBaaS - Nanode 1GB", + "id": "g6-dedicated-1", + "label": "DBaaS - Dedicated 80GB", "memory": 1024, "vcpus": 1 }, @@ -37504,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": { @@ -41406,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" @@ -41545,14 +43048,117 @@ }, "id": { "description": "__Read-only__ The unique identifier for each image.", - "example": "linode/debian11", + "example": "private/15", "readOnly": true, "type": "string", "x-linode-cli-display": 1 }, + "image_sharing": { + "description": "This object represents the sharing status of an image.", + "oneOf": [ + { + "additionalProperties": false, + "example": { + "shared_by": null, + "shared_with": { + "image_sharegroup_list_url": "/images/private/15/sharegroups", + "sharegroup_count": 0 + } + }, + "properties": { + "shared_by": { + "description": "This field is `null` in this case, meaning the image is not shared by any group. The `shared_with` field provides details on the image's share group.", + "nullable": true, + "type": "object" + }, + "shared_with": { + "additionalProperties": false, + "description": "Specifies the group that the image is shared with, including the count of share groups and a URL to view the share groups.", + "properties": { + "image_sharegroup_list_url": { + "description": "A URL to view the list of share groups the image is shared with.", + "type": "string" + }, + "sharegroup_count": { + "description": "The number of share groups the image is shared with.", + "type": "integer" + } + }, + "required": [ + "sharegroup_count", + "image_sharegroup_list_url" + ], + "type": "object" + } + }, + "required": [ + "shared_with", + "shared_by" + ], + "title": "shared_with", + "type": "object" + }, + { + "additionalProperties": false, + "example": { + "shared_by": { + "sharegroup_id": 3, + "sharegroup_label": "label", + "sharegroup_uuid": "8003abfe-6b03-41a1-9e4c-a234ae3060c8", + "source_image_id": null + }, + "shared_with": null + }, + "properties": { + "shared_by": { + "additionalProperties": false, + "description": "This object contains the details of the share group that is sharing the image. The share group details are specified in this object.", + "properties": { + "sharegroup_id": { + "description": "The ID of the share group.", + "type": "integer" + }, + "sharegroup_label": { + "description": "A label linked to the share group.", + "type": "string" + }, + "sharegroup_uuid": { + "description": "The unique identifier of the share group.", + "format": "uuid", + "type": "string" + }, + "source_image_id": { + "description": "The ID of the source image being shared. This can be null if no specific source image is being referenced.", + "nullable": true, + "type": "string" + } + }, + "required": [ + "sharegroup_id", + "sharegroup_uuid", + "sharegroup_label", + "source_image_id" + ], + "type": "object" + }, + "shared_with": { + "description": "This field is null in this case, meaning the image is not shared with anyone. The details of sharing are contained in the `shared_by` field.", + "nullable": true, + "type": "object" + } + }, + "required": [ + "shared_with", + "shared_by" + ], + "title": "shared_by", + "type": "object" + } + ] + }, "is_public": { "description": "__Filterable__, __Read-only__ Revealed as `true` if the image is a public distribution image. Private, account-specific images are listed as `false`.", - "example": true, + "example": false, "readOnly": true, "type": "boolean", "x-akamai": { @@ -41563,6 +43169,18 @@ "x-linode-cli-display": 5, "x-linode-filterable": true }, + "is_shared": { + "description": "__Filterable__, __Read-only__ Indicates if the image is a private image shared with other users.", + "example": false, + "readOnly": true, + "type": "boolean", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true + }, "label": { "description": "__Filterable__ A short description of the image.", "example": "Debian 11", @@ -41707,6 +43325,28 @@ "x-linode-filterable": true } }, + "required": [ + "id", + "tags", + "type", + "description", + "label", + "created", + "updated", + "size", + "status", + "capabilities", + "is_public", + "is_shared", + "deprecated", + "regions", + "total_size", + "image_sharing", + "created_by", + "expiry", + "eol", + "vendor" + ], "type": "object", "x-akamai": { "file-path": "schemas/image.yaml" @@ -41789,7 +43429,7 @@ "x-linode-grant": "add_images" }, "get": { - "description": "Returns a paginated list of images. An image can be one of two types:\n\n- **Public image**. The `id` for these images begins with `linode/`. These images are generally available to all users. To limit the response to public images, don't include [authentication](https://techdocs.akamai.com/linode-api/reference/get-started#authentication) when calling this operation.\n\n- **Private image**. The `id` for these images begins with `private/`. These images are account-specific and only accessible to users with appropriate [grants](https://techdocs.akamai.com/linode-api/reference/get-user-grants). To view private images, you need to include authentication when calling this operation. The response includes both private and public images.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli images 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 images:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Returns a paginated list of images. An image can be one of two types:\n\n- **Public image**. The `id` for these images begins with `linode/`. These images are generally available to all users. To limit the response to public images, don't include [authentication](https://techdocs.akamai.com/linode-api/reference/get-started#authentication) when calling this operation.\n\n- **Private image**. The `id` for these images begins with `private/`. These images are account-specific and only accessible to users with appropriate [grants](https://techdocs.akamai.com/linode-api/reference/get-user-grants). To view private images, you need to include authentication when calling this operation. The response includes both private and public images.\n\n- **Shared image**. The `id` for these images begins with `shared/`. These are the images that are shared with the user.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli images 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 images: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-images" @@ -41910,14 +43550,117 @@ }, "id": { "description": "__Read-only__ The unique identifier for each image.", - "example": "linode/debian11", + "example": "private/15", "readOnly": true, "type": "string", "x-linode-cli-display": 1 }, + "image_sharing": { + "description": "This object represents the sharing status of an image.", + "oneOf": [ + { + "additionalProperties": false, + "example": { + "shared_by": null, + "shared_with": { + "image_sharegroup_list_url": "/images/private/15/sharegroups", + "sharegroup_count": 0 + } + }, + "properties": { + "shared_by": { + "description": "This field is `null` in this case, meaning the image is not shared by any group. The `shared_with` field provides details on the image's share group.", + "nullable": true, + "type": "object" + }, + "shared_with": { + "additionalProperties": false, + "description": "Specifies the group that the image is shared with, including the count of share groups and a URL to view the share groups.", + "properties": { + "image_sharegroup_list_url": { + "description": "A URL to view the list of share groups the image is shared with.", + "type": "string" + }, + "sharegroup_count": { + "description": "The number of share groups the image is shared with.", + "type": "integer" + } + }, + "required": [ + "sharegroup_count", + "image_sharegroup_list_url" + ], + "type": "object" + } + }, + "required": [ + "shared_with", + "shared_by" + ], + "title": "shared_with", + "type": "object" + }, + { + "additionalProperties": false, + "example": { + "shared_by": { + "sharegroup_id": 3, + "sharegroup_label": "label", + "sharegroup_uuid": "8003abfe-6b03-41a1-9e4c-a234ae3060c8", + "source_image_id": null + }, + "shared_with": null + }, + "properties": { + "shared_by": { + "additionalProperties": false, + "description": "This object contains the details of the share group that is sharing the image. The share group details are specified in this object.", + "properties": { + "sharegroup_id": { + "description": "The ID of the share group.", + "type": "integer" + }, + "sharegroup_label": { + "description": "A label linked to the share group.", + "type": "string" + }, + "sharegroup_uuid": { + "description": "The unique identifier of the share group.", + "format": "uuid", + "type": "string" + }, + "source_image_id": { + "description": "The ID of the source image being shared. This can be null if no specific source image is being referenced.", + "nullable": true, + "type": "string" + } + }, + "required": [ + "sharegroup_id", + "sharegroup_uuid", + "sharegroup_label", + "source_image_id" + ], + "type": "object" + }, + "shared_with": { + "description": "This field is null in this case, meaning the image is not shared with anyone. The details of sharing are contained in the `shared_by` field.", + "nullable": true, + "type": "object" + } + }, + "required": [ + "shared_with", + "shared_by" + ], + "title": "shared_by", + "type": "object" + } + ] + }, "is_public": { "description": "__Filterable__, __Read-only__ Revealed as `true` if the image is a public distribution image. Private, account-specific images are listed as `false`.", - "example": true, + "example": false, "readOnly": true, "type": "boolean", "x-akamai": { @@ -41928,6 +43671,18 @@ "x-linode-cli-display": 5, "x-linode-filterable": true }, + "is_shared": { + "description": "__Filterable__, __Read-only__ Indicates if the image is a private image shared with other users.", + "example": false, + "readOnly": true, + "type": "boolean", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true + }, "label": { "description": "__Filterable__ A short description of the image.", "example": "Debian 11", @@ -42072,6 +43827,28 @@ "x-linode-filterable": true } }, + "required": [ + "id", + "tags", + "type", + "description", + "label", + "created", + "updated", + "size", + "status", + "capabilities", + "is_public", + "is_shared", + "deprecated", + "regions", + "total_size", + "image_sharing", + "created_by", + "expiry", + "eol", + "vendor" + ], "type": "object", "x-akamai": { "file-path": "schemas/image.yaml" @@ -42208,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" @@ -42236,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" }, @@ -42355,14 +44132,117 @@ }, "id": { "description": "__Read-only__ The unique identifier for each image.", - "example": "linode/debian11", + "example": "private/15", "readOnly": true, "type": "string", "x-linode-cli-display": 1 }, + "image_sharing": { + "description": "This object represents the sharing status of an image.", + "oneOf": [ + { + "additionalProperties": false, + "example": { + "shared_by": null, + "shared_with": { + "image_sharegroup_list_url": "/images/private/15/sharegroups", + "sharegroup_count": 0 + } + }, + "properties": { + "shared_by": { + "description": "This field is `null` in this case, meaning the image is not shared by any group. The `shared_with` field provides details on the image's share group.", + "nullable": true, + "type": "object" + }, + "shared_with": { + "additionalProperties": false, + "description": "Specifies the group that the image is shared with, including the count of share groups and a URL to view the share groups.", + "properties": { + "image_sharegroup_list_url": { + "description": "A URL to view the list of share groups the image is shared with.", + "type": "string" + }, + "sharegroup_count": { + "description": "The number of share groups the image is shared with.", + "type": "integer" + } + }, + "required": [ + "sharegroup_count", + "image_sharegroup_list_url" + ], + "type": "object" + } + }, + "required": [ + "shared_with", + "shared_by" + ], + "title": "shared_with", + "type": "object" + }, + { + "additionalProperties": false, + "example": { + "shared_by": { + "sharegroup_id": 3, + "sharegroup_label": "label", + "sharegroup_uuid": "8003abfe-6b03-41a1-9e4c-a234ae3060c8", + "source_image_id": null + }, + "shared_with": null + }, + "properties": { + "shared_by": { + "additionalProperties": false, + "description": "This object contains the details of the share group that is sharing the image. The share group details are specified in this object.", + "properties": { + "sharegroup_id": { + "description": "The ID of the share group.", + "type": "integer" + }, + "sharegroup_label": { + "description": "A label linked to the share group.", + "type": "string" + }, + "sharegroup_uuid": { + "description": "The unique identifier of the share group.", + "format": "uuid", + "type": "string" + }, + "source_image_id": { + "description": "The ID of the source image being shared. This can be null if no specific source image is being referenced.", + "nullable": true, + "type": "string" + } + }, + "required": [ + "sharegroup_id", + "sharegroup_uuid", + "sharegroup_label", + "source_image_id" + ], + "type": "object" + }, + "shared_with": { + "description": "This field is null in this case, meaning the image is not shared with anyone. The details of sharing are contained in the `shared_by` field.", + "nullable": true, + "type": "object" + } + }, + "required": [ + "shared_with", + "shared_by" + ], + "title": "shared_by", + "type": "object" + } + ] + }, "is_public": { "description": "__Filterable__, __Read-only__ Revealed as `true` if the image is a public distribution image. Private, account-specific images are listed as `false`.", - "example": true, + "example": false, "readOnly": true, "type": "boolean", "x-akamai": { @@ -42373,6 +44253,18 @@ "x-linode-cli-display": 5, "x-linode-filterable": true }, + "is_shared": { + "description": "__Filterable__, __Read-only__ Indicates if the image is a private image shared with other users.", + "example": false, + "readOnly": true, + "type": "boolean", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true + }, "label": { "description": "__Filterable__ A short description of the image.", "example": "Debian 11", @@ -42517,6 +44409,28 @@ "x-linode-filterable": true } }, + "required": [ + "id", + "tags", + "type", + "description", + "label", + "created", + "updated", + "size", + "status", + "capabilities", + "is_public", + "is_shared", + "deprecated", + "regions", + "total_size", + "image_sharing", + "created_by", + "expiry", + "eol", + "vendor" + ], "type": "object", "x-akamai": { "file-path": "schemas/image.yaml" @@ -42635,7 +44549,7 @@ }, "/{apiVersion}/images/{imageId}": { "get": { - "description": "Get information about a single image. An image can be one of two types:\n\n- **Public image**. The `id` for these images begins with `linode/`. These images are generally available to all users. To limit the response to public images, don't include [authentication](https://techdocs.akamai.com/linode-api/reference/get-started#authentication) when calling this operation.\n\n- **Private image**. The `id` for these images begins with `private/`. These images are account-specific and only accessible to users with appropriate [grants](https://techdocs.akamai.com/linode-api/reference/get-user-grants). To view private images, you need to include authentication when calling this operation. The response will also include public images.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli images view linode/debian9\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_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Get information about a single image. An image can be one of two types:\n\n- **Public image**. The `id` for these images begins with `linode/`. These images are generally available to all users. To limit the response to public images, don't include [authentication](https://techdocs.akamai.com/linode-api/reference/get-started#authentication) when calling this operation.\n\n- **Private image**. The `id` for these images begins with `private/`. These images are account-specific and only accessible to users with appropriate [grants](https://techdocs.akamai.com/linode-api/reference/get-user-grants). To view private images, you need to include authentication when calling this operation. The response will also include public images.\n\n- **Shared image**. The `id` for these images begins with `shared/`. These are the images that are shared with the user.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli images view linode/debian9\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_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-image" @@ -42718,14 +44632,117 @@ }, "id": { "description": "__Read-only__ The unique identifier for each image.", - "example": "linode/debian11", + "example": "private/15", "readOnly": true, "type": "string", "x-linode-cli-display": 1 }, + "image_sharing": { + "description": "This object represents the sharing status of an image.", + "oneOf": [ + { + "additionalProperties": false, + "example": { + "shared_by": null, + "shared_with": { + "image_sharegroup_list_url": "/images/private/15/sharegroups", + "sharegroup_count": 0 + } + }, + "properties": { + "shared_by": { + "description": "This field is `null` in this case, meaning the image is not shared by any group. The `shared_with` field provides details on the image's share group.", + "nullable": true, + "type": "object" + }, + "shared_with": { + "additionalProperties": false, + "description": "Specifies the group that the image is shared with, including the count of share groups and a URL to view the share groups.", + "properties": { + "image_sharegroup_list_url": { + "description": "A URL to view the list of share groups the image is shared with.", + "type": "string" + }, + "sharegroup_count": { + "description": "The number of share groups the image is shared with.", + "type": "integer" + } + }, + "required": [ + "sharegroup_count", + "image_sharegroup_list_url" + ], + "type": "object" + } + }, + "required": [ + "shared_with", + "shared_by" + ], + "title": "shared_with", + "type": "object" + }, + { + "additionalProperties": false, + "example": { + "shared_by": { + "sharegroup_id": 3, + "sharegroup_label": "label", + "sharegroup_uuid": "8003abfe-6b03-41a1-9e4c-a234ae3060c8", + "source_image_id": null + }, + "shared_with": null + }, + "properties": { + "shared_by": { + "additionalProperties": false, + "description": "This object contains the details of the share group that is sharing the image. The share group details are specified in this object.", + "properties": { + "sharegroup_id": { + "description": "The ID of the share group.", + "type": "integer" + }, + "sharegroup_label": { + "description": "A label linked to the share group.", + "type": "string" + }, + "sharegroup_uuid": { + "description": "The unique identifier of the share group.", + "format": "uuid", + "type": "string" + }, + "source_image_id": { + "description": "The ID of the source image being shared. This can be null if no specific source image is being referenced.", + "nullable": true, + "type": "string" + } + }, + "required": [ + "sharegroup_id", + "sharegroup_uuid", + "sharegroup_label", + "source_image_id" + ], + "type": "object" + }, + "shared_with": { + "description": "This field is null in this case, meaning the image is not shared with anyone. The details of sharing are contained in the `shared_by` field.", + "nullable": true, + "type": "object" + } + }, + "required": [ + "shared_with", + "shared_by" + ], + "title": "shared_by", + "type": "object" + } + ] + }, "is_public": { "description": "__Filterable__, __Read-only__ Revealed as `true` if the image is a public distribution image. Private, account-specific images are listed as `false`.", - "example": true, + "example": false, "readOnly": true, "type": "boolean", "x-akamai": { @@ -42736,6 +44753,18 @@ "x-linode-cli-display": 5, "x-linode-filterable": true }, + "is_shared": { + "description": "__Filterable__, __Read-only__ Indicates if the image is a private image shared with other users.", + "example": false, + "readOnly": true, + "type": "boolean", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true + }, "label": { "description": "__Filterable__ A short description of the image.", "example": "Debian 11", @@ -42880,6 +44909,28 @@ "x-linode-filterable": true } }, + "required": [ + "id", + "tags", + "type", + "description", + "label", + "created", + "updated", + "size", + "status", + "capabilities", + "is_public", + "is_shared", + "deprecated", + "regions", + "total_size", + "image_sharing", + "created_by", + "expiry", + "eol", + "vendor" + ], "type": "object", "x-akamai": { "file-path": "schemas/image.yaml" @@ -42974,7 +45025,6 @@ "application/json": { "schema": { "additionalProperties": false, - "description": "Image object.", "properties": { "capabilities": { "description": "__Read-only__ A list of the possible capabilities of this image.\n\n- `cloud-init`. The image supports the cloud-init multi-distribution method with our [Metadata service](https://www.linode.com/docs/products/compute/compute-instances/guides/metadata/#troubleshoot-metadata-and-cloud-init). This only applies to public images.\n\n- `distributed-sites`. Whether the image can be used in distributed compute regions. Compared to a core compute region, distributed compute regions offer limited functionality, but they're globally distributed. Your image can be geographically closer to you, potentially letting you deploy it quicker. See [Regions and images](https://techdocs.akamai.com/cloud-computing/docs/images#regions-and-images) for complete details.", @@ -43063,6 +45113,18 @@ "x-linode-cli-display": 5, "x-linode-filterable": true }, + "is_shared": { + "description": "__Filterable__, __Read-only__ Indicates if the image is a private image shared with other users.", + "example": "{{is_shared}}", + "readOnly": true, + "type": "boolean", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true + }, "label": { "description": "__Filterable__ A short description of the image.", "example": "{{label}}", @@ -43209,7 +45271,7 @@ }, "type": "object", "x-akamai": { - "file-path": "schemas/image.yaml" + "file-path": "schemas/put-image.yaml" } }, "x-example": { @@ -43296,14 +45358,117 @@ }, "id": { "description": "__Read-only__ The unique identifier for each image.", - "example": "linode/debian11", + "example": "private/15", "readOnly": true, "type": "string", "x-linode-cli-display": 1 }, + "image_sharing": { + "description": "This object represents the sharing status of an image.", + "oneOf": [ + { + "additionalProperties": false, + "example": { + "shared_by": null, + "shared_with": { + "image_sharegroup_list_url": "/images/private/15/sharegroups", + "sharegroup_count": 0 + } + }, + "properties": { + "shared_by": { + "description": "This field is `null` in this case, meaning the image is not shared by any group. The `shared_with` field provides details on the image's share group.", + "nullable": true, + "type": "object" + }, + "shared_with": { + "additionalProperties": false, + "description": "Specifies the group that the image is shared with, including the count of share groups and a URL to view the share groups.", + "properties": { + "image_sharegroup_list_url": { + "description": "A URL to view the list of share groups the image is shared with.", + "type": "string" + }, + "sharegroup_count": { + "description": "The number of share groups the image is shared with.", + "type": "integer" + } + }, + "required": [ + "sharegroup_count", + "image_sharegroup_list_url" + ], + "type": "object" + } + }, + "required": [ + "shared_with", + "shared_by" + ], + "title": "shared_with", + "type": "object" + }, + { + "additionalProperties": false, + "example": { + "shared_by": { + "sharegroup_id": 3, + "sharegroup_label": "label", + "sharegroup_uuid": "8003abfe-6b03-41a1-9e4c-a234ae3060c8", + "source_image_id": null + }, + "shared_with": null + }, + "properties": { + "shared_by": { + "additionalProperties": false, + "description": "This object contains the details of the share group that is sharing the image. The share group details are specified in this object.", + "properties": { + "sharegroup_id": { + "description": "The ID of the share group.", + "type": "integer" + }, + "sharegroup_label": { + "description": "A label linked to the share group.", + "type": "string" + }, + "sharegroup_uuid": { + "description": "The unique identifier of the share group.", + "format": "uuid", + "type": "string" + }, + "source_image_id": { + "description": "The ID of the source image being shared. This can be null if no specific source image is being referenced.", + "nullable": true, + "type": "string" + } + }, + "required": [ + "sharegroup_id", + "sharegroup_uuid", + "sharegroup_label", + "source_image_id" + ], + "type": "object" + }, + "shared_with": { + "description": "This field is null in this case, meaning the image is not shared with anyone. The details of sharing are contained in the `shared_by` field.", + "nullable": true, + "type": "object" + } + }, + "required": [ + "shared_with", + "shared_by" + ], + "title": "shared_by", + "type": "object" + } + ] + }, "is_public": { "description": "__Filterable__, __Read-only__ Revealed as `true` if the image is a public distribution image. Private, account-specific images are listed as `false`.", - "example": true, + "example": false, "readOnly": true, "type": "boolean", "x-akamai": { @@ -43314,6 +45479,18 @@ "x-linode-cli-display": 5, "x-linode-filterable": true }, + "is_shared": { + "description": "__Filterable__, __Read-only__ Indicates if the image is a private image shared with other users.", + "example": false, + "readOnly": true, + "type": "boolean", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true + }, "label": { "description": "__Filterable__ A short description of the image.", "example": "Debian 11", @@ -43458,13 +45635,35 @@ "x-linode-filterable": true } }, + "required": [ + "id", + "tags", + "type", + "description", + "label", + "created", + "updated", + "size", + "status", + "capabilities", + "is_public", + "is_shared", + "deprecated", + "regions", + "total_size", + "image_sharing", + "created_by", + "expiry", + "eol", + "vendor" + ], "type": "object", "x-akamai": { "file-path": "schemas/image.yaml" } }, "x-example": { - "x-ref": "../examples/get-image-200.json" + "x-ref": "../examples/put-image-200.json" }, "x-linode-cli-subtables": [ "regions" @@ -43793,14 +45992,117 @@ }, "id": { "description": "__Read-only__ The unique identifier for each image.", - "example": "linode/debian11", + "example": "private/15", "readOnly": true, "type": "string", "x-linode-cli-display": 1 }, + "image_sharing": { + "description": "This object represents the sharing status of an image.", + "oneOf": [ + { + "additionalProperties": false, + "example": { + "shared_by": null, + "shared_with": { + "image_sharegroup_list_url": "/images/private/15/sharegroups", + "sharegroup_count": 0 + } + }, + "properties": { + "shared_by": { + "description": "This field is `null` in this case, meaning the image is not shared by any group. The `shared_with` field provides details on the image's share group.", + "nullable": true, + "type": "object" + }, + "shared_with": { + "additionalProperties": false, + "description": "Specifies the group that the image is shared with, including the count of share groups and a URL to view the share groups.", + "properties": { + "image_sharegroup_list_url": { + "description": "A URL to view the list of share groups the image is shared with.", + "type": "string" + }, + "sharegroup_count": { + "description": "The number of share groups the image is shared with.", + "type": "integer" + } + }, + "required": [ + "sharegroup_count", + "image_sharegroup_list_url" + ], + "type": "object" + } + }, + "required": [ + "shared_with", + "shared_by" + ], + "title": "shared_with", + "type": "object" + }, + { + "additionalProperties": false, + "example": { + "shared_by": { + "sharegroup_id": 3, + "sharegroup_label": "label", + "sharegroup_uuid": "8003abfe-6b03-41a1-9e4c-a234ae3060c8", + "source_image_id": null + }, + "shared_with": null + }, + "properties": { + "shared_by": { + "additionalProperties": false, + "description": "This object contains the details of the share group that is sharing the image. The share group details are specified in this object.", + "properties": { + "sharegroup_id": { + "description": "The ID of the share group.", + "type": "integer" + }, + "sharegroup_label": { + "description": "A label linked to the share group.", + "type": "string" + }, + "sharegroup_uuid": { + "description": "The unique identifier of the share group.", + "format": "uuid", + "type": "string" + }, + "source_image_id": { + "description": "The ID of the source image being shared. This can be null if no specific source image is being referenced.", + "nullable": true, + "type": "string" + } + }, + "required": [ + "sharegroup_id", + "sharegroup_uuid", + "sharegroup_label", + "source_image_id" + ], + "type": "object" + }, + "shared_with": { + "description": "This field is null in this case, meaning the image is not shared with anyone. The details of sharing are contained in the `shared_by` field.", + "nullable": true, + "type": "object" + } + }, + "required": [ + "shared_with", + "shared_by" + ], + "title": "shared_by", + "type": "object" + } + ] + }, "is_public": { "description": "__Filterable__, __Read-only__ Revealed as `true` if the image is a public distribution image. Private, account-specific images are listed as `false`.", - "example": true, + "example": false, "readOnly": true, "type": "boolean", "x-akamai": { @@ -43811,6 +46113,18 @@ "x-linode-cli-display": 5, "x-linode-filterable": true }, + "is_shared": { + "description": "__Filterable__, __Read-only__ Indicates if the image is a private image shared with other users.", + "example": false, + "readOnly": true, + "type": "boolean", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true + }, "label": { "description": "__Filterable__ A short description of the image.", "example": "Debian 11", @@ -43955,6 +46269,28 @@ "x-linode-filterable": true } }, + "required": [ + "id", + "tags", + "type", + "description", + "label", + "created", + "updated", + "size", + "status", + "capabilities", + "is_public", + "is_shared", + "deprecated", + "regions", + "total_size", + "image_sharing", + "created_by", + "expiry", + "eol", + "vendor" + ], "type": "object", "x-akamai": { "file-path": "schemas/image.yaml" @@ -44103,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" @@ -44134,6 +46470,18 @@ "example": "linode/debian9", "type": "string" }, + "maintenance_policy": { + "description": "__Beta__ Defines the maintenance policy for this Linode. Choose from the following policies:\n\n- `linode/migrate`: Migrates the Linode to a new host while it remains fully operational (with some performance degradation). Recommended for maximizing availability.\n- `linode/power_off_on`: Powers off the Linode at the start of the maintenance event and reboots it once the maintenance finishes. Recommended for maximizing performance.\n\nReview [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "metadata": { "additionalProperties": false, "description": "__Write-only__ An object containing user-defined data relevant to the creation of Linodes.", @@ -44321,12 +46669,8 @@ "items": { "properties": { "range": { - "default": null, "description": "Your assigned IPv6 range in CIDR notation (`2001:0db8::1/64`) or prefix (`/64`).\n- The prefix of `/64` or `/56` block of IPv6 addresses.\n- If provided in CIDR notation, the prefix must be within the assigned ranges for the Linode.", - "example": [ - "2001:0a0a::1/64", - "/64" - ], + "example": "2001:0a0a::1/64", "type": "string" } }, @@ -44486,7 +46830,6 @@ "additionalProperties": false, "properties": { "range": { - "default": null, "description": "CIDR notation of a range (`1.2.3.4/24`) or prefix only (`/24`).\n- When only the prefix is provided, then an available range of that size within the VPC's subnet is automatically selected.\n- If specified as CIDR notation, it must belong to the VPC subnet. All addresses in the range must not be taken by any other Linode or interfaces in the VPC subnet and must not include any of the first two or last two addresses of the VPC subnet.", "example": [ "192.168.100.100/28", @@ -44495,12 +46838,11 @@ "10.11.12.0/24", "auto" ], - "nullable": true, "type": "string" } }, "required": [ - "address" + "range" ], "type": "object" }, @@ -45048,6 +47390,18 @@ "readOnly": true, "type": "integer" }, + "maintenance_policy": { + "description": "__Beta__ The maintenance policy configured by the user for this Linode. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "placement_group": { "additionalProperties": false, "description": "__Read-only__ Details on the [placement group](https://www.linode.com/docs/products/compute/compute-instances/guides/placement-groups/) that this Linode belongs to. Empty if the Linode isn't in a placement group.", @@ -45311,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", @@ -45711,6 +48065,19 @@ "readOnly": true, "type": "integer" }, + "maintenance_policy": { + "description": "__Beta__, __Read-only__ The maintenance policy configured by the user for this Linode. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "linode/migrate", + "readOnly": true, + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "placement_group": { "additionalProperties": false, "description": "__Read-only__ Details on the [placement group](https://www.linode.com/docs/products/compute/compute-instances/guides/placement-groups/) that this Linode belongs to. Empty if the Linode isn't in a placement group.", @@ -46303,6 +48670,19 @@ "readOnly": true, "type": "integer" }, + "maintenance_policy": { + "description": "__Beta__, __Read-only__ The maintenance policy configured by the user for this Linode. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "linode/migrate", + "readOnly": true, + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "placement_group": { "additionalProperties": false, "description": "__Read-only__ Details on the [placement group](https://www.linode.com/docs/products/compute/compute-instances/guides/placement-groups/) that this Linode belongs to. Empty if the Linode isn't in a placement group.", @@ -46902,6 +49282,18 @@ "readOnly": true, "type": "integer" }, + "maintenance_policy": { + "description": "__Beta__ The maintenance policy configured by the user for this Linode. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "{{maintenance_policy}}", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "placement_group": { "additionalProperties": false, "description": "__Read-only__ Details on the [placement group](https://www.linode.com/docs/products/compute/compute-instances/guides/placement-groups/) that this Linode belongs to. Empty if the Linode isn't in a placement group.", @@ -47359,6 +49751,18 @@ "readOnly": true, "type": "integer" }, + "maintenance_policy": { + "description": "__Beta__ The maintenance policy configured by the user for this Linode. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "placement_group": { "additionalProperties": false, "description": "__Read-only__ Details on the [placement group](https://www.linode.com/docs/products/compute/compute-instances/guides/placement-groups/) that this Linode belongs to. Empty if the Linode isn't in a placement group.", @@ -49588,6 +51992,18 @@ "example": "{{linode_id}}", "type": "integer" }, + "maintenance_policy": { + "description": "__Beta__ Defines the maintenance policy for the new Linode. If you don't provide it, the new Linode inherits the maintenance policy from the original Linode. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "{{maintenance_policy}}", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "metadata": { "additionalProperties": false, "description": "__Write-only__ An object containing user-defined data relevant to the creation of Linodes.", @@ -49923,6 +52339,18 @@ "readOnly": true, "type": "integer" }, + "maintenance_policy": { + "description": "__Beta__ The maintenance policy configured by the user for this Linode. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "placement_group": { "additionalProperties": false, "description": "__Read-only__ Details on the [placement group](https://www.linode.com/docs/products/compute/compute-instances/guides/placement-groups/) that this Linode belongs to. Empty if the Linode isn't in a placement group.", @@ -53910,7 +56338,7 @@ ], "summary": "Add a configuration profile interface", "tags": [ - "Interfaces" + "Configuration profile interfaces" ], "x-akamai": { "tabs": [ @@ -54171,7 +56599,7 @@ ], "summary": "List configuration profile interfaces", "tags": [ - "Interfaces" + "Configuration profile interfaces" ], "x-akamai": { "tabs": [ @@ -54357,7 +56785,7 @@ ], "summary": "Reorder configuration profile interfaces", "tags": [ - "Interfaces" + "Configuration profile interfaces" ], "x-akamai": { "tabs": [ @@ -54624,7 +57052,7 @@ ], "summary": "Get a configuration profile interface", "tags": [ - "Interfaces" + "Configuration profile interfaces" ], "x-akamai": { "tabs": [ @@ -54897,7 +57325,7 @@ ], "summary": "Update a configuration profile interface", "tags": [ - "Interfaces" + "Configuration profile interfaces" ], "x-akamai": { "tabs": [ @@ -54991,7 +57419,7 @@ ], "summary": "Delete a configuration profile interface", "tags": [ - "Interfaces" + "Configuration profile interfaces" ], "x-akamai": { "tabs": [ @@ -55079,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" @@ -55106,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" @@ -56850,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", @@ -56862,485 +59290,84 @@ "x-linode-cli-display": 4, "x-linode-filterable": true }, - "id": { - "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", - "example": 123, - "readOnly": true, - "type": "integer", - "x-akamai": { - "labels": [ - "Filterable" - ] - }, - "x-linode-cli-display": 1, - "x-linode-filterable": true - }, - "label": { - "description": "__Filterable__ The Firewall's label, for display purposes only.\n\nFirewall labels have the following constraints:\n\n - Must begin and end with an alphanumeric character.\n - May only consist of alphanumeric characters, hyphens (`-`), underscores (`_`) or periods (`.`).\n - Cannot have two hyphens (`--`), underscores (`__`) or periods (`..`) in a row.\n - Must be between 3 and 32 characters.\n - Must be unique.", - "example": "firewall123", - "maxLength": 32, - "minLength": 3, - "pattern": "^[a-zA-Z]((?!--|__|\\.\\.)[a-zA-Z0-9-_.])+$", - "type": "string", - "x-akamai": { - "labels": [ - "Filterable" - ] - }, - "x-linode-cli-display": 2, - "x-linode-filterable": true - }, - "rules": { - "additionalProperties": false, - "description": "The inbound and outbound access rules to apply to the Firewall.\n\nA Firewall may have up to 25 rules across its inbound and outbound rulesets.\n\nMultiple rules are applied in order. If two rules conflict, the first rule takes precedence. For example, if the first rule accepts inbound traffic from an address, and the second rule drops inbound traffic the same address, the first rule applies and inbound traffic from that address is accepted.", - "properties": { - "fingerprint": { - "description": "__Read-only__ The fingerprint is a 32-bit hash. It represents the firewall rules as an 8 character hex string. You can use `fingerprint` to compare rule versions.", - "example": "997dd135", - "readOnly": true, - "type": "string" - }, - "inbound": { - "description": "The inbound rules for the firewall, as a JSON array.", - "items": { + "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": "One of a Firewall's inbound or outbound access rules. The `ports` property can be used to allow traffic on a comma-separated list of different ports.", + "description": "__Read-only__ The Linode this `linode_interface` is assigned to. Returns `null` when the entity `type` is `linode` or `nodebalancer`.", + "nullable": true, "properties": { - "action": { - "description": "Controls whether traffic is accepted or dropped by this rule. Overrides the Firewall's `inbound_policy` if this is an inbound rule, or the `outbound_policy` if this is an outbound rule.", - "enum": [ - "ACCEPT", - "DROP" - ], - "example": "ACCEPT", - "type": "string" - }, - "addresses": { - "additionalProperties": false, - "description": "The IPv4 or IPv6 addresses affected by this rule. A rule can have up to 255 total addresses or networks listed across its `ipv4` and `ipv6` arrays. A network and a single IP are treated as equivalent when accounting for this limit.\n\nMust contain `ipv4`, `ipv6`, or both.", - "properties": { - "ipv4": { - "description": "A list of IPv4 addresses or networks. Addresses must be in IP/mask format. Must not be an empty list.\n\nIf `0.0.0.0/0` is included in this list, all IPv4 addresses are affected by this rule.", - "example": [ - "192.0.2.0/24", - "198.51.100.2/32" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "ipv6": { - "description": "A list of IPv6 addresses or networks. Addresses must be in IP/mask format and must not include zone_id notation as described in [RFC 4007](https://www.rfc-editor.org/rfc/rfc4007). Must not be an empty list.\n\nIf `::/0` is included in this list, all IPv6 addresses are affected by this rule.", - "example": [ - "2001:DB8::/128" - ], - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "description": { - "description": "Used to describe this rule. For display purposes only.", - "example": "An example firewall rule description.", - "maxLength": 100, - "minLength": 1, - "type": "string" + "id": { + "description": "The ID of the Linode assigned to this `linode_interface`.", + "example": 5000, + "type": "integer" }, "label": { - "description": "Used to identify this rule. For display purposes only.", - "example": "firewallrule123", - "maxLength": 32, - "minLength": 3, + "description": "The name of the Linode this `linode_interface` is assigned to.", + "example": "linode5000", "type": "string" }, - "ports": { - "description": "A string representing the port or ports affected by this rule:\n\n- The string may be a single port, a range of ports, or a comma-separated list of single ports and port ranges. A space is permitted following each comma.\n- A range of ports is inclusive of the start and end values for the range. The end value of the range must be greater than the start value.\n- Ports must be within 1 and 65535, and may not contain any leading zeroes. For example, port `080` is not allowed.\n- The ports string can have up to 15 _pieces_, where a single port is treated as one piece, and a port range is treated as two pieces. For example, the string \"22-24, 80, 443\" has four pieces.\n- If no ports are configured, all ports are affected.\n- Only allowed for the TCP and UDP protocols. Ports are not allowed for the ICMP and IPENCAP protocols.", - "example": "22-24, 80, 443", + "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" }, - "protocol": { - "description": "The type of network traffic affected by this rule.", - "enum": [ - "TCP", - "UDP", - "ICMP", - "IPENCAP" - ], - "example": "TCP", - "type": "string" - } - }, - "type": "object", - "x-akamai": { - "file-path": "schemas/firewall-rule-config.yaml" - } - }, - "type": "array", - "x-linode-cli-format": "json" - }, - "inbound_policy": { - "description": "The default behavior for inbound traffic. This setting can be overridden by [updating](https://techdocs.akamai.com/linode-api/reference/put-firewall-rules) the `inbound.action` property of the Firewall Rule.", - "enum": [ - "ACCEPT", - "DROP" - ], - "example": "DROP", - "type": "string" - }, - "outbound": { - "description": "The outbound rules for the firewall, as a JSON array.", - "items": { - "additionalProperties": false, - "description": "One of a Firewall's inbound or outbound access rules. The `ports` property can be used to allow traffic on a comma-separated list of different ports.", - "properties": { - "action": { - "description": "Controls whether traffic is accepted or dropped by this rule. Overrides the Firewall's `inbound_policy` if this is an inbound rule, or the `outbound_policy` if this is an outbound rule.", + "type": { + "description": "A Linode interface\u2019s `parent_entity` is a `linode`.", "enum": [ - "ACCEPT", - "DROP" + "linode" ], - "example": "ACCEPT", - "type": "string" - }, - "addresses": { - "additionalProperties": false, - "description": "The IPv4 or IPv6 addresses affected by this rule. A rule can have up to 255 total addresses or networks listed across its `ipv4` and `ipv6` arrays. A network and a single IP are treated as equivalent when accounting for this limit.\n\nMust contain `ipv4`, `ipv6`, or both.", - "properties": { - "ipv4": { - "description": "A list of IPv4 addresses or networks. Addresses must be in IP/mask format. Must not be an empty list.\n\nIf `0.0.0.0/0` is included in this list, all IPv4 addresses are affected by this rule.", - "example": [ - "192.0.2.0/24", - "198.51.100.2/32" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "ipv6": { - "description": "A list of IPv6 addresses or networks. Addresses must be in IP/mask format and must not include zone_id notation as described in [RFC 4007](https://www.rfc-editor.org/rfc/rfc4007). Must not be an empty list.\n\nIf `::/0` is included in this list, all IPv6 addresses are affected by this rule.", - "example": [ - "2001:DB8::/128" - ], - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "description": { - "description": "Used to describe this rule. For display purposes only.", - "example": "An example firewall rule description.", - "maxLength": 100, - "minLength": 1, + "example": "linode", "type": "string" }, - "label": { - "description": "Used to identify this rule. For display purposes only.", - "example": "firewallrule123", - "maxLength": 32, - "minLength": 3, - "type": "string" - }, - "ports": { - "description": "A string representing the port or ports affected by this rule:\n\n- The string may be a single port, a range of ports, or a comma-separated list of single ports and port ranges. A space is permitted following each comma.\n- A range of ports is inclusive of the start and end values for the range. The end value of the range must be greater than the start value.\n- Ports must be within 1 and 65535, and may not contain any leading zeroes. For example, port `080` is not allowed.\n- The ports string can have up to 15 _pieces_, where a single port is treated as one piece, and a port range is treated as two pieces. For example, the string \"22-24, 80, 443\" has four pieces.\n- If no ports are configured, all ports are affected.\n- Only allowed for the TCP and UDP protocols. Ports are not allowed for the ICMP and IPENCAP protocols.", - "example": "22-24, 80, 443", - "nullable": true, - "type": "string" - }, - "protocol": { - "description": "The type of network traffic affected by this rule.", - "enum": [ - "TCP", - "UDP", - "ICMP", - "IPENCAP" - ], - "example": "TCP", + "url": { + "description": "The API URL path you can use to access this entity.", + "example": "/v4/linode/instances/5000", + "format": "url", "type": "string" } }, - "type": "object", - "x-akamai": { - "file-path": "schemas/firewall-rule-config.yaml" - } + "readOnly": true, + "type": "object" }, - "type": "array", - "x-linode-cli-format": "json" - }, - "outbound_policy": { - "description": "The default behavior for outbound traffic. This setting can be overridden by [updating](https://techdocs.akamai.com/linode-api/reference/put-firewall-rules) the `outbound.action` property of the Firewall Rule.", - "enum": [ - "ACCEPT", - "DROP" - ], - "example": "DROP", - "type": "string" + "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" + } }, - "version": { - "description": "__Read-only__ The firewall's rule version. The first version is `1`. The version number is incremented when the firewall's rules change.", - "example": 1, - "readOnly": true, - "type": "integer" - } - }, - "type": "object" - }, - "status": { - "description": "__Read-only__ The status of this Firewall.\n\n - When a Firewall is first created its status is `enabled`.\n - Run the [Update a firewall](https://techdocs.akamai.com/linode-api/reference/put-firewall) operation to set a Firewall's status to `enabled` or `disabled`.\n - Run the [Delete a firewall](https://techdocs.akamai.com/linode-api/reference/delete-firewall) operation to delete a Firewall.", - "enum": [ - "enabled", - "disabled", - "deleted" - ], - "example": "enabled", - "readOnly": true, - "type": "string", - "x-linode-cli-display": 3 - }, - "tags": { - "description": "__Filterable__ An array of tags applied to this object. Tags are for organizational purposes only.", - "example": [ - "example tag", - "another example" - ], - "items": { - "type": "string" - }, - "type": "array", - "x-akamai": { - "labels": [ - "Filterable" - ] - }, - "x-linode-filterable": true - }, - "updated": { - "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", - "example": "2018-01-02T00:01:01", - "format": "date-time", - "readOnly": true, - "type": "string", - "x-akamai": { - "labels": [ - "Filterable" - ] + "type": "object" }, - "x-linode-cli-display": 5, - "x-linode-filterable": true - } - }, - "type": "object", - "x-akamai": { - "file-path": "schemas/firewall.yaml" - } - }, - "type": "array" - }, - "page": { - "description": "__Read-only__ The current [page](https://techdocs.akamai.com/linode-api/reference/pagination).", - "example": 1, - "readOnly": true, - "type": "integer" - }, - "pages": { - "description": "__Read-only__ The total number of [pages](https://techdocs.akamai.com/linode-api/reference/pagination).", - "example": 1, - "readOnly": true, - "type": "integer" - }, - "results": { - "description": "__Read-only__ The total number of results.", - "example": 1, - "readOnly": true, - "type": "integer" - } - }, - "type": "object", - "x-akamai": { - "file-path": "schemas/added-get-linode-firewalls-200.yaml" - } - }, - "x-example": { - "x-ref": "../examples/get-linode-firewalls-200.json" - } - } - }, - "description": "Returns a paginated list of Firewalls assigned to this Linode." - }, - "default": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "errors": { - "items": { - "additionalProperties": false, - "description": "An object for describing a single error that occurred during the processing of a request.", - "properties": { - "field": { - "description": "The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.", - "example": "fieldname", - "type": "string" - }, - "reason": { - "description": "What happened to cause this error. In most cases, this can be fixed immediately by changing the data you sent in the request, but in some cases you will be instructed to [Open a support ticket](https://techdocs.akamai.com/linode-api/reference/post-ticket) or perform some other action before you can complete the request successfully.", - "example": "fieldname must be a valid value", - "type": "string" - } - }, - "type": "object", - "x-akamai": { - "file-path": "schemas/error-object.yaml" - } - }, - "type": "array" - } - }, - "type": "object" - } - } - }, - "description": "See [Errors](https://techdocs.akamai.com/linode-api/reference/errors) for the range of possible error response codes." - } - }, - "security": [ - { - "personalAccessToken": [] - }, - { - "oauth": [ - "linodes:read_only" - ] - } - ], - "summary": "List a Linode's firewalls", - "tags": [ - "Firewalls" - ], - "x-akamai": { - "tabs": [ - { - "syntax": "linode-cli linodes firewalls-list 123", - "title": "CLI", - "url": "https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli" - }, - { - "syntax": "linodes:read_only", - "title": "OAuth scopes", - "url": "https://techdocs.akamai.com/linode-api/reference/get-started#oauth" - } - ] - }, - "x-linode-cli-action": "firewalls-list", - "x-linode-grant": "read_only" - }, - "put": { - "description": "Replace the current list of assigned firewalls with a new list, or provide an empty list to remove all firewalls from this Linode.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli linodes firewalls-update 123 \\\n --firewall_ids '[1234]'\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/put-linode-firewalls" - }, - "operationId": "put-linode-firewalls", - "parameters": [ - { - "description": "The page of a collection to return.", - "example": "{{page}}", - "in": "query", - "name": "page", - "required": false, - "schema": { - "default": 1, - "example": 6, - "minimum": 1, - "type": "integer" - }, - "x-akamai": { - "file-path": "parameters/page-offset.yaml" - } - }, - { - "description": "The number of items to return per page.", - "example": "{{page_size}}", - "in": "query", - "name": "page_size", - "schema": { - "default": 100, - "example": 50, - "maximum": 500, - "minimum": 25, - "type": "integer" - }, - "x-akamai": { - "file-path": "parameters/page-size.yaml" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "description": "Replace or remove firewalls IDs assigned to a Linode or NodeBalancer.", - "properties": { - "firewall_ids": { - "description": "A complete list of firewall IDs to assign to this Linode or NodeBalancer. This operation replaces any existing assignments. To remove all firewalls, pass an empty list, `[]`.", - "example": 1234, - "items": { - "type": "integer" - }, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "firewall_ids" - ], - "type": "object", - "x-akamai": { - "file-path": "schemas/firewall-ids-request.yaml" - } - }, - "x-example": { - "x-ref": "../examples/get-linode-firewalls-200.json" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "data": { - "items": { - "additionalProperties": false, - "description": "A resource that controls incoming and outgoing network traffic to a compute service. Only one enabled Firewall can be attached to a particular service at any given time. [Create a firewall device](https://techdocs.akamai.com/linode-api/reference/post-firewall-device) to assign a Firewall to a service. Currently, Firewalls can assigned to Linode compute instances and NodeBalancers.", - "properties": { - "created": { - "description": "__Filterable__, __Read-only__ When this Firewall was created.", - "example": "2018-01-01T00:01:01", - "format": "date-time", "readOnly": true, - "type": "string", - "x-akamai": { - "labels": [ - "Filterable" - ] - }, - "x-linode-cli-display": 4, - "x-linode-filterable": true + "type": "array" }, "id": { "description": "__Filterable__, __Read-only__ The Firewall's unique ID.", @@ -57604,7 +59631,569 @@ }, "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", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 5, + "x-linode-filterable": true + } + }, + "type": "object", + "x-akamai": { + "file-path": "schemas/firewall.yaml" + } + }, + "type": "array" + }, + "page": { + "description": "__Read-only__ The current [page](https://techdocs.akamai.com/linode-api/reference/pagination).", + "example": 1, + "readOnly": true, + "type": "integer" + }, + "pages": { + "description": "__Read-only__ The total number of [pages](https://techdocs.akamai.com/linode-api/reference/pagination).", + "example": 1, + "readOnly": true, + "type": "integer" + }, + "results": { + "description": "__Read-only__ The total number of results.", + "example": 1, + "readOnly": true, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "file-path": "schemas/added-get-linode-firewalls-200.yaml" + } + }, + "x-example": { + "x-ref": "../examples/get-linode-firewalls-200.json" + } + } + }, + "description": "Returns a paginated list of Firewalls assigned to this Linode." + }, + "default": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "properties": { + "errors": { + "items": { + "additionalProperties": false, + "description": "An object for describing a single error that occurred during the processing of a request.", + "properties": { + "field": { + "description": "The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.", + "example": "fieldname", + "type": "string" + }, + "reason": { + "description": "What happened to cause this error. In most cases, this can be fixed immediately by changing the data you sent in the request, but in some cases you will be instructed to [Open a support ticket](https://techdocs.akamai.com/linode-api/reference/post-ticket) or perform some other action before you can complete the request successfully.", + "example": "fieldname must be a valid value", + "type": "string" + } + }, + "type": "object", + "x-akamai": { + "file-path": "schemas/error-object.yaml" + } + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "See [Errors](https://techdocs.akamai.com/linode-api/reference/errors) for the range of possible error response codes." + } + }, + "security": [ + { + "personalAccessToken": [] + }, + { + "oauth": [ + "linodes:read_only" + ] + } + ], + "summary": "List a Linode's firewalls", + "tags": [ + "Firewalls" + ], + "x-akamai": { + "tabs": [ + { + "syntax": "linode-cli linodes firewalls-list 123", + "title": "CLI", + "url": "https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli" + }, + { + "syntax": "linodes:read_only", + "title": "OAuth scopes", + "url": "https://techdocs.akamai.com/linode-api/reference/get-started#oauth" + } + ] + }, + "x-linode-cli-action": "firewalls-list", + "x-linode-grant": "read_only" + }, + "put": { + "description": "Replace the current list of assigned firewalls with a new list, or provide an empty list to remove all firewalls from this Linode.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli linodes firewalls-update 123 \\\n --firewall_ids '[1234]'\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/put-linode-firewalls" + }, + "operationId": "put-linode-firewalls", + "parameters": [ + { + "description": "The page of a collection to return.", + "example": "{{page}}", + "in": "query", + "name": "page", + "required": false, + "schema": { + "default": 1, + "example": 6, + "minimum": 1, + "type": "integer" + }, + "x-akamai": { + "file-path": "parameters/page-offset.yaml" + } + }, + { + "description": "The number of items to return per page.", + "example": "{{page_size}}", + "in": "query", + "name": "page_size", + "schema": { + "default": 100, + "example": 50, + "maximum": 500, + "minimum": 25, + "type": "integer" + }, + "x-akamai": { + "file-path": "parameters/page-size.yaml" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "description": "Replace or remove firewalls IDs assigned to a Linode or NodeBalancer.", + "properties": { + "firewall_ids": { + "description": "A complete list of firewall IDs to assign to this Linode or NodeBalancer. This operation replaces any existing assignments. To remove all firewalls, pass an empty list, `[]`.", + "example": [ + 1, + 2 + ], + "items": { + "type": "integer" + }, + "minItems": 0, + "type": "array" + } + }, + "required": [ + "firewall_ids" + ], + "type": "object", + "x-akamai": { + "file-path": "schemas/firewall-ids-request.yaml" + } + }, + "x-example": { + "x-ref": "../examples/get-linode-firewalls-200.json" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "properties": { + "data": { + "items": { + "additionalProperties": false, + "description": "A resource that controls incoming and outgoing network traffic to a compute service. Only one enabled Firewall can be attached to a particular service at any given time. [Create a firewall device](https://techdocs.akamai.com/linode-api/reference/post-firewall-device) to assign a Firewall to a service. Currently, Firewalls can assigned to Linode compute instances and NodeBalancers.", + "properties": { + "created": { + "description": "__Filterable__, __Read-only__ When this Firewall was created.", + "example": "2025-01-01T00:01:01", + "format": "date-time", + "readOnly": true, + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "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, + "readOnly": true, + "type": "integer", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 1, + "x-linode-filterable": true + }, + "label": { + "description": "__Filterable__ The Firewall's label, for display purposes only.\n\nFirewall labels have the following constraints:\n\n - Must begin and end with an alphanumeric character.\n - May only consist of alphanumeric characters, hyphens (`-`), underscores (`_`) or periods (`.`).\n - Cannot have two hyphens (`--`), underscores (`__`) or periods (`..`) in a row.\n - Must be between 3 and 32 characters.\n - Must be unique.", + "example": "firewall123", + "maxLength": 32, + "minLength": 3, + "pattern": "^[a-zA-Z]((?!--|__|\\.\\.)[a-zA-Z0-9-_.])+$", + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 2, + "x-linode-filterable": true + }, + "rules": { + "additionalProperties": false, + "description": "The inbound and outbound access rules to apply to the Firewall.\n\nA Firewall may have up to 25 rules across its inbound and outbound rulesets.\n\nMultiple rules are applied in order. If two rules conflict, the first rule takes precedence. For example, if the first rule accepts inbound traffic from an address, and the second rule drops inbound traffic the same address, the first rule applies and inbound traffic from that address is accepted.", + "properties": { + "fingerprint": { + "description": "__Read-only__ The fingerprint is a 32-bit hash. It represents the firewall rules as an 8 character hex string. You can use `fingerprint` to compare rule versions.", + "example": "997dd135", + "readOnly": true, + "type": "string" + }, + "inbound": { + "description": "The inbound rules for the firewall, as a JSON array.", + "items": { + "additionalProperties": false, + "description": "One of a Firewall's inbound or outbound access rules. The `ports` property can be used to allow traffic on a comma-separated list of different ports.", + "properties": { + "action": { + "description": "Controls whether traffic is accepted or dropped by this rule. Overrides the Firewall's `inbound_policy` if this is an inbound rule, or the `outbound_policy` if this is an outbound rule.", + "enum": [ + "ACCEPT", + "DROP" + ], + "example": "ACCEPT", + "type": "string" + }, + "addresses": { + "additionalProperties": false, + "description": "The IPv4 or IPv6 addresses affected by this rule. A rule can have up to 255 total addresses or networks listed across its `ipv4` and `ipv6` arrays. A network and a single IP are treated as equivalent when accounting for this limit.\n\nMust contain `ipv4`, `ipv6`, or both.", + "properties": { + "ipv4": { + "description": "A list of IPv4 addresses or networks. Addresses must be in IP/mask format. Must not be an empty list.\n\nIf `0.0.0.0/0` is included in this list, all IPv4 addresses are affected by this rule.", + "example": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "ipv6": { + "description": "A list of IPv6 addresses or networks. Addresses must be in IP/mask format and must not include zone_id notation as described in [RFC 4007](https://www.rfc-editor.org/rfc/rfc4007). Must not be an empty list.\n\nIf `::/0` is included in this list, all IPv6 addresses are affected by this rule.", + "example": [ + "2001:DB8::/128" + ], + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "description": { + "description": "Used to describe this rule. For display purposes only.", + "example": "An example firewall rule description.", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "label": { + "description": "Used to identify this rule. For display purposes only.", + "example": "firewallrule123", + "maxLength": 32, + "minLength": 3, + "type": "string" + }, + "ports": { + "description": "A string representing the port or ports affected by this rule:\n\n- The string may be a single port, a range of ports, or a comma-separated list of single ports and port ranges. A space is permitted following each comma.\n- A range of ports is inclusive of the start and end values for the range. The end value of the range must be greater than the start value.\n- Ports must be within 1 and 65535, and may not contain any leading zeroes. For example, port `080` is not allowed.\n- The ports string can have up to 15 _pieces_, where a single port is treated as one piece, and a port range is treated as two pieces. For example, the string \"22-24, 80, 443\" has four pieces.\n- If no ports are configured, all ports are affected.\n- Only allowed for the TCP and UDP protocols. Ports are not allowed for the ICMP and IPENCAP protocols.", + "example": "22-24, 80, 443", + "nullable": true, + "type": "string" + }, + "protocol": { + "description": "The type of network traffic affected by this rule.", + "enum": [ + "TCP", + "UDP", + "ICMP", + "IPENCAP" + ], + "example": "TCP", + "type": "string" + } + }, + "type": "object", + "x-akamai": { + "file-path": "schemas/firewall-rule-config.yaml" + } + }, + "type": "array", + "x-linode-cli-format": "json" + }, + "inbound_policy": { + "description": "The default behavior for inbound traffic. This setting can be overridden by [updating](https://techdocs.akamai.com/linode-api/reference/put-firewall-rules) the `inbound.action` property of the Firewall Rule.", + "enum": [ + "ACCEPT", + "DROP" + ], + "example": "DROP", + "type": "string" + }, + "outbound": { + "description": "The outbound rules for the firewall, as a JSON array.", + "items": { + "additionalProperties": false, + "description": "One of a Firewall's inbound or outbound access rules. The `ports` property can be used to allow traffic on a comma-separated list of different ports.", + "properties": { + "action": { + "description": "Controls whether traffic is accepted or dropped by this rule. Overrides the Firewall's `inbound_policy` if this is an inbound rule, or the `outbound_policy` if this is an outbound rule.", + "enum": [ + "ACCEPT", + "DROP" + ], + "example": "ACCEPT", + "type": "string" + }, + "addresses": { + "additionalProperties": false, + "description": "The IPv4 or IPv6 addresses affected by this rule. A rule can have up to 255 total addresses or networks listed across its `ipv4` and `ipv6` arrays. A network and a single IP are treated as equivalent when accounting for this limit.\n\nMust contain `ipv4`, `ipv6`, or both.", + "properties": { + "ipv4": { + "description": "A list of IPv4 addresses or networks. Addresses must be in IP/mask format. Must not be an empty list.\n\nIf `0.0.0.0/0` is included in this list, all IPv4 addresses are affected by this rule.", + "example": [ + "192.0.2.0/24", + "198.51.100.2/32" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "ipv6": { + "description": "A list of IPv6 addresses or networks. Addresses must be in IP/mask format and must not include zone_id notation as described in [RFC 4007](https://www.rfc-editor.org/rfc/rfc4007). Must not be an empty list.\n\nIf `::/0` is included in this list, all IPv6 addresses are affected by this rule.", + "example": [ + "2001:DB8::/128" + ], + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "description": { + "description": "Used to describe this rule. For display purposes only.", + "example": "An example firewall rule description.", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "label": { + "description": "Used to identify this rule. For display purposes only.", + "example": "firewallrule123", + "maxLength": 32, + "minLength": 3, + "type": "string" + }, + "ports": { + "description": "A string representing the port or ports affected by this rule:\n\n- The string may be a single port, a range of ports, or a comma-separated list of single ports and port ranges. A space is permitted following each comma.\n- A range of ports is inclusive of the start and end values for the range. The end value of the range must be greater than the start value.\n- Ports must be within 1 and 65535, and may not contain any leading zeroes. For example, port `080` is not allowed.\n- The ports string can have up to 15 _pieces_, where a single port is treated as one piece, and a port range is treated as two pieces. For example, the string \"22-24, 80, 443\" has four pieces.\n- If no ports are configured, all ports are affected.\n- Only allowed for the TCP and UDP protocols. Ports are not allowed for the ICMP and IPENCAP protocols.", + "example": "22-24, 80, 443", + "nullable": true, + "type": "string" + }, + "protocol": { + "description": "The type of network traffic affected by this rule.", + "enum": [ + "TCP", + "UDP", + "ICMP", + "IPENCAP" + ], + "example": "TCP", + "type": "string" + } + }, + "type": "object", + "x-akamai": { + "file-path": "schemas/firewall-rule-config.yaml" + } + }, + "type": "array", + "x-linode-cli-format": "json" + }, + "outbound_policy": { + "description": "The default behavior for outbound traffic. This setting can be overridden by [updating](https://techdocs.akamai.com/linode-api/reference/put-firewall-rules) the `outbound.action` property of the Firewall Rule.", + "enum": [ + "ACCEPT", + "DROP" + ], + "example": "DROP", + "type": "string" + }, + "version": { + "description": "__Read-only__ The firewall's rule version. The first version is `1`. The version number is incremented when the firewall's rules change.", + "example": 1, + "readOnly": true, + "type": "integer" + } + }, + "type": "object" + }, + "status": { + "description": "__Read-only__ The status of this Firewall.\n\n - When a Firewall is first created its status is `enabled`.\n - Run the [Update a firewall](https://techdocs.akamai.com/linode-api/reference/put-firewall) operation to set a Firewall's status to `enabled` or `disabled`.\n - Run the [Delete a firewall](https://techdocs.akamai.com/linode-api/reference/delete-firewall) operation to delete a Firewall.", + "enum": [ + "enabled", + "disabled", + "deleted" + ], + "example": "enabled", + "readOnly": true, + "type": "string", + "x-linode-cli-display": 3 + }, + "tags": { + "description": "__Filterable__ An array of tags applied to this object. Tags are for organizational purposes only.", + "example": [ + "example tag", + "another example" + ], + "items": { + "type": "string" + }, + "type": "array", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true + }, + "updated": { + "description": "__Filterable__, __Read-only__ When this Firewall was last updated.", + "example": "2025-01-02T00:01:01", "format": "date-time", "readOnly": true, "type": "string", @@ -58005,12 +60594,8 @@ "items": { "properties": { "range": { - "default": null, "description": "Your assigned IPv6 range in CIDR notation (`2001:0db8::1/64`) or prefix (`/64`).\n- The prefix of `/64` or `/56` block of IPv6 addresses.\n- If provided in CIDR notation, the prefix must be within the assigned ranges for the Linode.", - "example": [ - "2001:0a0a::1/64", - "/64" - ], + "example": "2001:0a0a::1/64", "type": "string" } }, @@ -58170,7 +60755,6 @@ "additionalProperties": false, "properties": { "range": { - "default": null, "description": "CIDR notation of a range (`1.2.3.4/24`) or prefix only (`/24`).\n- When only the prefix is provided, then an available range of that size within the VPC's subnet is automatically selected.\n- If specified as CIDR notation, it must belong to the VPC subnet. All addresses in the range must not be taken by any other Linode or interfaces in the VPC subnet and must not include any of the first two or last two addresses of the VPC subnet.", "example": [ "192.168.100.100/28", @@ -58179,12 +60763,11 @@ "10.11.12.0/24", "auto" ], - "nullable": true, "type": "string" } }, "required": [ - "address" + "range" ], "type": "object" }, @@ -58257,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 } ], @@ -58884,558 +61467,583 @@ "ex-public": { "summary": "Public interface", "value": { - "created": "2025-01-01T00:01:01", - "default_route": { - "ipv4": true, - "ipv6": true - }, - "id": 1234, - "mac_address": "22:00:AB:CD:EF:01", - "public": { - "ipv4": { - "addresses": [ - { - "address": "172.30.0.50", - "primary": true - } - ], - "shared": [ - { - "address": "172.30.0.51", - "linode_id": 12345 - } - ] - }, - "ipv6": { - "ranges": [ - { - "range": "2600:3c09:e001:59::/64", - "route_target": "2600:3c09::ff:feab:cdef" + "interfaces": [ + { + "created": "2025-01-01T00:01:01", + "default_route": { + "ipv4": true, + "ipv6": true + }, + "id": 1234, + "mac_address": "22:00:AB:CD:EF:01", + "public": { + "ipv4": { + "addresses": [ + { + "address": "172.30.0.50", + "primary": true + } + ], + "shared": [ + { + "address": "172.30.0.51", + "linode_id": 12345 + } + ] }, - { - "range": "2600:3c09:e001:5a::/64", - "route_target": "2600:3c09::ff:feab:cdef" - } - ], - "shared": [ - { - "range": "2600:3c09:e001:2a::/64", - "route_target": null - } - ], - "slaac": [ - { - "address": "2600:3c09::ff:feab:cdef", - "prefix": 64 + "ipv6": { + "ranges": [ + { + "range": "2001:DB8::/64", + "route_target": "2600:3c09::ff:feab:cdef" + }, + { + "range": "2001:DB8::/64", + "route_target": "2600:3c09::ff:feab:cdef" + } + ], + "shared": [ + { + "range": "2001:DB8::/64", + "route_target": null + } + ], + "slaac": [ + { + "address": "2600:3c09::ff:feab:cdef", + "prefix": 64 + } + ] } - ] + }, + "updated": "2025-01-01T00:01:01", + "version": 1, + "vlan": null, + "vpc": null } - }, - "updated": "2025-01-01T00:01:01", - "version": 1, - "vlan": null, - "vpc": null + ] } }, "ex-vlan": { "summary": "VLAN interface", "value": { - "created": "2025-01-01T00:01:01", - "default_route": {}, - "id": 1234, - "mac_address": "22:00:AB:CD:EF:01", - "public": null, - "updated": "2025-01-01T00:01:01", - "version": 1, - "vlan": { - "ipam_address": "10.0.0.1/24", - "vlan_label": "my-vlan" - }, - "vpc": null + "interfaces": [ + { + "created": "2025-01-01T00:01:01", + "default_route": {}, + "id": 1234, + "mac_address": "22:00:AB:CD:EF:01", + "public": null, + "updated": "2025-01-01T00:01:01", + "version": 1, + "vlan": { + "ipam_address": "10.0.0.1/24", + "vlan_label": "my-vlan" + }, + "vpc": null + } + ] } }, "ex-vpc": { "summary": "VPC interface", "value": { - "created": "2025-01-01T00:01:01", - "default_route": { - "ipv4": true - }, - "id": 1234, - "mac_address": "22:00:AB:CD:EF:01", - "public": null, - "updated": "2025-01-01T00:02:01", - "version": 1, - "vlan": null, - "vpc": { - "ipv4": { - "addresses": [ - { - "address": "192.168.22.3", - "primary": true - } - ], - "ranges": [ - { - "range": "192.168.22.16/28" + "interfaces": [ + { + "created": "2025-01-01T00:01:01", + "default_route": { + "ipv4": true + }, + "id": 1234, + "mac_address": "22:00:AB:CD:EF:01", + "public": null, + "updated": "2025-01-01T00:02:01", + "version": 1, + "vlan": null, + "vpc": { + "ipv4": { + "addresses": [ + { + "address": "192.168.22.3", + "primary": true + } + ], + "ranges": [ + { + "range": "192.168.22.16/28" + }, + { + "range": "192.168.22.32/28" + } + ] }, - { - "range": "192.168.22.32/28" - } - ] - }, - "subnet_id": 1234, - "vpc_id": 1234 - } + "subnet_id": 1234, + "vpc_id": 1234 + } + } + ] } } }, "schema": { - "description": "One of the following interface types: VPC, public, or VLAN.", - "oneOf": [ - { - "additionalProperties": false, - "description": "A public interface configuration defines the properties and settings for a specific public interface in the Linode network.", - "properties": { - "created": { - "description": "When the interface was created.", - "example": "2024-01-01T00:01:01", - "format": "date-time", - "type": "string", - "x-linode-cli-display": 3 - }, - "default_route": { - "additionalProperties": false, - "description": "Indicates if the interface is used as a default route.", - "nullable": true, - "properties": { - "ipv4": { - "default": false, - "description": "Indicates if the interface is used for the IPv4 default route. Only one interface per Linode can have the IPv4 default route.", - "example": true, - "type": "boolean", - "x-linode-cli-display": 5 - }, - "ipv6": { - "default": false, - "description": "Indicates if the interface is used for the IPv6 default route. Only one interface per Linode can have the IPv6 default route.", - "example": true, - "type": "boolean", - "x-linode-cli-display": 6 - } - }, - "type": "object" - }, - "id": { - "description": "__Read-only__ The unique ID for this interface. For `dry_run` [upgrades](https://techdocs.akamai.com/linode-api/reference/post-upgrade-linode-interfaces), a unique `id` is not generated for the interface and its value is set to 0.", - "example": 1234, - "readOnly": true, - "type": "integer", - "x-linode-cli-display": 1 - }, - "mac_address": { - "description": "A 48-bit MAC address used to identify the Linode\u2019s interface. A public interface's `mac_address` does not change, even if the public interface is deleted and then recreated.", - "example": "22:00:AB:CD:EF:01", - "maxLength": 64, - "minLength": 1, - "pattern": "[a-zA-Z0-9-]+", - "type": "string", - "x-linode-cli-display": 2 - }, - "public": { - "additionalProperties": false, - "description": "Public interface type.", - "properties": { - "ipv4": { - "additionalProperties": false, - "description": "The interface's public IPv4 `addresses`.", - "properties": { - "addresses": { - "description": "The public IPv4 addresses and primary settings for this public interface.", - "items": { - "additionalProperties": false, - "properties": { - "address": { - "description": "The public IPv4 address assigned to this interface.", - "example": "172.232.100.100", - "type": "string", - "x-linode-cli-display": 8 - }, - "primary": { - "description": "Indicates if the public IPv4 address serves as the source address for traffic routing within the Linode and other corresponding network interfaces and services.", - "example": true, - "type": "boolean", - "x-linode-cli-display": 9 - } - }, - "type": "object" + "additionalProperties": false, + "properties": { + "interfaces": { + "description": "Any of the following interface types: VPC, public, or VLAN.", + "items": { + "additionalProperties": false, + "anyOf": [ + { + "additionalProperties": false, + "description": "A public interface configuration defines the properties and settings for a specific public interface in the Linode network.", + "properties": { + "created": { + "description": "When the interface was created.", + "example": "2024-01-01T00:01:01", + "format": "date-time", + "type": "string", + "x-linode-cli-display": 3 + }, + "default_route": { + "additionalProperties": false, + "description": "Indicates if the interface is used as a default route.", + "nullable": true, + "properties": { + "ipv4": { + "default": false, + "description": "Indicates if the interface is used for the IPv4 default route. Only one interface per Linode can have the IPv4 default route.", + "example": true, + "type": "boolean", + "x-linode-cli-display": 5 }, - "type": "array" + "ipv6": { + "default": false, + "description": "Indicates if the interface is used for the IPv6 default route. Only one interface per Linode can have the IPv6 default route.", + "example": true, + "type": "boolean", + "x-linode-cli-display": 6 + } }, - "shared": { - "description": "The IPv4 address assigned to this Linode interface, which is also shared with another Linode.", - "items": { - "additionalProperties": false, - "properties": { - "address": { - "description": "Shared IPv4 address.", - "example": "172.222.33.4", - "type": "string", - "x-linode-cli-display": 10 - }, - "linode_id": { - "description": "The ID of the Linode this address currently belongs to. For IPv4 addresses, by default this is the Linode this address was assigned when created.", - "example": 12345, - "type": "string", - "x-linode-cli-display": 11 - } - }, - "type": "object" - }, - "type": "array" - } + "type": "object" }, - "type": "object" - }, - "ipv6": { - "additionalProperties": false, - "description": "The interface's public IPv6 configuration.", - "properties": { - "ranges": { - "description": "List of IPv6 ranges assigned to this interface.", - "items": { + "id": { + "description": "__Read-only__ The unique ID for this interface. For `dry_run` [upgrades](https://techdocs.akamai.com/linode-api/reference/post-upgrade-linode-interfaces), a unique `id` is not generated for the interface and its value is set to 0.", + "example": 1234, + "readOnly": true, + "type": "integer", + "x-linode-cli-display": 1 + }, + "mac_address": { + "description": "A 48-bit MAC address used to identify the Linode\u2019s interface. A public interface's `mac_address` does not change, even if the public interface is deleted and then recreated.", + "example": "22:00:AB:CD:EF:01", + "maxLength": 64, + "minLength": 1, + "pattern": "[a-zA-Z0-9-]+", + "type": "string", + "x-linode-cli-display": 2 + }, + "public": { + "additionalProperties": false, + "description": "Public interface type.", + "properties": { + "ipv4": { "additionalProperties": false, + "description": "The interface's public IPv4 `addresses`.", "properties": { - "range": { - "description": "IPv6 range in CIDR notation (`2600:0db8::1/64`) or prefix-only (`/64`).", - "example": "2600:3c09:e001:59::/64", - "type": "string", - "x-linode-cli-display": 16 + "addresses": { + "description": "The public IPv4 addresses and primary settings for this public interface.", + "items": { + "additionalProperties": false, + "properties": { + "address": { + "description": "The public IPv4 address assigned to this interface.", + "example": "172.232.100.100", + "type": "string", + "x-linode-cli-display": 8 + }, + "primary": { + "description": "Indicates if the public IPv4 address serves as the source address for traffic routing within the Linode and other corresponding network interfaces and services.", + "example": true, + "type": "boolean", + "x-linode-cli-display": 9 + } + }, + "type": "object" + }, + "type": "array" }, - "route_target": { - "description": "The public IPv6 address that the `range` is routed to.", - "example": "2600:3c09::ff:feab:cdef", - "type": "string", - "x-linode-cli-display": 17 + "shared": { + "description": "The IPv4 address assigned to this Linode interface, which is also shared with another Linode.", + "items": { + "additionalProperties": false, + "properties": { + "address": { + "description": "Shared IPv4 address.", + "example": "172.222.33.4", + "type": "string", + "x-linode-cli-display": 10 + }, + "linode_id": { + "description": "The ID of the Linode this address currently belongs to. For IPv4 addresses, by default this is the Linode this address was assigned when created.", + "example": 12345, + "type": "string", + "x-linode-cli-display": 11 + } + }, + "type": "object" + }, + "type": "array" } }, "type": "object" }, - "type": "array" - }, - "shared": { - "description": "The IPv6 address assigned to this Linode interface, which is also shared with another Linode.", - "items": { + "ipv6": { "additionalProperties": false, + "description": "The interface's public IPv6 configuration.", "properties": { - "range": { - "description": "The IPv6 address range.", - "example": "2600:3c09:e001:2a::/64", - "type": "string", - "x-linode-cli-display": 14 + "ranges": { + "description": "List of IPv6 ranges assigned to this interface.", + "items": { + "additionalProperties": false, + "properties": { + "range": { + "description": "IPv6 range in CIDR notation (`2600:0db8::1/64`) or prefix-only (`/64`).", + "example": "2600:3c09:e001:59::/64", + "type": "string", + "x-linode-cli-display": 16 + }, + "route_target": { + "description": "The public IPv6 address that the `range` is routed to.", + "example": "2600:3c09::ff:feab:cdef", + "type": "string", + "x-linode-cli-display": 17 + } + }, + "type": "object" + }, + "type": "array" }, - "route_target": { - "description": "The public IPv6 address that the `range` is routed to.", - "example": null, - "type": "string", - "x-linode-cli-display": 15 - } - }, - "type": "object" - }, - "type": "array" - }, - "slaac": { - "description": "The public `slaac` and subnet prefix settings for this public interface that is used to communicate over the public internet, and with other services in the same data center.", - "items": { - "additionalProperties": false, - "properties": { - "address": { - "description": "Public IPv6 addresses assigned to this interface.", - "example": "2600:3c09::ff:feab:cdef", - "type": "string", - "x-linode-cli-display": 12 + "shared": { + "description": "The IPv6 address assigned to this Linode interface, which is also shared with another Linode.", + "items": { + "additionalProperties": false, + "properties": { + "range": { + "description": "The IPv6 address range.", + "example": "2600:3c09:e001:2a::/64", + "type": "string", + "x-linode-cli-display": 14 + }, + "route_target": { + "description": "The public IPv6 address that the `range` is routed to.", + "example": null, + "type": "string", + "x-linode-cli-display": 15 + } + }, + "type": "object" + }, + "type": "array" }, - "prefix": { - "description": "The prefix length advertised for SLAAC to use. Only the specific (`/128`) EUI-64 address derived from the interface's MAC address is supported. To ensure the MAC-based EUI-64 address is used, privacy addressing needs to be disabled. Network Helper automatically configures the MAC-derived EUI-64 address. If you disable Network Helper or use an unsupported operating system, follow the specific instructions for your OS.", - "example": 64, - "type": "integer", - "x-linode-cli-display": 13 + "slaac": { + "description": "The public `slaac` and subnet prefix settings for this public interface that is used to communicate over the public internet, and with other services in the same data center.", + "items": { + "additionalProperties": false, + "properties": { + "address": { + "description": "Public IPv6 addresses assigned to this interface.", + "example": "2600:3c09::ff:feab:cdef", + "type": "string", + "x-linode-cli-display": 12 + }, + "prefix": { + "description": "The prefix length advertised for SLAAC to use. Only the specific (`/128`) EUI-64 address derived from the interface's MAC address is supported. To ensure the MAC-based EUI-64 address is used, privacy addressing needs to be disabled. Network Helper automatically configures the MAC-derived EUI-64 address. If you disable Network Helper or use an unsupported operating system, follow the specific instructions for your OS.", + "example": 64, + "type": "integer", + "x-linode-cli-display": 13 + } + }, + "type": "object" + }, + "type": "array" } }, "type": "object" - }, - "type": "array" - } + } + }, + "type": "object" }, - "type": "object" - } - }, - "type": "object" - }, - "updated": { - "description": "When the interface was last updated.", - "example": "2024-01-01T00:01:01", - "format": "date-time", - "type": "string", - "x-linode-cli-display": 4 - }, - "version": { - "description": "Interface version number that increments when the interface updates.", - "example": 1, - "type": "integer", - "x-linode-cli-display": 7 - }, - "vlan": { - "description": "The value is `null` if this is not a VLAN interface.", - "example": null, - "nullable": true, - "type": "object" - }, - "vpc": { - "additionalProperties": false, - "description": "The value is `null` if this is not a VPC interface.", - "example": null, - "nullable": true, - "type": "object" - } - }, - "title": "Public interface", - "type": "object", - "x-akamai": { - "file-path": "schemas/linode-interface-public.yaml" - } - }, - { - "additionalProperties": false, - "description": "A VLAN interface configuration defines the properties and settings for a specific VLAN interface in the Linode network.", - "properties": { - "created": { - "description": "When the interface was created.", - "example": "2024-01-01T00:01:01", - "format": "date-time", - "type": "string", - "x-linode-cli-display": 3 - }, - "id": { - "description": "__Read-only__ The unique ID for this interface. For `dry_run` [upgrades](https://techdocs.akamai.com/linode-api/reference/post-upgrade-linode-interfaces), a unique `id` is not generated for the interface and its value is set to 0.", - "example": 1234, - "readOnly": true, - "type": "integer", - "x-linode-cli-display": 1 - }, - "mac_address": { - "description": "A 48-bit MAC address used to identify the Linode\u2019s interface. The `mac_address` of an interface remains constant and does not change.", - "example": "22:00:AB:CD:EF:01", - "maxLength": 64, - "minLength": 1, - "pattern": "[a-zA-Z0-9-]+", - "type": "string", - "x-linode-cli-display": 2 - }, - "public": { - "description": "The value is `null` if this isn't a public interface.", - "example": null, - "nullable": true, - "type": "object" - }, - "updated": { - "description": "When the interface was last updated.", - "example": "2024-01-01T00:01:01", - "format": "date-time", - "type": "string", - "x-linode-cli-display": 4 - }, - "version": { - "description": "Interface version number that is incremented when the interface is updated.", - "example": 1, - "type": "integer", - "x-linode-cli-display": 5 - }, - "vlan": { - "additionalProperties": false, - "description": "VLAN interface type.", - "properties": { - "ipam_address": { - "description": "This VLAN interface's private IPv4 address in classless inter-domain routing (CIDR) notation.", - "example": "10.0.0.1/24", - "format": "ip/netmask", - "nullable": true, - "type": "string", - "x-linode-cli-display": 7 + "updated": { + "description": "When the interface was last updated.", + "example": "2024-01-01T00:01:01", + "format": "date-time", + "type": "string", + "x-linode-cli-display": 4 + }, + "version": { + "description": "Interface version number that increments when the interface updates.", + "example": 1, + "type": "integer", + "x-linode-cli-display": 7 + }, + "vlan": { + "description": "The value is `null` if this is not a VLAN interface.", + "example": null, + "nullable": true, + "type": "object" + }, + "vpc": { + "additionalProperties": false, + "description": "The value is `null` if this is not a VPC interface.", + "example": null, + "nullable": true, + "type": "object" + } }, - "vlan_label": { - "description": "The VLAN's label. VLAN interfaces on the same Linode must have a unique `vlan_label`.", - "example": "my-vlan", - "type": "string", - "x-linode-cli-display": 6 + "title": "Public interface", + "type": "object", + "x-akamai": { + "file-path": "schemas/linode-interface-public.yaml" } }, - "type": "object" - }, - "vpc": { - "description": "The value is `null` if this isn't a VPC interface.", - "example": null, - "nullable": true, - "type": "object" - } - }, - "title": "VLAN interface", - "type": "object", - "x-akamai": { - "file-path": "schemas/linode-interface-vlan.yaml" - } - }, - { - "additionalProperties": false, - "description": "A VPC interface configuration defines settings for a specific VPC interface in the Linode network.", - "properties": { - "created": { - "description": "When the interface was created.", - "example": "2025-01-01 00:01:01", - "format": "date-time", - "type": "string", - "x-linode-cli-display": 3 - }, - "default_route": { - "additionalProperties": false, - "description": "Indicates if the interface serves as a default route.", - "properties": { - "ipv4": { - "default": false, - "description": "Indicates if the interface serves as the IPv4 default route. Only one interface per Linode can have the IPv4 default route.", - "example": true, - "type": "boolean", - "x-linode-cli-display": 5 + { + "additionalProperties": false, + "description": "A VLAN interface configuration defines the properties and settings for a specific VLAN interface in the Linode network.", + "properties": { + "created": { + "description": "When the interface was created.", + "example": "2024-01-01T00:01:01", + "format": "date-time", + "type": "string", + "x-linode-cli-display": 3 + }, + "id": { + "description": "__Read-only__ The unique ID for this interface. For `dry_run` [upgrades](https://techdocs.akamai.com/linode-api/reference/post-upgrade-linode-interfaces), a unique `id` is not generated for the interface and its value is set to 0.", + "example": 1234, + "readOnly": true, + "type": "integer", + "x-linode-cli-display": 1 + }, + "mac_address": { + "description": "A 48-bit MAC address used to identify the Linode\u2019s interface. The `mac_address` of an interface remains constant and does not change.", + "example": "22:00:AB:CD:EF:01", + "maxLength": 64, + "minLength": 1, + "pattern": "[a-zA-Z0-9-]+", + "type": "string", + "x-linode-cli-display": 2 + }, + "public": { + "description": "The value is `null` if this isn't a public interface.", + "example": null, + "nullable": true, + "type": "object" + }, + "updated": { + "description": "When the interface was last updated.", + "example": "2024-01-01T00:01:01", + "format": "date-time", + "type": "string", + "x-linode-cli-display": 4 + }, + "version": { + "description": "Interface version number that is incremented when the interface is updated.", + "example": 1, + "type": "integer", + "x-linode-cli-display": 5 + }, + "vlan": { + "additionalProperties": false, + "description": "VLAN interface type.", + "properties": { + "ipam_address": { + "description": "This VLAN interface's private IPv4 address in classless inter-domain routing (CIDR) notation.", + "example": "10.0.0.1/24", + "format": "ip/netmask", + "nullable": true, + "type": "string", + "x-linode-cli-display": 7 + }, + "vlan_label": { + "description": "The VLAN's label. VLAN interfaces on the same Linode must have a unique `vlan_label`.", + "example": "my-vlan", + "type": "string", + "x-linode-cli-display": 6 + } + }, + "type": "object" + }, + "vpc": { + "description": "The value is `null` if this isn't a VPC interface.", + "example": null, + "nullable": true, + "type": "object" + } + }, + "title": "VLAN interface", + "type": "object", + "x-akamai": { + "file-path": "schemas/linode-interface-vlan.yaml" } }, - "type": "object" - }, - "id": { - "description": "__Read-only__ The unique ID for this interface. For `dry_run` [upgrades](https://techdocs.akamai.com/linode-api/reference/post-upgrade-linode-interfaces), a unique `id` is not generated for the interface and its value is set to 0.", - "example": 1234, - "readOnly": true, - "type": "integer", - "x-linode-cli-display": 1 - }, - "mac_address": { - "description": "A 48-bit MAC address used to identify the Linode\u2019s interface. The `mac_address` of an interface remains constant and does not change.", - "example": "22:00:AB:CD:EF:01", - "maxLength": 64, - "minLength": 1, - "pattern": "[a-zA-Z0-9-]+", - "type": "string", - "x-linode-cli-display": 2 - }, - "public": { - "additionalProperties": false, - "description": "The value is `null` if this is not a public interface.", - "example": null, - "nullable": true, - "type": "object" - }, - "updated": { - "description": "When the interface last updated.", - "example": "2025-01-01 00:01:01", - "format": "date-time", - "type": "string", - "x-linode-cli-display": 4 - }, - "version": { - "description": "The version number of the interface configuration, incremented each time the interface is updated.", - "example": 1, - "type": "integer", - "x-linode-cli-display": 6 - }, - "vlan": { - "additionalProperties": false, - "description": "The value is `null` if this is not a VLAN interface.", - "example": null, - "nullable": true, - "type": "object" - }, - "vpc": { - "additionalProperties": false, - "description": "VPC interface type.", - "properties": { - "ipv4": { - "additionalProperties": false, - "description": "The interface's IPv4 `addresses` and `ranges` configuration.", - "properties": { - "addresses": { - "description": "IPv4 address settings for this VPC interface.", - "items": { + { + "additionalProperties": false, + "description": "A VPC interface configuration defines settings for a specific VPC interface in the Linode network.", + "properties": { + "created": { + "description": "When the interface was created.", + "example": "2025-01-01 00:01:01", + "format": "date-time", + "type": "string", + "x-linode-cli-display": 3 + }, + "default_route": { + "additionalProperties": false, + "description": "Indicates if the interface serves as a default route.", + "properties": { + "ipv4": { + "default": false, + "description": "Indicates if the interface serves as the IPv4 default route. Only one interface per Linode can have the IPv4 default route.", + "example": true, + "type": "boolean", + "x-linode-cli-display": 5 + } + }, + "type": "object" + }, + "id": { + "description": "__Read-only__ The unique ID for this interface. For `dry_run` [upgrades](https://techdocs.akamai.com/linode-api/reference/post-upgrade-linode-interfaces), a unique `id` is not generated for the interface and its value is set to 0.", + "example": 1234, + "readOnly": true, + "type": "integer", + "x-linode-cli-display": 1 + }, + "mac_address": { + "description": "A 48-bit MAC address used to identify the Linode\u2019s interface. The `mac_address` of an interface remains constant and does not change.", + "example": "22:00:AB:CD:EF:01", + "maxLength": 64, + "minLength": 1, + "pattern": "[a-zA-Z0-9-]+", + "type": "string", + "x-linode-cli-display": 2 + }, + "public": { + "additionalProperties": false, + "description": "The value is `null` if this is not a public interface.", + "example": null, + "nullable": true, + "type": "object" + }, + "updated": { + "description": "When the interface last updated.", + "example": "2025-01-01 00:01:01", + "format": "date-time", + "type": "string", + "x-linode-cli-display": 4 + }, + "version": { + "description": "The version number of the interface configuration, incremented each time the interface is updated.", + "example": 1, + "type": "integer", + "x-linode-cli-display": 6 + }, + "vlan": { + "additionalProperties": false, + "description": "The value is `null` if this is not a VLAN interface.", + "example": null, + "nullable": true, + "type": "object" + }, + "vpc": { + "additionalProperties": false, + "description": "VPC interface type.", + "properties": { + "ipv4": { "additionalProperties": false, + "description": "The interface's IPv4 `addresses` and `ranges` configuration.", "properties": { - "address": { - "description": "The VPC subnet IPv4 address.", - "example": "192.168.22.3", - "type": "string", - "x-linode-cli-display": 9 - }, - "nat_1_1_address": { - "description": "The 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.", - "example": null, - "nullable": true, - "type": "string", - "x-linode-cli-display": 11 + "addresses": { + "description": "IPv4 address settings for this VPC interface.", + "items": { + "additionalProperties": false, + "properties": { + "address": { + "description": "The VPC subnet IPv4 address.", + "example": "192.168.22.3", + "type": "string", + "x-linode-cli-display": 9 + }, + "nat_1_1_address": { + "description": "The 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.", + "example": null, + "nullable": true, + "type": "string", + "x-linode-cli-display": 11 + }, + "primary": { + "description": "Indicates if the IPv4 address is used to set up a source address for routes inside the Linode for the corresponding network interface.", + "example": true, + "type": "boolean", + "x-linode-cli-display": 10 + } + }, + "type": "object" + }, + "type": "array" }, - "primary": { - "description": "Indicates if the IPv4 address is used to set up a source address for routes inside the Linode for the corresponding network interface.", - "example": true, - "type": "boolean", - "x-linode-cli-display": 10 + "ranges": { + "description": "VPC IPv4 ranges.", + "items": { + "additionalProperties": false, + "properties": { + "range": { + "description": "CIDR notation of a range (`1.2.3.4/24`) or prefix only (`/24`).", + "example": "192.168.22.16/28", + "type": "string", + "x-linode-cli-display": 12 + } + }, + "type": "object" + }, + "type": "array" } }, "type": "object" }, - "type": "array" - }, - "ranges": { - "description": "VPC IPv4 ranges.", - "items": { - "additionalProperties": false, - "properties": { - "range": { - "description": "CIDR notation of a range (`1.2.3.4/24`) or prefix only (`/24`).", - "example": "192.168.22.16/28", - "type": "string", - "x-linode-cli-display": 12 - } - }, - "type": "object" + "subnet_id": { + "description": "VPC subnet's unique identifier.", + "example": 1234, + "type": "integer", + "x-linode-cli-display": 8 }, - "type": "array" - } - }, - "type": "object" - }, - "subnet_id": { - "description": "VPC subnet's unique identifier.", - "example": 1234, - "type": "integer", - "x-linode-cli-display": 8 + "vpc_id": { + "description": "VPC's unique identifier.", + "example": 1234, + "type": "integer", + "x-linode-cli-display": 7 + } + }, + "type": "object" + } }, - "vpc_id": { - "description": "VPC's unique identifier.", - "example": 1234, - "type": "integer", - "x-linode-cli-display": 7 + "title": "VPC interface", + "type": "object", + "x-akamai": { + "file-path": "schemas/linode-interface-vpc.yaml" } - }, - "type": "object" - } + } + ], + "type": "object" }, - "title": "VPC interface", - "type": "object", - "x-akamai": { - "file-path": "schemas/linode-interface-vpc.yaml" - } + "type": "array" } + }, + "required": [ + "interfaces" ], "type": "object", "x-akamai": { - "file-path": "schemas/linode-interface.yaml" + "file-path": "schemas/linode-interfaces.yaml" } }, "x-linode-cli-nested-list": "interfaces", @@ -59666,240 +62274,8 @@ "items": { "description": "__Read-only__ Eligible IDs, or an empty array if there are none.", "example": [ - 2, - 3 - ], - "readOnly": true, - "type": "integer" - }, - "type": "array", - "x-linode-cli-display": 5 - }, - "ipv6_interface_id": { - "default": null, - "description": "The public interface ID assigned as the IPv6 `default_route`. The [List Linode interface settings](https://techdocs.akamai.com/linode-api/reference/get-linode-interface-settings) operation provides eligible IPv6 interface IDs.", - "example": 1, - "nullable": true, - "type": "integer", - "x-linode-cli-display": 4 - } - }, - "type": "object" - }, - "network_helper": { - "description": "Enables the Network Helper feature. The default value is determined by the `network_helper` setting in the [account settings](https://techdocs.akamai.com/linode-api/reference/get-account-settings). [Power off the Linode](https://techdocs.akamai.com/linode-api/reference/post-shutdown-linode-instance) before disabling or enabling Network Helper.", - "example": false, - "type": "boolean", - "x-linode-cli-display": 1 - } - }, - "type": "object", - "x-akamai": { - "file-path": "schemas/linode-interface-settings.yaml" - } - }, - "x-example": { - "x-ref": "../examples/linode-interface-settings-200.json" - } - } - }, - "description": "Returns a single Linode interface settings object." - }, - "default": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "properties": { - "errors": { - "items": { - "additionalProperties": false, - "description": "An object for describing a single error that occurred during the processing of a request.", - "properties": { - "field": { - "description": "The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.", - "example": "fieldname", - "type": "string" - }, - "reason": { - "description": "What happened to cause this error. In most cases, this can be fixed immediately by changing the data you sent in the request, but in some cases you will be instructed to [Open a support ticket](https://techdocs.akamai.com/linode-api/reference/post-ticket) or perform some other action before you can complete the request successfully.", - "example": "fieldname must be a valid value", - "type": "string" - } - }, - "type": "object", - "x-akamai": { - "file-path": "schemas/error-object.yaml" - } - }, - "type": "array" - } - }, - "type": "object" - } - } - }, - "description": "See [Errors](https://techdocs.akamai.com/linode-api/reference/errors) for the range of possible error response codes." - } - }, - "security": [ - { - "personalAccessToken": [] - }, - { - "oauth": [ - "linode:read_only" - ] - } - ], - "summary": "List Linode interface settings", - "tags": [ - "Linode interfaces" - ], - "x-akamai": { - "status": "BETA", - "tabs": [ - { - "syntax": "linode-cli linodes interfaces-settings-list $linodeId", - "title": "CLI", - "url": "https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli" - }, - { - "syntax": "linodes: read_only", - "title": "OAuth scopes", - "url": "https://techdocs.akamai.com/linode-api/reference/get-started#oauth" - } - ] - }, - "x-linode-cli-action": "interfaces-settings-list", - "x-linode-grant": "read_only" - }, - "put": { - "description": "__Beta__ Updates Network Helper and default route settings on the Linode.\n\n\n<>\n\n---\n\n\n- __CLI: Public interface__.\n\n ```\n linode-cli linodes interface-settings-update $linodeId \\\n --network_helper true \\\n --default_route.ipv4_interface_id 4527 \\\n --default_route.ipv6_interface_id 4541 \\\n --default_route.ipv4_eligible_interface_ids 4527 \\\n --default_route.ipv4_eligible_interface_ids 4541 \\\n --default_route.ipv6_eligible_interface_ids 4527 \\\n --default_route.ipv6_eligible_interface_ids 4541\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __CLI: VLAN interface__.\n\n ```\n linode-cli linodes interface-settings-update $linodeId \\\n --network_helper true\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __CLI: VPC interface__.\n\n ```\n linode-cli linodes interface-settings-update $linodeId \\\n --network_helper true \\\n --default_route.ipv4_interface_id 5527 \\\n --default_route.ipv4_eligible_interface_ids 5527 \\\n --default_route.ipv4_eligible_interface_ids 5541\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/put-linode-interface-settings" - }, - "operationId": "put-linode-interface-settings", - "requestBody": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "description": "Linode interface settings.", - "properties": { - "default_route": { - "additionalProperties": false, - "description": "Interfaces used for the IPv4 `default_route` and IPv6 `default_route` when multiple interfaces are eligible for the role.", - "properties": { - "ipv4_eligible_interface_ids": { - "description": "The VPC or public interface IDs that are eligible to be the IPv4 `default_route` for this Linode. If the `ipv4_eligible_interface_ids` array is empty, this means there are no eligible interfaces eligible for the IPv4 default route role.", - "items": { - "description": "__Read-only__ Eligible IDs, or an empty array if there are none.", - "example": [ - 1, - 2 - ], - "readOnly": true, - "type": "integer", - "x-linode-cli-display": 3 - }, - "type": "array" - }, - "ipv4_interface_id": { - "default": null, - "description": "The VPC or public interface ID assigned as the IPv4 `default_route`. The [List Linode interface settings](https://techdocs.akamai.com/linode-api/reference/get-linode-interface-settings) operation provides eligible IPv4 interface IDs.", - "example": 1, - "nullable": true, - "type": "integer", - "x-linode-cli-display": 2 - }, - "ipv6_eligible_interface_ids": { - "description": "The public interface IDs that are eligible to be the IPv6 `default_route` for this Linode. If the `ipv6_eligible_interface_ids` array is empty, this means there are no eligible interfaces eligible for the IPv6 default route role.", - "items": { - "description": "__Read-only__ Eligible IDs, or an empty array if there are none.", - "example": [ - 2, - 3 - ], - "readOnly": true, - "type": "integer" - }, - "type": "array", - "x-linode-cli-display": 5 - }, - "ipv6_interface_id": { - "default": null, - "description": "The public interface ID assigned as the IPv6 `default_route`. The [List Linode interface settings](https://techdocs.akamai.com/linode-api/reference/get-linode-interface-settings) operation provides eligible IPv6 interface IDs.", - "example": 1, - "nullable": true, - "type": "integer", - "x-linode-cli-display": 4 - } - }, - "type": "object" - }, - "network_helper": { - "description": "Enables the Network Helper feature. The default value is determined by the `network_helper` setting in the [account settings](https://techdocs.akamai.com/linode-api/reference/get-account-settings). [Power off the Linode](https://techdocs.akamai.com/linode-api/reference/post-shutdown-linode-instance) before disabling or enabling Network Helper.", - "example": "{{network_helper}}", - "type": "boolean", - "x-linode-cli-display": 1 - } - }, - "type": "object", - "x-akamai": { - "file-path": "schemas/linode-interface-settings.yaml" - } - }, - "x-example": { - "x-ref": "../examples/linode-interface.json" - } - } - }, - "description": "Update Linode interface settings. Before enabling or disabling Network Helper, you need to power off the Linode.", - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "additionalProperties": false, - "description": "Linode interface settings.", - "properties": { - "default_route": { - "additionalProperties": false, - "description": "Interfaces used for the IPv4 `default_route` and IPv6 `default_route` when multiple interfaces are eligible for the role.", - "properties": { - "ipv4_eligible_interface_ids": { - "description": "The VPC or public interface IDs that are eligible to be the IPv4 `default_route` for this Linode. If the `ipv4_eligible_interface_ids` array is empty, this means there are no eligible interfaces eligible for the IPv4 default route role.", - "items": { - "description": "__Read-only__ Eligible IDs, or an empty array if there are none.", - "example": [ - 1, - 2 - ], - "readOnly": true, - "type": "integer", - "x-linode-cli-display": 3 - }, - "type": "array" - }, - "ipv4_interface_id": { - "default": null, - "description": "The VPC or public interface ID assigned as the IPv4 `default_route`. The [List Linode interface settings](https://techdocs.akamai.com/linode-api/reference/get-linode-interface-settings) operation provides eligible IPv4 interface IDs.", - "example": 1, - "nullable": true, - "type": "integer", - "x-linode-cli-display": 2 - }, - "ipv6_eligible_interface_ids": { - "description": "The public interface IDs that are eligible to be the IPv6 `default_route` for this Linode. If the `ipv6_eligible_interface_ids` array is empty, this means there are no eligible interfaces eligible for the IPv6 default route role.", - "items": { - "description": "__Read-only__ Eligible IDs, or an empty array if there are none.", - "example": [ - 2, - 3 + 4, + 5 ], "readOnly": true, "type": "integer" @@ -59910,9 +62286,241 @@ "ipv6_interface_id": { "default": null, "description": "The public interface ID assigned as the IPv6 `default_route`. The [List Linode interface settings](https://techdocs.akamai.com/linode-api/reference/get-linode-interface-settings) operation provides eligible IPv6 interface IDs.", + "example": 4, + "nullable": true, + "type": "integer", + "x-linode-cli-display": 4 + } + }, + "type": "object" + }, + "network_helper": { + "description": "Enables the Network Helper feature. The default value is determined by the `network_helper` setting in the [account settings](https://techdocs.akamai.com/linode-api/reference/get-account-settings). [Power off the Linode](https://techdocs.akamai.com/linode-api/reference/post-shutdown-linode-instance) before disabling or enabling Network Helper.", + "example": false, + "type": "boolean", + "x-linode-cli-display": 1 + } + }, + "type": "object", + "x-akamai": { + "file-path": "schemas/linode-interface-settings.yaml" + } + }, + "x-example": { + "x-ref": "../examples/linode-interface-settings-200.json" + } + } + }, + "description": "Returns a single Linode interface settings object." + }, + "default": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "properties": { + "errors": { + "items": { + "additionalProperties": false, + "description": "An object for describing a single error that occurred during the processing of a request.", + "properties": { + "field": { + "description": "The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.", + "example": "fieldname", + "type": "string" + }, + "reason": { + "description": "What happened to cause this error. In most cases, this can be fixed immediately by changing the data you sent in the request, but in some cases you will be instructed to [Open a support ticket](https://techdocs.akamai.com/linode-api/reference/post-ticket) or perform some other action before you can complete the request successfully.", + "example": "fieldname must be a valid value", + "type": "string" + } + }, + "type": "object", + "x-akamai": { + "file-path": "schemas/error-object.yaml" + } + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "See [Errors](https://techdocs.akamai.com/linode-api/reference/errors) for the range of possible error response codes." + } + }, + "security": [ + { + "personalAccessToken": [] + }, + { + "oauth": [ + "linode:read_only" + ] + } + ], + "summary": "List Linode interface settings", + "tags": [ + "Linode interfaces" + ], + "x-akamai": { + "status": "BETA", + "tabs": [ + { + "syntax": "linode-cli linodes interfaces-settings-list $linodeId", + "title": "CLI", + "url": "https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli" + }, + { + "syntax": "linodes: read_only", + "title": "OAuth scopes", + "url": "https://techdocs.akamai.com/linode-api/reference/get-started#oauth" + } + ] + }, + "x-linode-cli-action": "interfaces-settings-list", + "x-linode-grant": "read_only" + }, + "put": { + "description": "__Beta__ Updates Network Helper and default route settings on the Linode.\n\n\n<>\n\n---\n\n\n- __CLI: Public interface__.\n\n ```\n linode-cli linodes interface-settings-update $linodeId \\\n --network_helper true \\\n --default_route.ipv4_interface_id 4527 \\\n --default_route.ipv6_interface_id 4541 \\\n --default_route.ipv4_eligible_interface_ids 4527 \\\n --default_route.ipv4_eligible_interface_ids 4541 \\\n --default_route.ipv6_eligible_interface_ids 4527 \\\n --default_route.ipv6_eligible_interface_ids 4541\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __CLI: VLAN interface__.\n\n ```\n linode-cli linodes interface-settings-update $linodeId \\\n --network_helper true\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)\n\n- __CLI: VPC interface__.\n\n ```\n linode-cli linodes interface-settings-update $linodeId \\\n --network_helper true \\\n --default_route.ipv4_interface_id 5527 \\\n --default_route.ipv4_eligible_interface_ids 5527 \\\n --default_route.ipv4_eligible_interface_ids 5541\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/put-linode-interface-settings" + }, + "operationId": "put-linode-interface-settings", + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "description": "Linode interface settings.", + "properties": { + "default_route": { + "additionalProperties": false, + "description": "Interfaces used for the IPv4 `default_route` and IPv6 `default_route` when multiple interfaces are eligible for the role.", + "properties": { + "ipv4_eligible_interface_ids": { + "description": "The VPC or public interface IDs that are eligible to be the IPv4 `default_route` for this Linode. If the `ipv4_eligible_interface_ids` array is empty, this means there are no eligible interfaces eligible for the IPv4 default route role.", + "items": { + "description": "__Read-only__ Eligible IDs, or an empty array if there are none.", + "example": [ + 1, + 2 + ], + "readOnly": true, + "type": "integer", + "x-linode-cli-display": 3 + }, + "type": "array" + }, + "ipv4_interface_id": { + "default": null, + "description": "The VPC or public interface ID assigned as the IPv4 `default_route`. The [List Linode interface settings](https://techdocs.akamai.com/linode-api/reference/get-linode-interface-settings) operation provides eligible IPv4 interface IDs.", + "example": 1, + "nullable": true, + "type": "integer", + "x-linode-cli-display": 2 + }, + "ipv6_eligible_interface_ids": { + "description": "The public interface IDs that are eligible to be the IPv6 `default_route` for this Linode. If the `ipv6_eligible_interface_ids` array is empty, this means there are no eligible interfaces eligible for the IPv6 default route role.", + "items": { + "description": "__Read-only__ Eligible IDs, or an empty array if there are none.", + "example": [ + 4, + 5 + ], + "readOnly": true, + "type": "integer" + }, + "type": "array", + "x-linode-cli-display": 5 + }, + "ipv6_interface_id": { + "default": null, + "description": "The public interface ID assigned as the IPv6 `default_route`. The [List Linode interface settings](https://techdocs.akamai.com/linode-api/reference/get-linode-interface-settings) operation provides eligible IPv6 interface IDs.", + "example": 4, + "nullable": true, + "type": "integer", + "x-linode-cli-display": 4 + } + }, + "type": "object" + }, + "network_helper": { + "description": "Enables the Network Helper feature. The default value is determined by the `network_helper` setting in the [account settings](https://techdocs.akamai.com/linode-api/reference/get-account-settings). [Power off the Linode](https://techdocs.akamai.com/linode-api/reference/post-shutdown-linode-instance) before disabling or enabling Network Helper.", + "example": "{{network_helper}}", + "type": "boolean", + "x-linode-cli-display": 1 + } + }, + "type": "object", + "x-akamai": { + "file-path": "schemas/linode-interface-settings.yaml" + } + }, + "x-example": { + "x-ref": "../examples/linode-interface.json" + } + } + }, + "description": "Update Linode interface settings. Before enabling or disabling Network Helper, you need to power off the Linode.", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "description": "Linode interface settings.", + "properties": { + "default_route": { + "additionalProperties": false, + "description": "Interfaces used for the IPv4 `default_route` and IPv6 `default_route` when multiple interfaces are eligible for the role.", + "properties": { + "ipv4_eligible_interface_ids": { + "description": "The VPC or public interface IDs that are eligible to be the IPv4 `default_route` for this Linode. If the `ipv4_eligible_interface_ids` array is empty, this means there are no eligible interfaces eligible for the IPv4 default route role.", + "items": { + "description": "__Read-only__ Eligible IDs, or an empty array if there are none.", + "example": [ + 1, + 2 + ], + "readOnly": true, + "type": "integer", + "x-linode-cli-display": 3 + }, + "type": "array" + }, + "ipv4_interface_id": { + "default": null, + "description": "The VPC or public interface ID assigned as the IPv4 `default_route`. The [List Linode interface settings](https://techdocs.akamai.com/linode-api/reference/get-linode-interface-settings) operation provides eligible IPv4 interface IDs.", "example": 1, "nullable": true, "type": "integer", + "x-linode-cli-display": 2 + }, + "ipv6_eligible_interface_ids": { + "description": "The public interface IDs that are eligible to be the IPv6 `default_route` for this Linode. If the `ipv6_eligible_interface_ids` array is empty, this means there are no eligible interfaces eligible for the IPv6 default route role.", + "items": { + "description": "__Read-only__ Eligible IDs, or an empty array if there are none.", + "example": [ + 4, + 5 + ], + "readOnly": true, + "type": "integer" + }, + "type": "array", + "x-linode-cli-display": 5 + }, + "ipv6_interface_id": { + "default": null, + "description": "The public interface ID assigned as the IPv6 `default_route`. The [List Linode interface settings](https://techdocs.akamai.com/linode-api/reference/get-linode-interface-settings) operation provides eligible IPv6 interface IDs.", + "example": 4, + "nullable": true, + "type": "integer", "x-linode-cli-display": 4 } }, @@ -60097,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 } ], @@ -60784,10 +63392,7 @@ "range": { "default": null, "description": "IPv6 range in CIDR notation (`2001:0db8::1/64`) or prefix-only (`/64`).\n- The prefix of /64 or /56 block of IPv6 addresses.\n- CIDR notation ranges must be within your assigned ranges.", - "example": [ - "2001:0db8::1/64", - "/64" - ], + "example": "/64", "type": "string" } }, @@ -60996,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 } ], @@ -61895,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", @@ -61907,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, @@ -62169,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", @@ -65091,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" @@ -65122,6 +67806,18 @@ "example": "linode/debian9", "type": "string" }, + "maintenance_policy": { + "description": "__Beta__ Defines the maintenance policy for this Linode. Choose from the following policies:\n\n- `linode/migrate`: Migrates the Linode to a new host while it remains fully operational (with some performance degradation). Recommended for maximizing availability.\n- `linode/power_off_on`: Powers off the Linode at the start of the maintenance event and reboots it once the maintenance finishes. Recommended for maximizing performance.\n\nReview [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "metadata": { "additionalProperties": false, "description": "__Write-only__ An object containing user-defined data relevant to the creation of Linodes.", @@ -65464,6 +68160,18 @@ "readOnly": true, "type": "integer" }, + "maintenance_policy": { + "description": "__Beta__ The maintenance policy configured by the user for this Linode. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "placement_group": { "additionalProperties": false, "description": "__Read-only__ Details on the [placement group](https://www.linode.com/docs/products/compute/compute-instances/guides/placement-groups/) that this Linode belongs to. Empty if the Linode isn't in a placement group.", @@ -67444,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 } ], @@ -71572,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" @@ -71643,6 +74351,19 @@ }, "type": "object" }, + "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.", @@ -71714,17 +74435,18 @@ "type": "object" }, "count": { - "description": "The number of nodes in the Node Pool.", + "description": "The number of nodes in the node pool.", "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.", "items": { "additionalProperties": false, - "description": "The values to assign to each partition in this Node Pool's custom disk layout.", + "description": "The values to assign to each partition in this node pool's custom disk layout.", "properties": { "size": { "description": "The size of this custom disk partition in MB. The size of this disk partition can't exceed the capacity of the node's plan type.", @@ -71747,9 +74469,23 @@ "x-linode-cli-format": "json" }, "k8s_version": { - "description": "__Beta__ The LKE-specific Kubernetes version to use for the worker nodes within this node pool. This field is required when creating node pools on LKE Enterprise clusters.\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`.", + "description": "__Beta__, __LKE Enterprise__ The LKE-specific Kubernetes version to use for the worker nodes within this node pool. This field is required when creating node pools on LKE Enterprise clusters.\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": "v1.31.8+lke3", "type": "string", + "x-akamai": { + "labels": [ + "LKE Enterprise" + ], + "status": "BETA" + } + }, + "label": { + "description": "__Beta__ An optional label for this node pool. Labels can be up to 32 characters long, containing lowercase alphanumeric characters optionally interspersed with dashes.\n\nA node pool's label also cascades down to its nodes (Linodes). If a label is defined on the node pool, the label for each node is `--`. If not, the label is `--`.\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": "app-pool", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])$", + "type": "string", "x-akamai": { "status": "BETA" } @@ -71769,7 +74505,7 @@ "type": "object" }, "tags": { - "description": "__Filterable__ An array of tags applied to this object. Tags are for organizational purposes only.", + "description": "__Filterable__ Organizational tags to apply to this node pool. When you apply tags to LKE Enterprise node pools, they also apply to the nodes (Linodes) within the node pool. Tags don't cascade down to nodes in non-Enterprise node pools.", "example": [ "example tag", "another example" @@ -71840,12 +74576,13 @@ "type": "array" }, "type": { - "description": "The Linode Type for all of the nodes in the Node Pool.", + "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 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`.", + "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`.", "enum": [ "rolling_update", "on_recycle" @@ -71853,6 +74590,9 @@ "example": "on_recycle", "type": "string", "x-akamai": { + "labels": [ + "LKE Enterprise" + ], "status": "BETA" } } @@ -71880,6 +74620,33 @@ "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": "{{stack_type}}", + "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": "{{subnet_id}}", + "type": "integer", + "x-akamai": { + "labels": [ + "LKE Enterprise" + ], + "status": "BETA" + } + }, "tags": { "description": "__Filterable__ An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only.", "example": [ @@ -71898,7 +74665,7 @@ "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 in beta and only works when using the beta API. Call the URL with the `apiVersion` path parameter set to `v4beta`.", + "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" @@ -71913,6 +74680,17 @@ }, "x-linode-cli-display": 5, "x-linode-filterable": true + }, + "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": "{{vpc_id}}", + "type": "integer", + "x-akamai": { + "labels": [ + "LKE Enterprise" + ], + "status": "BETA" + } } }, "required": [ @@ -71957,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.", @@ -71983,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": [ @@ -72019,6 +74810,33 @@ "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": "__Filterable__ An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only.", "example": [ @@ -72037,7 +74855,7 @@ "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 in beta and only works when using the beta API. Call the URL with the `apiVersion` path parameter set to `v4beta`.", + "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" @@ -72059,6 +74877,17 @@ "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", @@ -72127,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" }, @@ -72174,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.", @@ -72200,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": [ @@ -72236,6 +75078,33 @@ "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": "__Filterable__ An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only.", "example": [ @@ -72254,7 +75123,7 @@ "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 in beta and only works when using the beta API. Call the URL with the `apiVersion` path parameter set to `v4beta`.", + "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" @@ -72276,6 +75145,17 @@ "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", @@ -72438,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.", @@ -72464,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": [ @@ -72500,6 +75393,33 @@ "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": "__Filterable__ An array of tags applied to the Kubernetes cluster. Tags are for organizational purposes only.", "example": [ @@ -72518,7 +75438,7 @@ "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 in beta and only works when using the beta API. Call the URL with the `apiVersion` path parameter set to `v4beta`.", + "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" @@ -72540,6 +75460,17 @@ "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", @@ -72622,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" @@ -72684,6 +75615,19 @@ }, "type": "object" }, + "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.", @@ -72745,7 +75689,44 @@ "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.", + "example": true, + "type": "boolean", + "x-linode-cli-display": 5 + } + }, + "type": "object" + }, "created": { "description": "__Read-only__ When this Kubernetes cluster was created.", "example": "2019-09-12T21:25:30Z", @@ -72753,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": [ @@ -72791,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.", @@ -72810,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": { @@ -72842,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" }, @@ -72856,7 +75903,7 @@ "x-linode-cli-action": "cluster-update" }, "delete": { - "description": "Deletes a Cluster you have permission to `read_write`.\n\n__Deleting a Cluster is a destructive action and cannot be undone.__\n\nDeleting a Cluster:\n\n- Deletes all Linodes in all pools within this Kubernetes cluster\n- Deletes all supporting Kubernetes services for this Kubernetes cluster (API server, etcd, etc)\n- Deletes all NodeBalancers created by this Kubernetes cluster\n- Does not delete any of the volumes created by this Kubernetes cluster\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli lke cluster-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 lke:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Deletes a cluster from your account.\n\n> \ud83d\udea7\n>\n> Deleting a cluster is a destructive action and can't be undone.\n\nWhen a cluster is deleted, all supporting Kubernetes services are removed from your account along with all Linodes in your cluster's node pools. You must have `read_write` permission to the cluster to initiate deletion.\n\nSome additional services associated with your cluster remain active on your account. These services include NodeBalancers and Block Storage volumes. To avoid further charges, delete these services manually through Cloud Manager, the Linode CLI, or the Linode API.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli lke cluster-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 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/delete-lke-cluster" @@ -74739,17 +77786,18 @@ "type": "object" }, "count": { - "description": "The number of nodes in the Node Pool.", + "description": "The number of nodes in the node pool.", "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.", "items": { "additionalProperties": false, - "description": "The values to assign to each partition in this Node Pool's custom disk layout.", + "description": "The values to assign to each partition in this node pool's custom disk layout.", "properties": { "size": { "description": "The size of this custom disk partition in MB. The size of this disk partition can't exceed the capacity of the node's plan type.", @@ -74772,9 +77820,23 @@ "x-linode-cli-format": "json" }, "k8s_version": { - "description": "__Beta__ The LKE-specific Kubernetes version to use for the worker nodes within this node pool. This field is required when creating node pools on LKE Enterprise clusters.\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`.", + "description": "__Beta__, __LKE Enterprise__ The LKE-specific Kubernetes version to use for the worker nodes within this node pool. This field is required when creating node pools on LKE Enterprise clusters.\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": "v1.31.8+lke3", "type": "string", + "x-akamai": { + "labels": [ + "LKE Enterprise" + ], + "status": "BETA" + } + }, + "label": { + "description": "__Beta__ An optional label for this node pool. Labels can be up to 32 characters long, containing lowercase alphanumeric characters optionally interspersed with dashes.\n\nA node pool's label also cascades down to its nodes (Linodes). If a label is defined on the node pool, the label for each node is `--`. If not, the label is `--`.\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": "app-pool", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])$", + "type": "string", "x-akamai": { "status": "BETA" } @@ -74794,7 +77856,7 @@ "type": "object" }, "tags": { - "description": "__Filterable__ An array of tags applied to this object. Tags are for organizational purposes only.", + "description": "__Filterable__ Organizational tags to apply to this node pool. When you apply tags to LKE Enterprise node pools, they also apply to the nodes (Linodes) within the node pool. Tags don't cascade down to nodes in non-Enterprise node pools.", "example": [ "example tag", "another example" @@ -74865,12 +77927,13 @@ "type": "array" }, "type": { - "description": "The Linode Type for all of the nodes in the Node Pool.", + "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 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`.", + "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`.", "enum": [ "rolling_update", "on_recycle" @@ -74878,6 +77941,9 @@ "example": "on_recycle", "type": "string", "x-akamai": { + "labels": [ + "LKE Enterprise" + ], "status": "BETA" } } @@ -74915,40 +77981,44 @@ "application/json": { "schema": { "additionalProperties": false, - "description": "The set of Node Pools which are members of the Kubernetes cluster. Node Pools consist of a Linode type, the number of Linodes to deploy of that type, and additional status information.", + "description": "The set of node pools that are members of the Kubernetes cluster. Node pools consist of a Linode type, the number of Linodes to deploy of that type, and additional status information.", "properties": { "autoscaler": { "additionalProperties": false, "description": "When enabled, the number of nodes autoscales within the defined minimum and maximum values.", "properties": { "enabled": { - "description": "Whether autoscaling is enabled for this Node Pool. Defaults to `false`.", + "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`.", + "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`.", + "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" }, "count": { - "description": "The number of nodes in the Node Pool.", + "description": "The number of nodes in the node pool.", "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.", @@ -74960,10 +78030,10 @@ "type": "string" }, "disks": { - "description": "This Node Pool's custom disk layout.", + "description": "This node pool's custom disk layout.", "items": { "additionalProperties": false, - "description": "The values to assign to each partition in this Node Pool's custom disk layout.", + "description": "The values to assign to each partition in this node pool's custom disk layout.", "properties": { "size": { "description": "The size of this custom disk partition in MB. The size of this disk partition can't exceed the capacity of the node's plan type.", @@ -74986,7 +78056,7 @@ "x-linode-cli-format": "json" }, "id": { - "description": "__Filterable__ This Node Pool's unique ID.", + "description": "__Filterable__ This node pool's unique ID.", "example": 456, "type": "integer", "x-akamai": { @@ -74994,16 +78064,28 @@ "Filterable" ] }, + "x-linode-cli-display": 1, "x-linode-filterable": true }, "k8s_version": { - "description": "__Beta__ The Kubernetes version used for the worker nodes within this node pool.", + "description": "__Beta__ The Kubernetes version used for the worker nodes within this node pool.\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and is only returned for accounts that have been enrolled in the LKE Enterprise LA.", "example": "v1.31.8+lke3", "type": "string", "x-akamai": { "status": "BETA" } }, + "label": { + "description": "__Beta__ The optional label defined for this node Pool.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and is only returned for accounts that have been enrolled in the LKE Enterprise LA.", + "example": "app-pool", + "maxLength": 32, + "minLength": 1, + "type": "string", + "x-akamai": { + "status": "BETA" + }, + "x-linode-cli-display": 2 + }, "labels": { "additionalProperties": { "maxLength": 63, @@ -75019,7 +78101,7 @@ "type": "object" }, "nodes": { - "description": "Status information for the Nodes which are members of this Node Pool. If a Linode has not been provisioned for a given Node slot, the `instance_id` will be returned as `null`.", + "description": "Status information for the nodes that are members of this node pool. If a Linode has not been provisioned for a given node slot, the `instance_id` is `null`.", "items": { "additionalProperties": false, "description": "__Read-only__ Status information for a Node which is a member of a Kubernetes cluster.", @@ -75068,6 +78150,7 @@ "Filterable" ] }, + "x-linode-cli-display": 8, "x-linode-filterable": true }, "taints": { @@ -75118,9 +78201,10 @@ "type": "array" }, "type": { - "description": "The Linode Type for all of the nodes in the Node Pool.", + "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.", @@ -75231,40 +78315,44 @@ "data": { "items": { "additionalProperties": false, - "description": "The set of Node Pools which are members of the Kubernetes cluster. Node Pools consist of a Linode type, the number of Linodes to deploy of that type, and additional status information.", + "description": "The set of node pools that are members of the Kubernetes cluster. Node pools consist of a Linode type, the number of Linodes to deploy of that type, and additional status information.", "properties": { "autoscaler": { "additionalProperties": false, "description": "When enabled, the number of nodes autoscales within the defined minimum and maximum values.", "properties": { "enabled": { - "description": "Whether autoscaling is enabled for this Node Pool. Defaults to `false`.", + "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`.", + "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`.", + "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" }, "count": { - "description": "The number of nodes in the Node Pool.", + "description": "The number of nodes in the node pool.", "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.", @@ -75276,10 +78364,10 @@ "type": "string" }, "disks": { - "description": "This Node Pool's custom disk layout.", + "description": "This node pool's custom disk layout.", "items": { "additionalProperties": false, - "description": "The values to assign to each partition in this Node Pool's custom disk layout.", + "description": "The values to assign to each partition in this node pool's custom disk layout.", "properties": { "size": { "description": "The size of this custom disk partition in MB. The size of this disk partition can't exceed the capacity of the node's plan type.", @@ -75302,7 +78390,7 @@ "x-linode-cli-format": "json" }, "id": { - "description": "__Filterable__ This Node Pool's unique ID.", + "description": "__Filterable__ This node pool's unique ID.", "example": 456, "type": "integer", "x-akamai": { @@ -75310,16 +78398,28 @@ "Filterable" ] }, + "x-linode-cli-display": 1, "x-linode-filterable": true }, "k8s_version": { - "description": "__Beta__ The Kubernetes version used for the worker nodes within this node pool.", + "description": "__Beta__ The Kubernetes version used for the worker nodes within this node pool.\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and is only returned for accounts that have been enrolled in the LKE Enterprise LA.", "example": "v1.31.8+lke3", "type": "string", "x-akamai": { "status": "BETA" } }, + "label": { + "description": "__Beta__ The optional label defined for this node Pool.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and is only returned for accounts that have been enrolled in the LKE Enterprise LA.", + "example": "app-pool", + "maxLength": 32, + "minLength": 1, + "type": "string", + "x-akamai": { + "status": "BETA" + }, + "x-linode-cli-display": 2 + }, "labels": { "additionalProperties": { "maxLength": 63, @@ -75335,7 +78435,7 @@ "type": "object" }, "nodes": { - "description": "Status information for the Nodes which are members of this Node Pool. If a Linode has not been provisioned for a given Node slot, the `instance_id` will be returned as `null`.", + "description": "Status information for the nodes that are members of this node pool. If a Linode has not been provisioned for a given node slot, the `instance_id` is `null`.", "items": { "additionalProperties": false, "description": "__Read-only__ Status information for a Node which is a member of a Kubernetes cluster.", @@ -75384,6 +78484,7 @@ "Filterable" ] }, + "x-linode-cli-display": 8, "x-linode-filterable": true }, "taints": { @@ -75434,9 +78535,10 @@ "type": "array" }, "type": { - "description": "The Linode Type for all of the nodes in the Node Pool.", + "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.", @@ -75487,7 +78589,7 @@ } } }, - "description": "Returns an array of all Pools in this Kubernetes cluster." + "description": "Returns all node pools in this Kubernetes cluster." }, "default": { "content": { @@ -75608,40 +78710,44 @@ "application/json": { "schema": { "additionalProperties": false, - "description": "The set of Node Pools which are members of the Kubernetes cluster. Node Pools consist of a Linode type, the number of Linodes to deploy of that type, and additional status information.", + "description": "The set of node pools that are members of the Kubernetes cluster. Node pools consist of a Linode type, the number of Linodes to deploy of that type, and additional status information.", "properties": { "autoscaler": { "additionalProperties": false, "description": "When enabled, the number of nodes autoscales within the defined minimum and maximum values.", "properties": { "enabled": { - "description": "Whether autoscaling is enabled for this Node Pool. Defaults to `false`.", + "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`.", + "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`.", + "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" }, "count": { - "description": "The number of nodes in the Node Pool.", + "description": "The number of nodes in the node pool.", "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.", @@ -75653,10 +78759,10 @@ "type": "string" }, "disks": { - "description": "This Node Pool's custom disk layout.", + "description": "This node pool's custom disk layout.", "items": { "additionalProperties": false, - "description": "The values to assign to each partition in this Node Pool's custom disk layout.", + "description": "The values to assign to each partition in this node pool's custom disk layout.", "properties": { "size": { "description": "The size of this custom disk partition in MB. The size of this disk partition can't exceed the capacity of the node's plan type.", @@ -75679,7 +78785,7 @@ "x-linode-cli-format": "json" }, "id": { - "description": "__Filterable__ This Node Pool's unique ID.", + "description": "__Filterable__ This node pool's unique ID.", "example": 456, "type": "integer", "x-akamai": { @@ -75687,16 +78793,28 @@ "Filterable" ] }, + "x-linode-cli-display": 1, "x-linode-filterable": true }, "k8s_version": { - "description": "__Beta__ The Kubernetes version used for the worker nodes within this node pool.", + "description": "__Beta__ The Kubernetes version used for the worker nodes within this node pool.\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and is only returned for accounts that have been enrolled in the LKE Enterprise LA.", "example": "v1.31.8+lke3", "type": "string", "x-akamai": { "status": "BETA" } }, + "label": { + "description": "__Beta__ The optional label defined for this node Pool.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and is only returned for accounts that have been enrolled in the LKE Enterprise LA.", + "example": "app-pool", + "maxLength": 32, + "minLength": 1, + "type": "string", + "x-akamai": { + "status": "BETA" + }, + "x-linode-cli-display": 2 + }, "labels": { "additionalProperties": { "maxLength": 63, @@ -75712,7 +78830,7 @@ "type": "object" }, "nodes": { - "description": "Status information for the Nodes which are members of this Node Pool. If a Linode has not been provisioned for a given Node slot, the `instance_id` will be returned as `null`.", + "description": "Status information for the nodes that are members of this node pool. If a Linode has not been provisioned for a given node slot, the `instance_id` is `null`.", "items": { "additionalProperties": false, "description": "__Read-only__ Status information for a Node which is a member of a Kubernetes cluster.", @@ -75761,6 +78879,7 @@ "Filterable" ] }, + "x-linode-cli-display": 8, "x-linode-filterable": true }, "taints": { @@ -75811,9 +78930,10 @@ "type": "array" }, "type": { - "description": "The Linode Type for all of the nodes in the Node Pool.", + "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.", @@ -75911,11 +79031,12 @@ "type": "object" }, "count": { - "description": "The number of nodes in the Node Pool.", + "description": "The number of nodes in the node pool.", "example": "{{count}}", "maximum": 100, "minimum": 1, - "type": "integer" + "type": "integer", + "x-linode-cli-display": 4 }, "labels": { "additionalProperties": { @@ -75931,6 +79052,23 @@ }, "type": "object" }, + "tags": { + "description": "__Filterable__ Organizational tags to apply to this node pool. When you apply tags to LKE Enterprise node pools, they also apply to the nodes (Linodes) within the node pool. Tags don't cascade down to nodes in non-Enterprise node pools.", + "example": [ + "example tag", + "another example" + ], + "items": { + "type": "string" + }, + "type": "array", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true + }, "taints": { "description": "Kubernetes taints to add to node pool nodes. Taints help control how pods are scheduled onto nodes, specifically allowing them to repel certain pods. To learn more, review [Add labels and taints to your LKE node pools](https://www.linode.com/docs/products/compute/kubernetes/guides/deploy-and-manage-cluster-with-the-linode-api/#add-labels-and-taints-to-your-lke-node-pools).\n\nSpecifying an empty array (`[]`) removes all previously set taints.", "example": [ @@ -76004,40 +79142,44 @@ "application/json": { "schema": { "additionalProperties": false, - "description": "The set of Node Pools which are members of the Kubernetes cluster. Node Pools consist of a Linode type, the number of Linodes to deploy of that type, and additional status information.", + "description": "The set of node pools that are members of the Kubernetes cluster. Node pools consist of a Linode type, the number of Linodes to deploy of that type, and additional status information.", "properties": { "autoscaler": { "additionalProperties": false, "description": "When enabled, the number of nodes autoscales within the defined minimum and maximum values.", "properties": { "enabled": { - "description": "Whether autoscaling is enabled for this Node Pool. Defaults to `false`.", + "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`.", + "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`.", + "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" }, "count": { - "description": "The number of nodes in the Node Pool.", + "description": "The number of nodes in the node pool.", "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.", @@ -76049,10 +79191,10 @@ "type": "string" }, "disks": { - "description": "This Node Pool's custom disk layout.", + "description": "This node pool's custom disk layout.", "items": { "additionalProperties": false, - "description": "The values to assign to each partition in this Node Pool's custom disk layout.", + "description": "The values to assign to each partition in this node pool's custom disk layout.", "properties": { "size": { "description": "The size of this custom disk partition in MB. The size of this disk partition can't exceed the capacity of the node's plan type.", @@ -76075,7 +79217,7 @@ "x-linode-cli-format": "json" }, "id": { - "description": "__Filterable__ This Node Pool's unique ID.", + "description": "__Filterable__ This node pool's unique ID.", "example": 456, "type": "integer", "x-akamai": { @@ -76083,16 +79225,28 @@ "Filterable" ] }, + "x-linode-cli-display": 1, "x-linode-filterable": true }, "k8s_version": { - "description": "__Beta__ The Kubernetes version used for the worker nodes within this node pool.", + "description": "__Beta__ The Kubernetes version used for the worker nodes within this node pool.\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and is only returned for accounts that have been enrolled in the LKE Enterprise LA.", "example": "v1.31.8+lke3", "type": "string", "x-akamai": { "status": "BETA" } }, + "label": { + "description": "__Beta__ The optional label defined for this node Pool.\n\n> \ud83d\udea7\n>\n> This field is available as part of the beta API and is only returned for accounts that have been enrolled in the LKE Enterprise LA.", + "example": "app-pool", + "maxLength": 32, + "minLength": 1, + "type": "string", + "x-akamai": { + "status": "BETA" + }, + "x-linode-cli-display": 2 + }, "labels": { "additionalProperties": { "maxLength": 63, @@ -76108,7 +79262,7 @@ "type": "object" }, "nodes": { - "description": "Status information for the Nodes which are members of this Node Pool. If a Linode has not been provisioned for a given Node slot, the `instance_id` will be returned as `null`.", + "description": "Status information for the nodes that are members of this node pool. If a Linode has not been provisioned for a given node slot, the `instance_id` is `null`.", "items": { "additionalProperties": false, "description": "__Read-only__ Status information for a Node which is a member of a Kubernetes cluster.", @@ -76157,6 +79311,7 @@ "Filterable" ] }, + "x-linode-cli-display": 8, "x-linode-filterable": true }, "taints": { @@ -76207,9 +79362,10 @@ "type": "array" }, "type": { - "description": "The Linode Type for all of the nodes in the Node Pool.", + "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.", @@ -77123,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" } ], @@ -77350,7 +80506,7 @@ "standard": { "summary": "LKE version for standard tier", "value": { - "id": "1.32", + "id": "1.33", "tier": "standard" } } @@ -77505,7 +80661,7 @@ "name": "version", "required": true, "schema": { - "example": "1.32", + "example": "1.33", "type": "string" }, "x-akamai": { @@ -77765,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, @@ -77948,7 +81104,7 @@ "content": { "application/json": { "example": { - "id": "1.32" + "id": "1.33" }, "schema": { "additionalProperties": false, @@ -78071,7 +81227,7 @@ "name": "version", "required": true, "schema": { - "example": "1.32", + "example": "1.33", "type": "string" }, "x-akamai": { @@ -80158,6 +83314,192 @@ }, "x-linode-cli-command": "longview" }, + "/{apiVersion}/maintenance/policies": { + "get": { + "description": "__Beta__ List all available maintenance policies that can be applied to your Linodes.\n\n> \ud83d\udcd8\n>\n> This operation is beta and only works when using the beta API. Call the URL with the `apiVersion` path parameter set to `v4beta`.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli maintenance policies-list\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)", + "externalDocs": { + "description": "See documentation for this operation in Akamai's Linode API", + "url": "https://techdocs.akamai.com/linode-api/reference/get-maintenance-policies" + }, + "operationId": "get-maintenance-policies", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "properties": { + "data": { + "items": { + "additionalProperties": false, + "description": "Information about maintenance policies.", + "properties": { + "description": { + "description": "A brief explanation of the maintenance policy's intended behavior.", + "example": "Migrates the Linode to a new host while it remains fully operational. Recommended for maximizing availability.", + "type": "string" + }, + "is_default": { + "description": "Indicates whether this policy is the default one applied when creating a Linode.", + "example": true, + "type": "boolean" + }, + "label": { + "description": "The display name for the maintenance policy.", + "example": "Migrate", + "type": "string" + }, + "notification_period_sec": { + "description": "__Filterable__ Number of seconds before the maintenance event triggers. A value of 0 means no prior notification.", + "example": 10800, + "type": "integer", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true + }, + "slug": { + "description": "Unique identifier for the maintenance policy. System policies are prefixed with `linode/`.", + "example": "linode/migrate", + "type": "string" + }, + "type": { + "description": "The type of policy.", + "enum": [ + "migrate", + "power_off_on" + ], + "example": "migrate", + "type": "string" + } + }, + "type": "object", + "x-akamai": { + "file-path": "schemas/maintenance-policies.yaml" + } + }, + "type": "array" + }, + "page": { + "description": "__Read-only__ The current [page](https://techdocs.akamai.com/linode-api/reference/pagination).", + "example": 1, + "readOnly": true, + "type": "integer" + }, + "pages": { + "description": "__Read-only__ The total number of [pages](https://techdocs.akamai.com/linode-api/reference/pagination).", + "example": 1, + "readOnly": true, + "type": "integer" + }, + "results": { + "description": "__Read-only__ The total number of results.", + "example": 1, + "readOnly": true, + "type": "integer" + } + }, + "type": "object", + "x-akamai": { + "file-path": "schemas/get-maintenance-policies-200.yaml" + } + }, + "x-example": { + "x-ref": "../examples/get-maintenance-policies-200.json" + } + } + }, + "description": "Returns a paginated list of maintenance policy objects." + }, + "default": { + "content": { + "application/json": { + "schema": { + "additionalProperties": false, + "properties": { + "errors": { + "items": { + "additionalProperties": false, + "description": "An object for describing a single error that occurred during the processing of a request.", + "properties": { + "field": { + "description": "The field in the request that caused this error. This may be a path, separated by periods in the case of nested fields. In some cases this may come back as `null` if the error is not specific to any single element of the request.", + "example": "fieldname", + "type": "string" + }, + "reason": { + "description": "What happened to cause this error. In most cases, this can be fixed immediately by changing the data you sent in the request, but in some cases you will be instructed to [Open a support ticket](https://techdocs.akamai.com/linode-api/reference/post-ticket) or perform some other action before you can complete the request successfully.", + "example": "fieldname must be a valid value", + "type": "string" + } + }, + "type": "object", + "x-akamai": { + "file-path": "schemas/error-object.yaml" + } + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "See [Errors](https://techdocs.akamai.com/linode-api/reference/errors) for the range of possible error response codes." + } + }, + "security": [ + { + "personalAccessToken": [] + }, + { + "oauth": [] + } + ], + "summary": "List maintenance policies", + "tags": [ + "Maintenance policies" + ], + "x-akamai": { + "status": "BETA", + "tabs": [ + { + "syntax": "linode-cli maintenance policies-list", + "title": "CLI", + "url": "https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli" + } + ] + }, + "x-linode-cli-action": "policies-list", + "x-linode-grant": "read_only" + }, + "parameters": [ + { + "description": "__Enum__ Call the `v4beta` URL for operations still only in beta.", + "example": "{{apiVersion}}", + "in": "path", + "name": "apiVersion", + "required": true, + "schema": { + "enum": [ + "v4beta" + ], + "example": "v4beta", + "type": "string" + }, + "x-akamai": { + "file-path": "parameters/api-version-v4beta-path.yaml" + } + } + ], + "x-akamai": { + "file-path": "paths/maintenance-policies.yaml", + "path-info": "/{apiVersion}/maintenance/policies" + }, + "x-linode-cli-command": "maintenance" + }, "/{apiVersion}/managed/contacts": { "post": { "description": "Creates a Managed Contact. A Managed Contact is someone Linode special forces can contact in the course of attempting to resolve an issue with a Managed Service.\n\nThis operation can only be accessed by the unrestricted users of an account.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli managed contact-create \\\n --name \"John Doe\" \\\n --email \"john.doe@example.org\" \\\n --phone.primary \"123-456-7890\"\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)", @@ -85693,15 +89035,25 @@ "type": "string" }, "id": { - "description": "The unique identifier for the alert channel.", + "description": "__Filterable__ The unique identifier for the alert channel.", "example": 10000, "type": "integer", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "label": { - "description": "The name of the alert channel, used to display it in Akamai Cloud Manager.", + "description": "__Filterable__ The name of the alert channel, used to display it in Akamai Cloud Manager.", "example": "Read-Write Channel", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "type": { @@ -85850,7 +89202,7 @@ ], "x-akamai": { "file-path": "paths/aclp-alert-channels.yaml", - "path-info": "/monitor/alert-channels" + "path-info": "/{apiVersion}/monitor/alert-channels" }, "x-linode-cli-command": "alerts" }, @@ -86057,7 +89409,7 @@ "type": "string" }, "entity_ids": { - "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response.\n\n> \ud83d\udcd8\n>\n> The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`, while other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", + "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response.\n\n> \ud83d\udcd8\n>\n> The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`. Other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", "example": [ "126905", "126906", @@ -86078,15 +89430,25 @@ "type": "boolean" }, "id": { - "description": "The unique identifier for the alert definition.", + "description": "__Filterable__ The unique identifier for the alert definition.", "example": 10000, "type": "integer", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "label": { - "description": "The name of the alert definition. This is used for display purposes in Akamai Cloud Manager.", + "description": "__Filterable__ The name of the alert definition. This is used for display purposes in Akamai Cloud Manager.", "example": "High Memory Usage Plan Dedicated", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "rule_criteria": { @@ -86198,10 +89560,7 @@ "type": "object" }, "service_type": { - "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API.", "example": "dbaas", "type": "string" }, @@ -86217,7 +89576,7 @@ "type": "integer" }, "status": { - "description": "The current status of the alert. This can be either `enabled`, `disabled`, `in progress`, or `failed`.", + "description": "__Filterable__ The current status of the alert. This can be either `enabled`, `disabled`, `in progress`, or `failed`.", "enum": [ "enabled", "disabled", @@ -86226,6 +89585,11 @@ ], "example": "enabled", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "trigger_conditions": { @@ -86259,13 +89623,18 @@ "type": "object" }, "type": { - "description": "The type of alert. This can be either `user` for an alert specific to the current user, or `system` for one that applies to all users on your account.", + "description": "__Filterable__ The type of alert. This can be either `user` for an alert specific to the current user, or `system` for one that applies to all users on your account.", "enum": [ "user", "system" ], "example": "system", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "updated": { @@ -86405,7 +89774,7 @@ ], "x-akamai": { "file-path": "paths/aclp-alert-definitions.yaml", - "path-info": "/monitor/alert-definitions" + "path-info": "/{apiVersion}/monitor/alert-definitions" }, "x-linode-cli-command": "alerts" }, @@ -86484,10 +89853,7 @@ "type": "string" }, "service_type": { - "description": "The Akamai Cloud Computing service used by this dashboard. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "The Akamai Cloud Computing service used by this dashboard.", "example": "dbaas", "type": "string" }, @@ -86798,10 +90164,7 @@ "type": "string" }, "service_type": { - "description": "The Akamai Cloud Computing service used by this dashboard. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "The Akamai Cloud Computing service used by this dashboard.", "example": "dbaas", "type": "string" }, @@ -87006,7 +90369,7 @@ } }, { - "description": "ID of the Dashboard", + "description": "Identifies each dashboard.", "example": "{{dashboard_id}}", "in": "path", "name": "dashboard_id", @@ -87016,7 +90379,7 @@ "type": "integer" }, "x-akamai": { - "file-path": "parameters/dashboard-id.yaml" + "file-path": "parameters/aclp-dashboard-id.yaml" } } ], @@ -87062,10 +90425,7 @@ "type": "string" }, "service_type": { - "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API.", "example": "dbaas", "type": "string" } @@ -87201,7 +90561,7 @@ }, "/{apiVersion}/monitor/services/{service_type}": { "get": { - "description": "__Beta__ Returns details for a specific service type. Include the appropriate `service_type` as a path parameter.\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - Currently, only the Managed Databases (`dbaas`) service type is supported.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli monitor service-view dbaas\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 monitor:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "__Beta__ Returns details for a specific service type. Include the appropriate `service_type` as a path parameter. To see your currently supported services, run the [List supported service types](https://techdocs.akamai.com/linode-api/reference/get-monitor-services) operation.\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - For more details on the metrics available for each service, see the [Metrics reference](https://techdocs.akamai.com/cloud-computing/docs/metrics-dimensions-parameters).\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli monitor service-view dbaas\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 monitor: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-monitor-services-for-service-type" @@ -87235,10 +90595,7 @@ "type": "string" }, "service_type": { - "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API.", "example": "dbaas", "type": "string" } @@ -87366,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" }, @@ -87391,7 +90745,7 @@ }, "/{apiVersion}/monitor/services/{service_type}/alert-definitions": { "post": { - "description": "__Beta__ Create a new alert definition for a specific service type. Include the appropriate `service_type` as a path parameter. These are referred to as `user` alerts. You need `read_only` access to the [scope](https://techdocs.akamai.com/linode-api/reference/oauth-reference) for the selected `service_type`.\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - Currently, only the Managed Databases (`dbaas`) service type is supported.\n\n\n<>\n\n---\n\n\n- __OAuth scopes__.\n\n ```\n monitor:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)\n\n- __CLI__.\n\n ```\n linode-cli alerts definition-create \\\n--channel_ids 546 \\\n--label CPU usage threshold maximum \\\n--rule_criteria.metric cpu_usage \\\n--rule_criteria.operator gt \\\n--rule_criteria.threshold 80 \\\n--severity 2\n--trigger_conditions.evaluation_period_seconds 300 \\\n--trigger_conditions.polling_interval_seconds 300 \\\n--trigger_conditions.trigger_occurrences 3 \\\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)", + "description": "__Beta__ Create a new alert definition for a specific service type. Include the appropriate `service_type` as a path parameter. To see your currently supported services, run the [List supported service types](https://techdocs.akamai.com/linode-api/reference/get-monitor-services) operation. These are referred to as `user` alerts. You need `read_only` access to the [scope](https://techdocs.akamai.com/linode-api/reference/get-started#oauth-reference) for the selected `service_type`.\n\n> \ud83d\udcd8\n>\n> This operation is beta. Call it using the `v4beta` path in its URL.\n\n\n<>\n\n---\n\n\n- __OAuth scopes__.\n\n ```\n monitor:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)\n\n- __CLI__.\n\n ```\n linode-cli alerts definition-create \\\n--channel_ids 546 \\\n--label CPU usage threshold maximum \\\n--rule_criteria.metric cpu_usage \\\n--rule_criteria.operator gt \\\n--rule_criteria.threshold 80 \\\n--severity 2\n--trigger_conditions.evaluation_period_seconds 300 \\\n--trigger_conditions.polling_interval_seconds 300 \\\n--trigger_conditions.trigger_occurrences 3 \\\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/post-alert-definition-for-service-type" @@ -87458,7 +90812,7 @@ "type": "string" }, "entity_ids": { - "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response.\n\n> \ud83d\udcd8\n>\n> - You need `read_only` access to the [scope](https://techdocs.akamai.com/linode-api/reference/get-started#oauth-reference) for the `service_type` for each of the `entity_ids`.\n>\n> - The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`, while other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", + "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response. You also need `read_only` access to the [scope](https://techdocs.akamai.com/linode-api/reference/get-started#oauth-reference) for the `service_type` for each of the `entity_ids`.\n\n> \ud83d\udcd8\n>\n> The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`, while other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", "example": [ "13116", "13217", @@ -87740,7 +91094,7 @@ "type": "string" }, "entity_ids": { - "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response.\n\n> \ud83d\udcd8\n>\n> The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`, while other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", + "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response.\n\n> \ud83d\udcd8\n>\n> The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`. Other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", "example": [ "126905", "126906", @@ -87761,15 +91115,25 @@ "type": "boolean" }, "id": { - "description": "The unique identifier for the alert definition.", + "description": "__Filterable__ The unique identifier for the alert definition.", "example": 10000, "type": "integer", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "label": { - "description": "The name of the alert definition. This is used for display purposes in Akamai Cloud Manager.", + "description": "__Filterable__ The name of the alert definition. This is used for display purposes in Akamai Cloud Manager.", "example": "High Memory Usage Plan Dedicated", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "rule_criteria": { @@ -87881,10 +91245,7 @@ "type": "object" }, "service_type": { - "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API.", "example": "dbaas", "type": "string" }, @@ -87900,7 +91261,7 @@ "type": "integer" }, "status": { - "description": "The current status of the alert. This can be either `enabled`, `disabled`, `in progress`, or `failed`.", + "description": "__Filterable__ The current status of the alert. This can be either `enabled`, `disabled`, `in progress`, or `failed`.", "enum": [ "enabled", "disabled", @@ -87909,6 +91270,11 @@ ], "example": "enabled", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "trigger_conditions": { @@ -87942,13 +91308,18 @@ "type": "object" }, "type": { - "description": "The type of alert. This can be either `user` for an alert specific to the current user, or `system` for one that applies to all users on your account.", + "description": "__Filterable__ The type of alert. This can be either `user` for an alert specific to the current user, or `system` for one that applies to all users on your account.", "enum": [ "user", "system" ], "example": "system", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "updated": { @@ -88042,7 +91413,7 @@ "x-linode-grant": "read_write" }, "get": { - "description": "__Beta__ Returns all available alert definitions for a specific service type. Include the appropriate `service_type` as a path parameter.\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - Currently, only the Managed Databases (`dbaas`) service type is supported.\n\n\n<>\n\n---\n\n\n- __OAuth scopes__.\n\n ```\n monitor:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)\n\n- __CLI__.\n\n ```\n linode-cli alerts definition-view dbaas\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)", + "description": "__Beta__ Returns all available alert definitions for a specific service type. Include the appropriate `service_type` as a path parameter. To see your currently supported services, run the [List supported service types](https://techdocs.akamai.com/linode-api/reference/get-monitor-services) operation.\n\n> \ud83d\udcd8\n>\n> This operation is beta. Call it using the `v4beta` path in its URL.\n\n\n<>\n\n---\n\n\n- __OAuth scopes__.\n\n ```\n monitor:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)\n\n- __CLI__.\n\n ```\n linode-cli alerts definition-view dbaas\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/get-alert-definitions-for-service-type" @@ -88243,7 +91614,7 @@ "type": "string" }, "entity_ids": { - "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response.\n\n> \ud83d\udcd8\n>\n> The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`, while other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", + "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response.\n\n> \ud83d\udcd8\n>\n> The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`. Other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", "example": [ "126905", "126906", @@ -88264,15 +91635,25 @@ "type": "boolean" }, "id": { - "description": "The unique identifier for the alert definition.", + "description": "__Filterable__ The unique identifier for the alert definition.", "example": 10000, "type": "integer", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "label": { - "description": "The name of the alert definition. This is used for display purposes in Akamai Cloud Manager.", + "description": "__Filterable__ The name of the alert definition. This is used for display purposes in Akamai Cloud Manager.", "example": "High Memory Usage Plan Dedicated", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "rule_criteria": { @@ -88384,10 +91765,7 @@ "type": "object" }, "service_type": { - "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API.", "example": "dbaas", "type": "string" }, @@ -88403,7 +91781,7 @@ "type": "integer" }, "status": { - "description": "The current status of the alert. This can be either `enabled`, `disabled`, `in progress`, or `failed`.", + "description": "__Filterable__ The current status of the alert. This can be either `enabled`, `disabled`, `in progress`, or `failed`.", "enum": [ "enabled", "disabled", @@ -88412,6 +91790,11 @@ ], "example": "enabled", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "trigger_conditions": { @@ -88445,13 +91828,18 @@ "type": "object" }, "type": { - "description": "The type of alert. This can be either `user` for an alert specific to the current user, or `system` for one that applies to all users on your account.", + "description": "__Filterable__ The type of alert. This can be either `user` for an alert specific to the current user, or `system` for one that applies to all users on your account.", "enum": [ "user", "system" ], "example": "system", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "updated": { @@ -88568,6 +91956,7 @@ ] }, "x-linode-cli-action": "definition-view", + "x-linode-cli-skip": true, "x-linode-grant": "read_only" }, "parameters": [ @@ -88589,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" }, @@ -88608,13 +91994,13 @@ ], "x-akamai": { "file-path": "paths/aclp-service-alert-definitions.yaml", - "path-info": "/monitor/services/{service_type}/alert-definitions" + "path-info": "/{apiVersion}/monitor/services/{service_type}/alert-definitions" }, "x-linode-cli-command": "alerts" }, "/{apiVersion}/monitor/services/{service_type}/alert-definitions/{alert_id}": { "get": { - "description": "__Beta__ Returns a specific alert definition. Include the appropriate `service_type` and `alert_id` as path parameters.\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - Currently, only the Managed Databases (`dbaas`) service type is supported.\n\n\n<>\n\n---\n\n\n- __OAuth scopes__.\n\n ```\n monitor:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)\n\n- __CLI__.\n\n ```\n linode-cli alerts definition-view dbaas 457\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)", + "description": "__Beta__ Returns a specific alert definition. Include the appropriate `service_type` and `alert_id` as path parameters. To see your currently supported services, run the [List supported service types](https://techdocs.akamai.com/linode-api/reference/get-monitor-services) operation.\n\n> \ud83d\udcd8\n>\n> This operation is beta. Call it using the `v4beta` path in its URL.\n\n\n<>\n\n---\n\n\n- __OAuth scopes__.\n\n ```\n monitor:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)\n\n- __CLI__.\n\n ```\n linode-cli alerts definition-view dbaas 457\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/get-alert-definition" @@ -88746,7 +92132,7 @@ "type": "string" }, "entity_ids": { - "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response.\n\n> \ud83d\udcd8\n>\n> The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`, while other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", + "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response.\n\n> \ud83d\udcd8\n>\n> The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`. Other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", "example": [ "126905", "126906", @@ -88767,15 +92153,25 @@ "type": "boolean" }, "id": { - "description": "The unique identifier for the alert definition.", + "description": "__Filterable__ The unique identifier for the alert definition.", "example": 10000, "type": "integer", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "label": { - "description": "The name of the alert definition. This is used for display purposes in Akamai Cloud Manager.", + "description": "__Filterable__ The name of the alert definition. This is used for display purposes in Akamai Cloud Manager.", "example": "High Memory Usage Plan Dedicated", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "rule_criteria": { @@ -88887,10 +92283,7 @@ "type": "object" }, "service_type": { - "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API.", "example": "dbaas", "type": "string" }, @@ -88906,7 +92299,7 @@ "type": "integer" }, "status": { - "description": "The current status of the alert. This can be either `enabled`, `disabled`, `in progress`, or `failed`.", + "description": "__Filterable__ The current status of the alert. This can be either `enabled`, `disabled`, `in progress`, or `failed`.", "enum": [ "enabled", "disabled", @@ -88915,6 +92308,11 @@ ], "example": "enabled", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "trigger_conditions": { @@ -88948,13 +92346,18 @@ "type": "object" }, "type": { - "description": "The type of alert. This can be either `user` for an alert specific to the current user, or `system` for one that applies to all users on your account.", + "description": "__Filterable__ The type of alert. This can be either `user` for an alert specific to the current user, or `system` for one that applies to all users on your account.", "enum": [ "user", "system" ], "example": "system", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "updated": { @@ -89048,7 +92451,7 @@ "x-linode-grant": "read_only" }, "put": { - "description": "__Beta__ Update an existing alert definition. Include the appropriate `service_type` and `alert_id` as path parameters. You need `read_only` access to the [scope](https://techdocs.akamai.com/linode-api/reference/oauth-reference) for the selected `service_type`. Only include the objects in the request that you want to update. Leave any object out of the request to leave it set as is.\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - Currently, only the Managed Databases (`dbaas`) service type is supported.\n\n**User alert definitions**\n\nWhen updating an alert definition you've [created](https://techdocs.akamai.com/linode-api/reference/post-alert-definition-for-service-type), you can change the `status` to `enabled` or `disabled`. You can also modify the `label`, `description`, `severity`, `entity_ids`, `rule_criteria`, `trigger_conditions`, and `channel_ids` objects. If updating the `entity_ids`, `rule_criteria`, or `channel_ids` list objects, these points apply:\n\n- If you want to keep an existing item, you need to include it in the list.\n\n- If you want to remove an existing item, leave it out of the list.\n\n- To add a new item, include it in the list.\n\n- You can't pass an empty list to remove all items. This doesn't apply to the `entity_ids` or `dimension_filters` (in `rule_criteria`) list objects, because they are optional, while all other list objects are required.\n\n**System alert definitions**\n\nThese are the default alert definitions offered by Akamai. You can only edit the `entity_ids` list object for these alerts. All of the points above regarding editing a list object apply here, too.\n\n\n<>\n\n---\n\n\n- __OAuth scopes__.\n\n ```\n monitor:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)\n\n- __CLI__.\n\n ```\n linode-cli alerts definition-update dbaas 457 \\\n--status disabled \\\n--label Read-Write Channel (old)\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)", + "description": "__Beta__ Update an existing alert definition. Include the appropriate `service_type` and `alert_id` as path parameters. To see your currently supported services, run the [List supported service types](https://techdocs.akamai.com/linode-api/reference/get-monitor-services) operation. You also need `read_only` access to the [scope](https://techdocs.akamai.com/linode-api/reference/get-started#oauth-reference) for the selected `service_type`. Only include the objects in the request that you want to update. Leave any object out of the request to leave it set as is.\n\n> \ud83d\udcd8\n>\n> This operation is beta. Call it using the `v4beta` path in its URL.\n\n**User alert definitions**\n\nWhen updating an alert definition you've [created](https://techdocs.akamai.com/linode-api/reference/post-alert-definition-for-service-type), you can change the `status` to `enabled` or `disabled`. You can also modify the `label`, `description`, `severity`, `entity_ids`, `rule_criteria`, `trigger_conditions`, and `channel_ids` objects. If updating the `entity_ids`, `rule_criteria`, or `channel_ids` list objects, these points apply:\n\n- If you want to keep an existing item, you need to include it in the list.\n\n- If you want to remove an existing item, leave it out of the list.\n\n- To add a new item, include it in the list.\n\n- You can't pass an empty list to remove all items. This doesn't apply to the `entity_ids` or `dimension_filters` (in `rule_criteria`) list objects, because they are optional, while all other list objects are required.\n\n**System alert definitions**\n\nThese are the default alert definitions offered by Akamai. You can only edit the `entity_ids` list object for these alerts. All of the points above regarding editing a list object apply here, too.\n\n\n<>\n\n---\n\n\n- __OAuth scopes__.\n\n ```\n monitor:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)\n\n- __CLI__.\n\n ```\n linode-cli alerts definition-update dbaas 457 \\\n--status disabled \\\n--label Read-Write Channel (old)\n ```\n\n [Learn more...](https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli)", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/put-alert-definition" @@ -89100,7 +92503,7 @@ "additionalProperties": false, "properties": { "channel_ids": { - "description": "The identifiers for the alert channels to use for the alert. Run the [List alert channels](https://techdocs.akamai.com/linode-api/reference/get-alerts-notification-channels) operation and store the `id` for the applicable channels.", + "description": "The identifiers for the alert channels to use for the alert. Run the [List alert channels](https://techdocs.akamai.com/linode-api/reference/get-alert-channels) operation and store the `id` for the applicable channels.", "example": [ 546, 392 @@ -89116,7 +92519,7 @@ "type": "string" }, "entity_ids": { - "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response.\n\n> \ud83d\udcd8\n>\n> - You need `read_only` access to the [scope](https://techdocs.akamai.com/linode-api/reference/get-started#oauth-reference) for the `service_type` for each of the `entity_ids`.\n>\n> - The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`, while other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", + "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response. You also need `read_only` access to the [scope](https://techdocs.akamai.com/linode-api/reference/get-started#oauth-reference) for the `service_type` for each of the `entity_ids`.\n\n> \ud83d\udcd8\n>\n> The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`. Other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", "example": [ "13116", "13116", @@ -89400,7 +92803,7 @@ "type": "string" }, "entity_ids": { - "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response.\n\n> \ud83d\udcd8\n>\n> The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`, while other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", + "description": "The `id` for each individual entity from a `service_type`. Get this value by running the list operation for the appropriate entity. For example, if your entity is one of your PostgreSQL databases, run the [List PostgreSQL Managed Databases](https://techdocs.akamai.com/linode-api/reference/get-databases-postgre-sql-instances) operation and store the `id` for the appropriate database from the response.\n\n> \ud83d\udcd8\n>\n> The format `type` for an `entity_id` may vary, based on the Akamai Cloud `service_type`. For example, the `dbaas` service returns an integer value for an `id`, that you'd use for the `entity_id`. Other services may return a string for their `id`. With the Alerts operations, all of these formats are recognized as an `entity_id`, when you include them as a `string`.", "example": [ "126905", "126906", @@ -89421,15 +92824,25 @@ "type": "boolean" }, "id": { - "description": "The unique identifier for the alert definition.", + "description": "__Filterable__ The unique identifier for the alert definition.", "example": 10000, "type": "integer", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "label": { - "description": "The name of the alert definition. This is used for display purposes in Akamai Cloud Manager.", + "description": "__Filterable__ The name of the alert definition. This is used for display purposes in Akamai Cloud Manager.", "example": "High Memory Usage Plan Dedicated", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "rule_criteria": { @@ -89541,10 +92954,7 @@ "type": "object" }, "service_type": { - "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "The identifier for the Akamai Cloud Computing service. Use this value to call out the service in other Monitor operations in the API.", "example": "dbaas", "type": "string" }, @@ -89560,7 +92970,7 @@ "type": "integer" }, "status": { - "description": "The current status of the alert. This can be either `enabled`, `disabled`, `in progress`, or `failed`.", + "description": "__Filterable__ The current status of the alert. This can be either `enabled`, `disabled`, `in progress`, or `failed`.", "enum": [ "enabled", "disabled", @@ -89569,6 +92979,11 @@ ], "example": "enabled", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "trigger_conditions": { @@ -89602,13 +93017,18 @@ "type": "object" }, "type": { - "description": "The type of alert. This can be either `user` for an alert specific to the current user, or `system` for one that applies to all users on your account.", + "description": "__Filterable__ The type of alert. This can be either `user` for an alert specific to the current user, or `system` for one that applies to all users on your account.", "enum": [ "user", "system" ], "example": "system", "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, "x-linode-filterable": true }, "updated": { @@ -89630,7 +93050,7 @@ } } }, - "description": "Returns a paginated list of dashboards." + "description": "The alert definition is updated." }, "default": { "content": { @@ -89702,7 +93122,7 @@ "x-linode-grant": "read_write" }, "delete": { - "description": "__Beta__ Delete a specific alert definition on your account. Include the appropriate `service_type` and `alert_id` as path parameters.\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - You need `read_only` access to the [scope](https://techdocs.akamai.com/linode-api/reference/get-started#oauth-reference) for the target `service_type`.\n>\n> - An [alert definition](https://techdocs.akamai.com/linode-api/reference/get-alert-definitions) with a `type` of `system` can't be deleted.\n>\n> - Currently, only the Managed Databases (`dbaas`) service type is supported.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli alerts definition-delete 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 monitor:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "__Beta__ Delete a specific alert definition on your account. Include the appropriate `service_type` and `alert_id` as path parameters. To see your currently supported services, run the [List supported service types](https://techdocs.akamai.com/linode-api/reference/get-monitor-services) operation.\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - You need `read_only` access to the [scope](https://techdocs.akamai.com/linode-api/reference/get-started#oauth-reference) for the target `service_type`.\n>\n> - An [alert definition](https://techdocs.akamai.com/linode-api/reference/get-alert-definitions) with a `type` of `system` can't be deleted.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli alerts definition-delete dbaas 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 monitor: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-alert-definition" @@ -89782,7 +93202,7 @@ "status": "BETA", "tabs": [ { - "syntax": "linode-cli alerts definition-delete 123", + "syntax": "linode-cli alerts definition-delete dbaas 123", "title": "CLI", "url": "https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli" }, @@ -89815,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" }, @@ -89854,7 +93271,7 @@ }, "/{apiVersion}/monitor/services/{service_type}/dashboards": { "get": { - "description": "__Beta__ Returns all available dashboards for a given service type. Include the appropriate `service_type` as a path parameter.\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - Currently, only the Managed Databases (`dbaas`) service type is supported.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli monitor dashboards-list dbaas\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 monitor:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "__Beta__ Returns all available dashboards for a given service type. Include the appropriate `service_type` as a path parameter. To see your currently supported services, run the [List supported service types](https://techdocs.akamai.com/linode-api/reference/get-monitor-services) operation.\n\n> \ud83d\udcd8\n>\n> This operation is beta. Call it using the `v4beta` path in its URL.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli monitor dashboards-list dbaas\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 monitor: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-dashboards" @@ -89925,15 +93342,12 @@ "type": "string" }, "service_type": { - "description": "The Akamai Cloud Computing service used by this dashboard. Currently, only the Managed Databases (`dbaas`) service is supported.", - "enum": [ - "dbaas" - ], + "description": "The Akamai Cloud Computing service used by this dashboard.", "example": "dbaas", "type": "string" }, "type": { - "description": "The type of dashboard. Currently, this can only be `standard` for a dashboard that uses default formatting.", + "description": "The type of dashboard. Currently, this can only be `standard` for a dashboard, which uses default formatting.", "enum": [ "standard" ], @@ -90156,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" }, @@ -90181,7 +93592,7 @@ }, "/{apiVersion}/monitor/services/{service_type}/metric-definitions": { "get": { - "description": "__Beta__ Returns metrics for a specific service type. Include the appropriate `service_type` as a path parameter.\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - Currently, only the Managed Databases (`dbaas`) service type is supported.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli monitor metrics-list dbaas\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 monitor:read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "__Beta__ Returns metrics for a specific service type. Include the appropriate `service_type` as a path parameter. To see your currently supported services, run the [List supported service types](https://techdocs.akamai.com/linode-api/reference/get-monitor-services) operation.\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - For more details on the metrics available for each service, see the [Metrics reference](https://techdocs.akamai.com/cloud-computing/docs/metrics-dimensions-parameters).\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli monitor metrics-list dbaas\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 monitor: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-monitor-information" @@ -90569,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" }, @@ -90594,7 +94002,7 @@ }, "/{apiVersion}/monitor/services/{service_type}/metrics": { "post": { - "description": "__Beta__ Returns metrics information for the individual entities within a specific service type. Include the appropriate `service_type` as a path parameter. Requires an `authorization: Bearer` [token](https://techdocs.akamai.com/linode-api/reference/post-get-token) you've created for this `service_type`.\n\n> \ud83d\udcd8\n>\n> - Currently, only the Managed Databases (`dbaas`) service type is supported.\n>\n> - This operation uses a different URL and version from standard Linode API operations. Verify you're using the URL with the `monitor-api.linode.com` hostname and include `v2beta` as the version in the URL.", + "description": "__Beta__ Returns metrics information for the individual entities within a specific service type. Include the appropriate `service_type` as a path parameter. To see your currently supported services, run the [List supported service types](https://techdocs.akamai.com/linode-api/reference/get-monitor-services) operation. Also requires an `authorization: Bearer` [token](https://techdocs.akamai.com/linode-api/reference/post-get-token) you've created for this `service_type`.\n\n> \ud83d\udcd8\n>\n> - This operation uses a different URL and version from standard Linode API operations. Verify you're using the URL with the `monitor-api.linode.com` hostname and include `v2beta` as the version in the URL.\n>\n> - For more details on the metrics available for each service, see the [Metrics reference](https://techdocs.akamai.com/cloud-computing/docs/metrics-dimensions-parameters).", "externalDocs": { "description": "See documentation for this operation in Akamai's Linode API", "url": "https://techdocs.akamai.com/linode-api/reference/post-read-metric" @@ -90620,6 +94028,10 @@ "value": "primary" } ], + "group_by": [ + "entity_id", + "node_type" + ], "metrics": [ { "aggregate_function": "avg", @@ -90690,6 +94102,17 @@ }, "type": "array" }, + "group_by": { + "description": "Categorizes response data based on the specified fields:\n\n* `entity_id`. Include this parameter by name to group the response data using the `entity_id` values included in the request.\n\n* `dimension_label`. This represents the desired dimension from a monitoring metric. To get a `dimension_label`, run the [List metrics for a service type](https://techdocs.akamai.com/linode-api/reference/get-monitor-information) operation, review the available `dimensions`, and store the applicable `dimension_label` values.\n\nYou can group these fields using these combinations:\n\n* Group by `entity_id` values and one or more `dimensions_label` values. For example, `[entity_id, node_type]` groups response data based on values set for the `entity_id` parameter and the `node_type` dimension that's available for a `service_type` of `dbaas`.\n\n* Group by only the `entity_id` values. For example, `[entity_id]` exclusively groups response data based on values set for the `entity_id` parameter.\n\n* Group by one or more `dimension_label` values. For example, `[node_type]` groups response data based on the `node_type` dimension that's available for a `service_type` of `dbaas`.\n\nIf you leave this out of a request, data is aggregated across all series.", + "items": { + "example": [ + "entity_id", + "node_type" + ], + "type": "string" + }, + "type": "array" + }, "metrics": { "description": "A list of metric objects, each specifying a metric name and its corresponding aggregation function.", "example": [ @@ -90851,6 +94274,17 @@ }, "type": "array" }, + "group_by": { + "description": "Categorizes response data based on the specified fields:\n\n* `entity_id`. Include this parameter by name to group the response data using the `entity_id` values included in the request.\n\n* `dimension_label`. This represents the desired dimension from a monitoring metric. To get a `dimension_label`, run the [List metrics for a service type](https://techdocs.akamai.com/linode-api/reference/get-monitor-information) operation, review the available `dimensions`, and store the applicable `dimension_label` values.\n\nYou can group these fields using these combinations:\n\n* Group by `entity_id` values and one or more `dimensions_label` values. For example, `[entity_id, node_type]` groups response data based on values set for the `entity_id` parameter and the `node_type` dimension that's available for a `service_type` of `dbaas`.\n\n* Group by only the `entity_id` values. For example, `[entity_id]` exclusively groups response data based on values set for the `entity_id` parameter.\n\n* Group by one or more `dimension_label` values. For example, `[node_type]` groups response data based on the `node_type` dimension that's available for a `service_type` of `dbaas`.\n\nIf you leave this out of a request, data is aggregated across all series.", + "items": { + "example": [ + "entity_id", + "node_type" + ], + "type": "string" + }, + "type": "array" + }, "metrics": { "description": "A list of metric objects, each specifying a metric name and its corresponding aggregation function.", "example": [ @@ -91184,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" }, @@ -91220,13 +94651,13 @@ "x-akamai": { "auth-type": "JWT", "file-path": "paths/aclp-metric-read.yaml", - "path-info": "/{apiVersion}/monitor/services/{service-type}/metrics" + "path-info": "/{apiVersion}/monitor/services/{service_type}/metrics" }, "x-linode-cli-command": "metric" }, "/{apiVersion}/monitor/services/{service_type}/token": { "post": { - "description": "__Beta__ Returns a token that authenticates requests for the entities within a specific service type. Include the appropriate `service_type` as a path parameter. The token has a lifetime of six hours after you create it. For an example of the token generation process, see [Monitor API operation authentication](https://techdocs.akamai.com/linode-api/docs/get-started#monitor-api-operation-authentication).\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - Currently, only the Managed Databases (`dbaas`) service type is supported.\n>\n> - You also need `read_only` access to the [scope](https://techdocs.akamai.com/linode-api/reference/get-started#oauth-reference) for the selected `service_type`.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli monitor token-get dbaas \\\n--entity_ids 189690 \\\n--entity_ids 188020 --json\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 monitor:read_only, :read_only\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "__Beta__ Returns a token that authenticates requests for the entities within a specific service type. Include the appropriate `service_type` as a path parameter. The token has a lifetime of six hours after you create it. For an example of the token generation process, see [Authenticate Monitor API operations](https://techdocs.akamai.com/linode-api/reference/get-started#authenticate-monitor-api-operations).\n\n> \ud83d\udcd8\n>\n> - This operation is beta. Call it using the `v4beta` path in its URL.\n>\n> - To see your currently supported services, run the [List supported service types](https://techdocs.akamai.com/linode-api/reference/get-monitor-services) operation.\n>\n> - You also need `read_only` access to the [scope](https://techdocs.akamai.com/linode-api/reference/get-started#oauth-reference) for the selected `service_type`.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli monitor token-get dbaas \\\n--entity_ids 189690 \\\n--entity_ids 188020 --json\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 monitor:read_only, :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-get-token" @@ -91383,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" }, @@ -91402,7 +94830,7 @@ ], "x-akamai": { "file-path": "paths/aclp-get-token.yaml", - "path-info": "/{apiVersion}/monitor/services/{service-type}/token" + "path-info": "/{apiVersion}/monitor/services/{service_type}/token" }, "x-linode-cli-command": "monitor" }, @@ -91657,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", @@ -91669,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, @@ -91931,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", @@ -91955,7 +95462,7 @@ "additionalProperties": false, "description": "Devices to create for this firewall. When a device is created, the firewall is assigned to its associated service. Currently, devices can be created for Linodes using legacy configuration profiles, Linode interfaces, and NodeBalancers. Firewall devices can't be created for individual legacy configuration profile interfaces.\n\nAdditional devices can be assigned after Firewall creation by using the [Create a firewall device](https://techdocs.akamai.com/linode-api/reference/post-firewall-device) operation.", "properties": { - "interfaces": { + "linode_interfaces": { "description": "An array of Linode interface IDs. A firewall device is created for each ID. For Linodes using Linode interfaces, firewalls need to be assigned to Linode interfaces and not the Linode.", "example": [ 321 @@ -92038,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", @@ -92050,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, @@ -92312,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", @@ -92450,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": { @@ -92460,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", @@ -92472,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, @@ -92734,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", @@ -92777,9 +96527,6 @@ "x-akamai": { "file-path": "schemas/added-get-firewalls-200.yaml" } - }, - "x-example": { - "x-ref": "../examples/get-firewalls-200.json" } } }, @@ -94306,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", @@ -94318,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, @@ -94580,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", @@ -94750,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", @@ -94762,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, @@ -95024,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", @@ -95255,7 +99160,7 @@ }, "/{apiVersion}/networking/firewalls/{firewallId}/devices": { "post": { - "description": "Creates a firewall device, which assigns a firewall to a service (referred to as the device's `entity`) and applies the firewall's rules to the device.\n\n- Currently, devices with `linode`, `interface`, and `nodebalancer` entity types are accepted.\n - The `linode` type is not allowed for Linodes using Linode interfaces.\n - The `interface` type is not allowed for legacy config interfaces. For VPC and public legacy config profile interfaces, the firewall is applied through the `linode` device.\n\n- Firewalls only apply to inbound TCP traffic to NodeBalancers.\n\n- A firewall can be assigned to multiple services at a time.\n\n- A service can have one assigned firewall at a time.\n\n- Assigned Linodes must not have any ongoing live migrations.\n\n- A `firewall_device_add` event is generated when the firewall device is added successfully.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli firewalls device-create 123 \\\n --id 456 \\\n --type \"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 firewall:read_write\n ```\n\n [Learn more...](https://techdocs.akamai.com/linode-api/reference/get-started#oauth)", + "description": "Creates a firewall device, which assigns a firewall to a service (referred to as the device's `entity`) and applies the firewall's rules to the device.\n\n- Currently, devices with `linode`, `linode_interfaces`, and `nodebalancer` entity types are accepted.\n - The `linode` type is not allowed for Linodes using Linode interfaces.\n - The `linode_interfaces` type is not allowed for legacy config interfaces. For VPC and public legacy config profile interfaces, the firewall is applied through the `linode` device.\n\n- Firewalls only apply to inbound TCP traffic to NodeBalancers.\n\n- A firewall can be assigned to multiple services at a time.\n\n- A service can have one assigned firewall at a time.\n\n- Assigned Linodes must not have any ongoing live migrations.\n\n- A `firewall_device_add` event is generated when the firewall device is added successfully.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli firewalls device-create 123 \\\n --id 456 \\\n --type \"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 firewall: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-firewall-device" @@ -95268,7 +99173,7 @@ "allOf": [ { "additionalProperties": false, - "description": "__Read-only__ 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.", @@ -95281,12 +99186,52 @@ "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", "nodebalancer", - "interface" + "linode_interfaces" ], "example": "linode", "type": "string" @@ -95299,7 +99244,6 @@ "type": "string" } }, - "readOnly": true, "type": "object" } ], @@ -95328,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", @@ -95342,7 +99286,7 @@ }, "entity": { "additionalProperties": false, - "description": "__Read-only__ 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.", @@ -95355,12 +99299,52 @@ "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", "nodebalancer", - "interface" + "linode_interfaces" ], "example": "linode", "type": "string" @@ -95373,7 +99357,6 @@ "type": "string" } }, - "readOnly": true, "type": "object" }, "id": { @@ -95390,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", @@ -95538,6 +99521,7 @@ "entity": { "id": 123, "label": "my-linode", + "parent_entity": null, "type": "linode", "url": "/v4/linode/instances/123" }, @@ -95549,6 +99533,7 @@ "entity": { "id": 321, "label": "my-nodebalancer", + "parent_entity": null, "type": "nodebalancer", "url": "/v4/nodebalancers/1234" }, @@ -95560,8 +99545,15 @@ "entity": { "id": 321, "label": "my-interface", - "type": "interface", - "url": "/v4/linode/instances/123/interfaces/12345" + "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" }, "id": 654, "updated": "2025-01-02 00:01:01" @@ -95573,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", @@ -95587,7 +99579,7 @@ }, "entity": { "additionalProperties": false, - "description": "__Read-only__ 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.", @@ -95600,12 +99592,52 @@ "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", "nodebalancer", - "interface" + "linode_interfaces" ], "example": "linode", "type": "string" @@ -95618,7 +99650,6 @@ "type": "string" } }, - "readOnly": true, "type": "object" }, "id": { @@ -95635,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", @@ -95811,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", @@ -95825,7 +99856,7 @@ }, "entity": { "additionalProperties": false, - "description": "__Read-only__ 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.", @@ -95838,12 +99869,52 @@ "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", "nodebalancer", - "interface" + "linode_interfaces" ], "example": "linode", "type": "string" @@ -95856,7 +99927,6 @@ "type": "string" } }, - "readOnly": true, "type": "object" }, "id": { @@ -95873,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", @@ -96131,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", @@ -96143,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, @@ -96405,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", @@ -96555,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", @@ -96567,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, @@ -96829,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", @@ -116068,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", @@ -116080,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, @@ -116342,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", @@ -116492,7 +120799,10 @@ "properties": { "firewall_ids": { "description": "A complete list of firewall IDs to assign to this Linode or NodeBalancer. This operation replaces any existing assignments. To remove all firewalls, pass an empty list, `[]`.", - "example": 1234, + "example": [ + 1, + 2 + ], "items": { "type": "integer" }, @@ -116616,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", @@ -116628,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, @@ -116890,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", @@ -117675,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" @@ -117733,8 +122122,7 @@ } }, "required": [ - "label", - "cluster" + "label" ], "type": "object", "x-akamai": { @@ -118699,7 +123087,7 @@ ], "summary": "Allow access to an Object Storage bucket", "tags": [ - "Bucket access" + "Buckets" ], "x-akamai": { "tabs": [ @@ -118817,7 +123205,7 @@ ], "summary": "Get Object Storage bucket access", "tags": [ - "Bucket access" + "Buckets" ], "x-akamai": { "tabs": [ @@ -118940,7 +123328,7 @@ ], "summary": "Update access to an Object Storage bucket", "tags": [ - "Bucket access" + "Buckets" ], "x-akamai": { "tabs": [ @@ -119113,7 +123501,7 @@ ], "summary": "Get an Object Storage object ACL configuration", "tags": [ - "ACL configurations" + "Buckets" ], "x-akamai": { "tabs": [ @@ -119240,7 +123628,7 @@ ], "summary": "Update an object's ACL configuration", "tags": [ - "ACL configurations" + "Buckets" ], "x-akamai": { "tabs": [ @@ -119488,7 +123876,7 @@ ], "summary": "List Object Storage bucket contents", "tags": [ - "Bucket contents" + "Buckets" ], "x-akamai": { "tabs": [ @@ -120568,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" @@ -120578,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": [ { @@ -120655,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" } } }, @@ -120757,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" @@ -121612,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" @@ -121820,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" @@ -122155,7 +126552,7 @@ ], "summary": "List Object Storage quotas", "tags": [ - "Object Storage quotas" + "Object Storage" ], "x-akamai": { "tabs": [ @@ -122355,7 +126752,7 @@ ], "summary": "Get an Object Storage quota", "tags": [ - "Object Storage quotas" + "Object Storage" ], "x-akamai": { "tabs": [ @@ -122507,7 +126904,7 @@ ], "summary": "Get Object Storage quota usage data", "tags": [ - "Object Storage quotas" + "Object Storage" ], "x-akamai": { "tabs": [ @@ -122889,7 +127286,7 @@ }, "summary": "List Object Storage types", "tags": [ - "Object Storage types" + "Object Storage" ], "x-akamai": { "tabs": [ @@ -130224,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" ], @@ -130237,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" ], @@ -130703,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" ], @@ -130716,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" ], @@ -131155,6 +135540,18 @@ "nullable": true, "type": "string" }, + "severity": { + "default": null, + "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, + 3 + ], + "example": "{{severity}}", + "nullable": true, + "type": "integer" + }, "summary": { "description": "The summary or title for this support ticket.", "example": "{{summary}}", @@ -131318,14 +135715,32 @@ "x-linode-filterable": true }, "opened_by": { - "description": "__Read-only__ The user who opened this ticket.", + "description": "__Filterable__, __Read-only__ The user who opened this ticket.", "example": "some_user", "readOnly": true, "type": "string", - "x-linode-cli-display": 3 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 3, + "x-linode-filterable": true + }, + "severity": { + "description": "__Read-only__ The severity of this ticket.", + "enum": [ + "low", + "moderate", + "major" + ], + "example": "low", + "nullable": true, + "readOnly": true, + "type": "string" }, "status": { - "description": "__Read-only__ The current status of this ticket.", + "description": "__Filterable__, __Read-only__ The current status of this ticket.", "enum": [ "closed", "new", @@ -131333,7 +135748,13 @@ ], "example": "open", "readOnly": true, - "type": "string" + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true }, "summary": { "description": "__Read-only__ The summary or title for this ticket.", @@ -131612,14 +136033,32 @@ "x-linode-filterable": true }, "opened_by": { - "description": "__Read-only__ The user who opened this ticket.", + "description": "__Filterable__, __Read-only__ The user who opened this ticket.", "example": "some_user", "readOnly": true, "type": "string", - "x-linode-cli-display": 3 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 3, + "x-linode-filterable": true + }, + "severity": { + "description": "__Read-only__ The severity of this ticket.", + "enum": [ + "low", + "moderate", + "major" + ], + "example": "low", + "nullable": true, + "readOnly": true, + "type": "string" }, "status": { - "description": "__Read-only__ The current status of this ticket.", + "description": "__Filterable__, __Read-only__ The current status of this ticket.", "enum": [ "closed", "new", @@ -131627,7 +136066,13 @@ ], "example": "open", "readOnly": true, - "type": "string" + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true }, "summary": { "description": "__Read-only__ The summary or title for this ticket.", @@ -131923,14 +136368,32 @@ "x-linode-filterable": true }, "opened_by": { - "description": "__Read-only__ The user who opened this ticket.", + "description": "__Filterable__, __Read-only__ The user who opened this ticket.", "example": "some_user", "readOnly": true, "type": "string", - "x-linode-cli-display": 3 + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-cli-display": 3, + "x-linode-filterable": true + }, + "severity": { + "description": "__Read-only__ The severity of this ticket.", + "enum": [ + "low", + "moderate", + "major" + ], + "example": "low", + "nullable": true, + "readOnly": true, + "type": "string" }, "status": { - "description": "__Read-only__ The current status of this ticket.", + "description": "__Filterable__, __Read-only__ The current status of this ticket.", "enum": [ "closed", "new", @@ -131938,7 +136401,13 @@ ], "example": "open", "readOnly": true, - "type": "string" + "type": "string", + "x-akamai": { + "labels": [ + "Filterable" + ] + }, + "x-linode-filterable": true }, "summary": { "description": "__Read-only__ The summary or title for this ticket.", @@ -132783,7 +137252,7 @@ }, "/{apiVersion}/tags": { "post": { - "description": "Creates a new tag and lets you optionally add it to specific objects. Tags are labels you can attach to objects in your account. Use them to specify and group attributes of objects that are relevant to you. Currently, you can add a tag to your `linodes`, your `nodebalancers`, the `domains` for your Linodes, and the `volumes` on your Linodes.\n\n> \ud83d\udcd8\n>\n> - This operation can only be accessed by account users with _unrestricted_ access.\n>\n> - If you don't add a tag to a supported object with this operation, you can use that object's update operation to later add the tag you created.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli tags create \\\n --label 'example tag' \\\n --linodes 123 \\\n --linodes 456 \\\n --volumes 9082 \\\n --volumes 10003\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": "Creates a new tag and lets you optionally add it to specific objects. Tags are labels you can attach to objects in your account. Use them to specify and group attributes of objects that are relevant to you. Currently, you can add a tag to your `linodes`, your `nodebalancers`, the `domains` for your Linodes, and the `volumes` on your Linodes.\n\n> \ud83d\udcd8\n>\n> - This operation can only be accessed by account users with _unrestricted_ access. Talk to your local account administrator about access management.\n>\n> - If you don't add a tag to a supported object with this operation, you can use that object's update operation to later add the tag you created.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli tags create \\\n --label 'example tag' \\\n --linodes 123 \\\n --linodes 456 \\\n --volumes 9082 \\\n --volumes 10003\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-tag" @@ -132972,7 +137441,7 @@ "x-linode-grant": "unrestricted only" }, "get": { - "description": "Returns a paginated list of tags you've [created](https://techdocs.akamai.com/linode-api/reference/post-tag) on your account.\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli tags list\nlinode-cli tags ls\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 tags you've [created](https://techdocs.akamai.com/linode-api/reference/post-tag) on your account.\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access. Talk to your local account administrator about access management.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli tags list\nlinode-cli tags ls\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-tags" @@ -133173,7 +137642,7 @@ }, "/{apiVersion}/tags/{tagLabel}": { "get": { - "description": "Returns a paginated list of all objects you've tagged with the specified tag. The response includes a mixed collection of all object types.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access.\n\n\n<>\n\n---\n\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 all objects you've tagged with the specified tag. The response includes a mixed collection of all object types.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access. Talk to your local account administrator about access management.\n\n\n<>\n\n---\n\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-tagged-objects" @@ -133253,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": { @@ -133563,6 +138032,18 @@ "readOnly": true, "type": "integer" }, + "maintenance_policy": { + "description": "__Beta__ The maintenance policy configured by the user for this Linode. Review [maintenance policy](https://techdocs.akamai.com/cloud-computing/docs/host-maintenance-policy) documentation for more details.", + "enum": [ + "linode/migrate", + "linode/power_off_on" + ], + "example": "linode/migrate", + "type": "string", + "x-akamai": { + "status": "BETA" + } + }, "placement_group": { "additionalProperties": false, "description": "__Read-only__ Details on the [placement group](https://www.linode.com/docs/products/compute/compute-instances/guides/placement-groups/) that this Linode belongs to. Empty if the Linode isn't in a placement group.", @@ -134323,7 +138804,7 @@ "x-linode-cli-skip": true }, "delete": { - "description": "Removes a tag from all objects and deletes it.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli tags delete\nlinode-cli tags rm\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": "Removes a tag from all objects and deletes it.\n\n> \ud83d\udcd8\n>\n> This operation can only be accessed by account users with _unrestricted_ access. Talk to your local account administrator about access management.\n\n\n<>\n\n---\n\n\n- __CLI__.\n\n ```\n linode-cli tags delete\nlinode-cli tags rm\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/delete-tag" @@ -140767,6 +145248,10 @@ "description": "Use a placement group to distribute your compute instances in a single core compute region, to meet your need. You can group them together to reduce latency or spread them apart to promote high-availability.", "name": "Placement groups" }, + { + "description": "Use the images/sharegroups endpoints to create, update, and delete images share groups.", + "name": "Private Image Sharing" + }, { "description": "Use the Profile endpoints to manage your Linode user profile preferences and security settings. This includes creating and maintaining personal access tokens, creating and maintaining SSH keys, confirming and enabling two-factor authentication, and updating user and profile preferences.", "name": "Profile" @@ -140795,6 +145280,10 @@ "description": "Use the VPCs endpoints to view, create, and manage Virtual Private Cloud (VPC) and VPC Subnet resources.", "name": "VPCs" }, + { + "description": "Use the maintenance endpoints to view maintenance policies that are available for your Linodes.", + "name": "Maintenance" + }, { "description": "Use the Monitor endpoints to view Dashboards and Metrics", "name": "Monitor"