Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scaffold autoscaler openapi spec #949

Merged
32 changes: 32 additions & 0 deletions specification/DigitalOcean-public.v2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,12 @@ tags:
For documentation on app specifications (`AppSpec` objects), please refer to the
[product documentation](https://docs.digitalocean.com/products/app-platform/reference/app-spec/)).

- name: Autoscale Pools
StephenVarela marked this conversation as resolved.
Show resolved Hide resolved
description: |-
Autoscale for droplets manages horizontal scaling for your applications based on resource usage or a static configuration.
StephenVarela marked this conversation as resolved.
Show resolved Hide resolved
When you use autoscaling, you create one or more autoscaling pools. An autoscaling pool has 2 components: scaling configuration, which determines how the pool scales up and down,
and a Droplet template, which defines the configuration of the Droplets in the pool.

- name: Billing
description: |-
The billing endpoints allow you to retrieve your account balance, invoices
Expand Down Expand Up @@ -998,6 +1004,32 @@ paths:
post:
$ref: 'resources/droplets/droplets_destroy_retryWithAssociatedResources.yml'

/v2/droplets/autoscale:
get:
$ref: 'resources/autoscale_pools/autoscale_pool_list.yml'
post:
$ref: 'resources/autoscale_pools/autoscale_pool_create.yml'

/v2/droplets/autoscale/{autoscale_pool_id}:
get:
$ref: 'resources/autoscale_pools/autoscale_pool_get.yml'
put:
$ref: 'resources/autoscale_pools/autoscale_pool_update.yml'
delete:
$ref: 'resources/autoscale_pools/autoscale_pool_delete.yml'

/v2/droplets/autoscale/{autoscale_pool_id}/dangerous:
delete:
$ref: 'resources/autoscale_pools/autoscale_pool_delete_dangerous.yml'

/v2/droplets/autoscale/{autoscale_pool_id}/members:
get:
$ref: 'resources/autoscale_pools/autoscale_pool_list_members.yml'

/v2/droplets/autoscale/{autoscale_pool_id}/history:
get:
$ref: 'resources/autoscale_pools/autoscale_pool_list_history.yml'

/v2/firewalls:
get:
$ref: 'resources/firewalls/firewalls_list.yml'
Expand Down
45 changes: 45 additions & 0 deletions specification/resources/autoscale_pools/autoscale_pool_create.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
operationId: autoscalepools_create

summary: Create a New Autoscale Pool

description: |
To create a new autoscale pool, send a POST request to `/v2/droplets/autoscale` setting the required attributes.

The response body will contain a JSON object with a key called `autoscale_pool` containing the standard attributes for the new autoscale pool.

tags:
- Autoscale Pools

requestBody:
content:
application/json:
schema:
$ref: 'models/autoscale_pool_create.yml'
examples:
Autoscale Create Request Dynamic Config:
$ref: 'examples.yml#/autoscale_create_request_dynamic'
Autoscale Create Request Static Config:
$ref: 'examples.yml#/autoscale_create_request_static'

responses:
'202':
$ref: 'responses/autoscale_pool_create.yml'

'401':
$ref: '../../shared/responses/unauthorized.yml'

'429':
$ref: '../../shared/responses/too_many_requests.yml'

'500':
$ref: '../../shared/responses/server_error.yml'

default:
$ref: '../../shared/responses/unexpected_error.yml'

x-codeSamples:
- $ref: 'examples/curl/autoscale_pool_create.yml'

security:
- bearer_auth:
- 'droplet:create'
40 changes: 40 additions & 0 deletions specification/resources/autoscale_pools/autoscale_pool_delete.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
operationId: autoscalepools_delete

summary: Delete autoscale pool

description: |
To destroy an autoscale pool, send a DELETE request to the `/v2/droplets/autoscale/$AUTOSCALE_POOL_ID` endpoint.

A successful response will include a 202 response code and no content.

tags:
- Autoscale Pools

parameters:
- $ref: 'parameters.yml#/autoscale_pool_id'

responses:
'202':
$ref: '../../shared/responses/no_content.yml'

'401':
$ref: '../../shared/responses/unauthorized.yml'

'404':
$ref: '../../shared/responses/not_found.yml'

'429':
$ref: '../../shared/responses/too_many_requests.yml'

'500':
$ref: '../../shared/responses/server_error.yml'

default:
$ref: '../../shared/responses/unexpected_error.yml'

x-codeSamples:
- $ref: 'examples/curl/autoscale_pool_delete.yml'

security:
- bearer_auth:
- 'droplet:delete'
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
operationId: autoscalepools_delete_dangerous

summary: Delete autoscale pool and resources

description: |
To destroy an autoscale pool and its associated resources (Droplets),
send a DELETE request to the `/v2/droplets/autoscale/$AUTOSCALE_POOL_ID/dangerous` endpoint.

tags:
- Autoscale Pools

parameters:
- $ref: 'parameters.yml#/autoscale_pool_id'
- $ref: 'parameters.yml#/x_dangerous'

responses:
'202':
$ref: '../../shared/responses/no_content.yml'

'401':
$ref: '../../shared/responses/unauthorized.yml'

'404':
$ref: '../../shared/responses/not_found.yml'

'429':
$ref: '../../shared/responses/too_many_requests.yml'

'500':
$ref: '../../shared/responses/server_error.yml'

default:
$ref: '../../shared/responses/unexpected_error.yml'

x-codeSamples:
- $ref: 'examples/curl/autoscale_pool_delete_dangerous.yml'

security:
- bearer_auth:
- 'droplet:delete'
39 changes: 39 additions & 0 deletions specification/resources/autoscale_pools/autoscale_pool_get.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
operationId: autoscalepools_get

summary: Retrieve an Existing Autoscale Pool

description: |
To show information about an individual autoscale pool, send a GET request to
`/v2/droplets/autoscale/$AUTOSCALE_POOL_ID`.

tags:
- Autoscale Pools

parameters:
- $ref: 'parameters.yml#/autoscale_pool_id'

responses:
'200':
$ref: 'responses/existing_autoscale_pool.yml'

'401':
$ref: '../../shared/responses/unauthorized.yml'

'404':
$ref: '../../shared/responses/not_found.yml'

'429':
$ref: '../../shared/responses/too_many_requests.yml'

'500':
$ref: '../../shared/responses/server_error.yml'

default:
$ref: '../../shared/responses/unexpected_error.yml'

x-codeSamples:
- $ref: 'examples/curl/autoscale_pool_get.yml'

security:
- bearer_auth:
- 'droplet:read'
39 changes: 39 additions & 0 deletions specification/resources/autoscale_pools/autoscale_pool_list.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
operationId: autoscalepools_list

summary: List All Autoscale Pools

description: |
To list all autoscale pools in your team, send a GET request to `/v2/droplets/autoscale`.
The response body will be a JSON object with a key of `autoscale_pools` containing an array of autoscale pool objects.
These each contain the standard autoscale pool attributes.

tags:
- Autoscale Pools

parameters:
- $ref: '../../shared/parameters.yml#/per_page'
- $ref: '../../shared/parameters.yml#/page'

responses:
'200':
$ref: 'responses/all_autoscale_pools.yml'

'401':
$ref: '../../shared/responses/unauthorized.yml'

'429':
$ref: '../../shared/responses/too_many_requests.yml'

'500':
$ref: '../../shared/responses/server_error.yml'

default:
$ref: '../../shared/responses/unexpected_error.yml'

x-codeSamples:
- $ref: 'examples/curl/autoscale_pools_list.yml'


security:
- bearer_auth:
- 'droplet:read'
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
operationId: autoscalepools_list_history

summary: List history events

description: |
To list all of the scaling history events of an autoscale pool, send a GET request to `/v2/droplets/autoscale/$AUTOSCALE_POOL_ID/history`.

The response body will be a JSON object with a key of `history`. This will be
set to an array containing objects each representing a history event.

tags:
- Autoscale Pools

parameters:
- $ref: '../../shared/parameters.yml#/per_page'
- $ref: '../../shared/parameters.yml#/page'
- $ref: 'parameters.yml#/autoscale_pool_id'

responses:
'200':
$ref: 'responses/history_events.yml'

'401':
$ref: '../../shared/responses/unauthorized.yml'

'404':
$ref: '../../shared/responses/not_found.yml'

'429':
$ref: '../../shared/responses/too_many_requests.yml'

'500':
$ref: '../../shared/responses/server_error.yml'

default:
$ref: '../../shared/responses/unexpected_error.yml'

x-codeSamples:
- $ref: 'examples/curl/autoscale_pool_history_events.yml'


security:
- bearer_auth:
- 'droplet:read'
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
operationId: autoscalepools_list_members

summary: List members

description: |
To list the members (resources) in an autoscale pool, send a GET request to `/v2/droplets/autoscale/$AUTOSCALE_POOL_ID/members`.
StephenVarela marked this conversation as resolved.
Show resolved Hide resolved

The response body will be a JSON object with a key of `droplets`. This will be
set to an array containing information about each of the Droplets in the autoscale pool.

tags:
- Autoscale Pools

parameters:
- $ref: '../../shared/parameters.yml#/per_page'
- $ref: '../../shared/parameters.yml#/page'
- $ref: 'parameters.yml#/autoscale_pool_id'

responses:
'200':
$ref: 'responses/all_members.yml'

'401':
$ref: '../../shared/responses/unauthorized.yml'

'404':
$ref: '../../shared/responses/not_found.yml'

'429':
$ref: '../../shared/responses/too_many_requests.yml'

'500':
$ref: '../../shared/responses/server_error.yml'

default:
$ref: '../../shared/responses/unexpected_error.yml'

x-codeSamples:
- $ref: 'examples/curl/autoscale_pool_members.yml'


security:
- bearer_auth:
- 'droplet:read'
49 changes: 49 additions & 0 deletions specification/resources/autoscale_pools/autoscale_pool_update.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
operationId: autoscalepools_update

summary: Update Autoscale Pool

description: |
To update the configuration of an existing autoscale pool, send a PUT request to
`/v2/droplets/autoscale/$AUTOSCALE_POOL_ID`. The request should contain a full representation
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`/v2/droplets/autoscale/$AUTOSCALE_POOL_ID`. The request should contain a full representation
`/v2/droplets/autoscale/$AUTOSCALE_POOL_ID`. The request will contain a full representation

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm maybe must?

  • Trying to indicate to the user that they need to provide the full representation and not just the fields they are trying to change

of the autoscale pool including existing attributes.

tags:
- Autoscale Pools

parameters:
- $ref: 'parameters.yml#/autoscale_pool_id'

requestBody:
content:
application/json:
schema:
$ref: 'models/autoscale_pool_create.yml'
examples:
Autoscale Update Request:
$ref: 'examples.yml#/autoscale_update_request'

responses:
'200':
$ref: 'responses/autoscale_pool_create.yml'

'401':
$ref: '../../shared/responses/unauthorized.yml'

'404':
$ref: '../../shared/responses/not_found.yml'

'429':
$ref: '../../shared/responses/too_many_requests.yml'

'500':
$ref: '../../shared/responses/server_error.yml'

default:
$ref: '../../shared/responses/unexpected_error.yml'

x-codeSamples:
- $ref: 'examples/curl/autoscale_pool_update.yml'

security:
- bearer_auth:
- 'droplet:create'
Loading