CloudQuery api-keys API
The api-keys API from CloudQuery — 2 operation(s) for api-keys.
The api-keys API from CloudQuery — 2 operation(s) for api-keys.
openapi: 3.1.0
info:
contact:
email: support@cloudquery.io
name: CloudQuery Support Team
url: https://cloudquery.io
description: 'Welcome to the CloudQuery Platform API documentation! This API can be used to interact with the CloudQuery platform. As a user, the API allows you to search the CloudQuery asset inventory, run SQL queries against the data warehouse, save and load searches, and much more. As an administrator, it allows you to manage your teams, syncs, and other objects.
### Authentication
The API is secured using bearer tokens. To get started, you can generate an API key for your Platform deployment from your platform dashboard. For a step-by-step guide, see: https://www.cloudquery.io/docs/cli/managing-cloudquery/deployments/generate-api-key.
The base URL for the API depends on where your CloudQuery Platform is hosted. If running locally, this is usually http://localhost:3000/api. In a production deployment it should be an HTTPS URL. For purposes of illustration, we will assume the platform instance is available at https://cloudquery.mycompany.com. In this case, the base API endpoint will be https://cloudquery.mycompany.com/api.
### Example Request
To test your connection to the API, we can use the `/plugins` endpoint. For example:
`curl -v -H "Authorization: Bearer $CLOUDQUERY_API_KEY" \ https://cloudquery.mycompany.com/api/plugins`
'
license:
name: MIT
url: https://spdx.org/licenses/MIT
termsOfService: https://www.cloudquery.io/terms
title: CloudQuery Platform OpenAPI Spec admin api-keys API
version: 1.0.0
security:
- bearerAuth: []
- cookieAuth: []
tags:
- name: api-keys
paths:
/apikeys:
get:
description: List all API Keys
operationId: PlatformListAPIKeys
tags:
- api-keys
parameters:
- $ref: '#/components/parameters/platform_per_page'
- $ref: '#/components/parameters/platform_page'
responses:
'200':
description: Response
content:
application/json:
schema:
required:
- items
- metadata
- allowed_roles
properties:
items:
items:
$ref: '#/components/schemas/PlatformAPIKey'
type: array
metadata:
$ref: '#/components/schemas/PlatformListMetadata'
allowed_roles:
description: List of allowed roles when creating a new API key
type: array
items:
$ref: '#/components/schemas/PlatformRole'
'401':
$ref: '#/components/responses/PlatformRequiresAuthentication'
'404':
$ref: '#/components/responses/PlatformNotFound'
'500':
$ref: '#/components/responses/PlatformInternalError'
post:
description: Create new API Key.
operationId: PlatformCreateAPIKey
tags:
- api-keys
requestBody:
content:
application/json:
schema:
type: object
required:
- expires_at
- name
properties:
name:
$ref: '#/components/schemas/PlatformAPIKeyName'
expires_at:
type: string
format: date-time
roles:
type: array
items:
$ref: '#/components/schemas/PlatformRoleID'
responses:
'201':
description: Response
content:
application/json:
schema:
$ref: '#/components/schemas/PlatformAPIKey'
'400':
$ref: '#/components/responses/PlatformBadRequest'
'401':
$ref: '#/components/responses/PlatformRequiresAuthentication'
'403':
$ref: '#/components/responses/PlatformForbidden'
'422':
$ref: '#/components/responses/PlatformUnprocessableEntity'
'500':
$ref: '#/components/responses/PlatformInternalError'
/apikeys/{apikey_id}:
delete:
description: Delete API Key. This will remove any future access by this API Key.
operationId: PlatformDeleteAPIKey
tags:
- api-keys
parameters:
- $ref: '#/components/parameters/platform_apikey_id'
responses:
'204':
description: Deleted
'400':
$ref: '#/components/responses/PlatformBadRequest'
'401':
$ref: '#/components/responses/PlatformRequiresAuthentication'
'404':
$ref: '#/components/responses/PlatformNotFound'
'422':
$ref: '#/components/responses/PlatformUnprocessableEntity'
'500':
$ref: '#/components/responses/PlatformInternalError'
components:
schemas:
PlatformListMetadata:
required:
- page_size
properties:
total_count:
type: integer
last_page:
type: integer
page_size:
type: integer
time_ms:
type: integer
PlatformFieldError:
allOf:
- $ref: '#/components/schemas/PlatformBasicError'
- properties:
errors:
items:
type: string
type: array
field_errors:
additionalProperties:
type: string
type: object
type: object
PlatformRoleID:
description: The unique ID for the role.
type: string
format: uuid
x-go-name: RoleID
PlatformRole:
type: object
description: Role
required:
- id
- name
- description
- permissions
- created_by
- created_at
- updated_at
- type
properties:
id:
description: The unique ID for the role.
type: string
format: uuid
x-go-name: ID
name:
type: string
description:
type: string
permissions:
type: array
items:
$ref: '#/components/schemas/PlatformRBACPermission'
created_by:
$ref: '#/components/schemas/PlatformCreatedBy'
created_at:
example: '2017-07-14T16:53:42Z'
format: date-time
type: string
updated_at:
example: '2017-07-14T16:53:42Z'
format: date-time
type: string
type:
$ref: '#/components/schemas/PlatformRoleType'
PlatformRBACPermissionID:
description: The unique ID for the data permission.
type: string
format: uuid
x-go-name: RBACPermissionID
PlatformAPIKeyID:
description: ID of the API key
type: string
format: uuid
example: 12345678-1234-1234-1234-1234567890ab
x-go-name: APIKeyID
PlatformUserName:
description: The unique name for the user.
minLength: 1
maxLength: 255
pattern: ^[a-zA-Z\p{L}][a-zA-Z\p{L} \-']*$
x-pattern-message: can contain only letters, spaces, hyphens, and apostrophes, starting with a letter
type: string
example: Sarah O'Connor
PlatformRBACPermission:
type: object
required:
- id
- name
- description
- query
- created_by
- created_at
- updated_at
- number_of_affected_roles
- number_of_affected_users
properties:
id:
$ref: '#/components/schemas/PlatformRBACPermissionID'
name:
type: string
description:
type: string
query:
type: string
created_by:
$ref: '#/components/schemas/PlatformCreatedBy'
created_at:
example: '2017-07-14T16:53:42Z'
format: date-time
type: string
updated_at:
example: '2017-07-14T16:53:42Z'
format: date-time
type: string
number_of_affected_roles:
type: integer
number_of_affected_users:
type: integer
PlatformAPIKey:
description: API Key to interact with CloudQuery Platform
type: object
required:
- id
- name
- expires_at
- expired
- roles
properties:
name:
$ref: '#/components/schemas/PlatformAPIKeyName'
created_by:
type: string
example: user@example.com
description: email of the user that created the API key
id:
$ref: '#/components/schemas/PlatformAPIKeyID'
key:
type: string
description: API key. Will be shown only in the response when creating the key.
example: 1234567890abcdef1234567890abcdef
created_at:
type: string
format: date-time
example: '2017-07-14T16:53:42Z'
expires_at:
type: string
description: Timestamp at which API key will stop working
format: date-time
example: '2017-07-14T16:53:42Z'
last_access_at:
type: string
format: date-time
example: '2017-07-14T16:53:42Z'
description: Timestamp at which API key was last used - accurate to the day only.
expired:
type: boolean
description: Whether the API key has expired or not
example: false
roles:
type: array
items:
$ref: '#/components/schemas/PlatformRole'
PlatformRoleType:
type: string
enum:
- admin:write
- admin:read
- general:read
- general:write
- ci
- schema-only
- custom
x-enum-varnames:
- AdminWrite
- AdminRead
- GeneralRead
- GeneralWrite
- CI
- SchemaOnly
- Custom
PlatformAPIKeyName:
description: Name of the API key
type: string
example: cli-api-key
maxLength: 255
minLength: 1
pattern: ^(?:[a-zA-Z0-9][a-zA-Z0-9- ]*)?[a-zA-Z0-9]$
x-pattern-message: can contain only letters, numbers, spaces, and hyphens, starting and ending with a letter or number
PlatformBasicError:
additionalProperties: false
description: Basic Error
required:
- message
- status
properties:
message:
type: string
status:
type: integer
title: Basic Error
type: object
PlatformUserID:
description: ID of the User
type: string
format: uuid
example: 12345678-1234-1234-1234-1234567890ab
x-go-name: UserID
PlatformCreatedBy:
type: object
required:
- id
- name
- email
properties:
id:
$ref: '#/components/schemas/PlatformUserID'
name:
$ref: '#/components/schemas/PlatformUserName'
email:
type: string
responses:
PlatformBadRequest:
content:
application/json:
schema:
$ref: '#/components/schemas/PlatformFieldError'
description: Bad request
PlatformInternalError:
content:
application/json:
schema:
$ref: '#/components/schemas/PlatformBasicError'
description: Internal Error
PlatformNotFound:
content:
application/json:
schema:
$ref: '#/components/schemas/PlatformBasicError'
description: Resource not found
PlatformForbidden:
content:
application/json:
schema:
$ref: '#/components/schemas/PlatformFieldError'
description: Forbidden
PlatformUnprocessableEntity:
content:
application/json:
schema:
$ref: '#/components/schemas/PlatformFieldError'
description: UnprocessableEntity
PlatformRequiresAuthentication:
content:
application/json:
schema:
$ref: '#/components/schemas/PlatformBasicError'
description: Requires authentication
parameters:
platform_apikey_id:
name: apikey_id
in: path
required: true
schema:
$ref: '#/components/schemas/PlatformAPIKeyID'
x-go-name: APIKeyID
platform_page:
description: Page number of the results to fetch
in: query
name: page
required: false
schema:
default: 1
minimum: 1
type: integer
format: int64
platform_per_page:
description: The number of results per page (max 1000).
in: query
name: per_page
required: false
schema:
default: 100
maximum: 1000
minimum: 1
type: integer
format: int64
securitySchemes:
bearerAuth:
scheme: bearer
type: http
basicAuth:
scheme: basic
type: http
cookieAuth:
scheme: cookie
type: http