openapi: 3.0.3 info: contact: email: admin@athenian.co name: the administrator by email description: 'Server version: {{ server_version }} built on {{ build_date }} @ [{{ commit }}](https://github.com/athenianco/athenian-api/commit/{{ commit }}) Origin GitHub repository: [athenianco/api-spec](https://github.com/athenianco/api-spec). Authorization persists between sessions. Marks: * 🛡️ endpoint requires account admin privileges. * 👤 endpoint only works with JWT authentication.
List of common server errors. * __500__ endpoint crashed. We reported the incident to Sentry and will fix it soon! Please include the value of `instance` in the response if you contact the support. Repeating the request will not help, most probably. * __501__ some functions are missing, either because they are not implemented yet or a non-critical runtime dependency is not satisfied. Repeating the request will not help, guaranteed. * __502__ server crashed badly, either due to a memory access violation in native code or running out of memory. We reported this incident to Sentry and will fix it soon! Try repeating the request. * __503__ server has not fully launched yet, e.g. hasn''t connected to the database; server is shutting down; we are experiencing a partial outage. Try repeating the request. * __504__ endpoint took too much time and was interrupted. We reported the incident to Sentry and will see how to improve the performance. Repeating the request will not help, most probably.
' license: name: CC-BY-4.0 title: '{{ title }} align events API' version: 2.1.86 servers: - description: '{{ server_description }} - {{ server_url }}' url: '{{ server_url }}/v1' tags: - name: events paths: /events/clear_cache: post: operationId: clear_precomputed_events requestBody: content: application/json: schema: $ref: '#/components/schemas/DeleteEventsCacheRequest' x-body-name: body responses: 200: content: application/json: schema: enum: - {} type: object description: Empty response indicates a successful operation. 403: content: application/json: schema: $ref: '#/components/schemas/GenericError' description: Calling user is not allowed to access the specified repositories. 404: content: application/json: schema: $ref: '#/components/schemas/GenericError' description: The user does not belong to the specified account. 422: content: application/json: schema: $ref: '#/components/schemas/NoSourceDataError' description: The account's installation has not finished yet. 424: content: application/json: schema: $ref: '#/components/schemas/MissingSettingsError' description: One or more logical repositories miss the release settings. security: - bearerAuth: [] - apiKeyAuth: [] summary: Reset the precomputed data related to the pushed events. tags: - events x-codegen-request-body-name: body x-openapi-router-controller: athenian.api.controllers.events_controller /events/deployments: post: operationId: notify_deployments requestBody: content: application/json: schema: $ref: '#/components/schemas/NotifyDeploymentsRequest' x-body-name: body responses: 200: content: application/json: schema: properties: deployments: $ref: '#/components/schemas/NotifiedDeployments' required: - deployments type: object description: Details about the accepted deployment notifications. 400: $ref: '#/components/responses/InvalidRequestErrorResponse' 403: content: application/json: schema: $ref: '#/components/schemas/GenericError' description: Calling user is not allowed to access the specified repositories. 404: content: application/json: schema: $ref: '#/components/schemas/GenericError' description: The specified account does not exist or the user is not a member. 422: content: application/json: schema: $ref: '#/components/schemas/NoSourceDataError' description: The account's installation has not finished yet. security: - apiKeyAuth: [] summary: Notify about new deployments. tags: - events x-codegen-request-body-name: body x-openapi-router-controller: athenian.api.controllers.events_controller /events/deployment/{name}/labels: parameters: - description: Name of the deployment. in: path name: name required: true schema: type: string style: simple get: operationId: get_deployment_labels responses: 200: $ref: '#/components/responses/DeploymentLabelsResponse' 404: $ref: '#/components/responses/DeploymentNotFoundResponse' security: - apiKeyAuth: [] tags: - events summary: Retrieve the labels associated with the deployment. x-openapi-router-controller: athenian.api.controllers.events_controller patch: operationId: modify_deployment_labels requestBody: content: application/json: schema: $ref: '#/components/schemas/DeploymentModifyLabelsRequest' x-body-name: body responses: 200: $ref: '#/components/responses/DeploymentLabelsResponse' 400: $ref: '#/components/responses/InvalidRequestErrorResponse' 404: $ref: '#/components/responses/DeploymentNotFoundResponse' security: - apiKeyAuth: [] summary: 'Modify the labels for the deployment applying the given instructions. ' tags: - events x-codegen-request-body-name: body x-openapi-router-controller: athenian.api.controllers.events_controller /events/releases: post: operationId: notify_releases requestBody: content: application/json: schema: $ref: '#/components/schemas/NotifyReleasesRequest' x-body-name: body responses: 200: content: application/json: schema: $ref: '#/components/schemas/NotifyReleasesResponse' description: Summary of the accepted and the rejected releases. 400: $ref: '#/components/responses/InvalidRequestErrorResponse' 403: content: application/json: schema: $ref: '#/components/schemas/GenericError' description: Calling user is not allowed to access the specified repositories. 404: content: application/json: schema: $ref: '#/components/schemas/GenericError' description: The specified account does not exist or the user is not a member. 422: content: application/json: schema: $ref: '#/components/schemas/NoSourceDataError' description: The account's installation has not finished yet. security: - apiKeyAuth: [] summary: Notify about new releases. The release settings must be set to "event". tags: - events x-codegen-request-body-name: body x-openapi-router-controller: athenian.api.controllers.events_controller components: schemas: ReleaseNotificationStatus: description: 'What happened to the notification: - `accepted_resolved`: all is OK, we found the repository reference. - `accepted_pending`: we haven''t found the repository reference, it will take up to 1 hour for the release to become visible. - `ignored_duplicate`: we found another release with the same name in the same repository in the request and hence skipped. ' enum: - accepted-resolved - accepted-pending - ignored-duplicate type: string DeleteEventsCacheRequest: additionalProperties: false description: Definition of the cache reset operation. example: account: 1 repositories: - github.com/athenianco/athenian-api targets: - release properties: account: description: Account ID. type: integer repositories: $ref: '#/components/schemas/RepositorySet' targets: description: Parts of the precomputed cache to reset. items: enum: - release - deployment type: string type: array required: - account - repositories - targets type: object NoSourceDataError: $ref: '#/components/schemas/GenericError' RepositoryID: description: 'Repository name which uniquely identifies any repository in any service provider. The format matches the repository URL without the protocol part. No ".git" should be appended. We support a special syntax for repository sets: "{reposet id}" adds all the repositories from the given set. ' example: github.com/athenianco/athenian-webapp type: string MissingSettingsError: $ref: '#/components/schemas/GenericError' GenericError: example: detail: 'Unsupported metric: pr-xxx-time' status: 400 title: Bad request syntax or unsupported method. type: /errors/InvalidRequestError properties: detail: description: Human-readable explanation specific to this occurrence of the problem. example: 'Unsupported metric: pr-xxx-time' type: string instance: description: URI reference that identifies the specific occurrence of the problem. It is `null` for 4xx, Sentry event ID for 5xx. example: 2763c4eabd7240f59829ee1a02546293 type: string status: description: Duplicated HTTP status code. example: 400 type: integer title: description: Short, human-readable summary of the problem type. example: Bad request syntax or unsupported method. type: string type: description: URI reference that identifies the problem type (RFC 7807). example: /errors/InvalidRequestError type: string required: - status - title - type type: object NotifiedDeployments: description: The list of notified deployments. example: - name: prod-1984-05-01-ABCDEFGH resolved: true items: additionalProperties: false properties: name: description: Name of the deployment. type: string resolved: description: 'Value indicating whether we resolved the received Git reference on the spot. `false` is probably still OK for new references that we haven''t synchronized yet. ' type: boolean required: - name - resolved type: object type: array NotifyReleasesResponse: description: 'Response from `/events/releases`. The status of each release notification in the order of `NotifyReleasesRequest`. ' items: $ref: '#/components/schemas/ReleaseNotificationStatus' type: array DeploymentLabels: description: Arbitrary key-value metadata that associates with the deployment. type: object DeploymentModifyLabelsRequest: additionalProperties: false description: 'Request to modify the labels associated with the deployment. Each property in this object represents a command to execute. ' example: {} properties: delete: description: Delete the labels with the given keys. Unexisting labels are ignored. items: type: string type: array upsert: allOf: - description: Set the given labels, overwriting values for already associated labels. - $ref: '#/components/schemas/DeploymentLabels' type: object DeploymentConclusion: description: State of the completed deployment. Case-insensitive. enum: - SUCCESS - FAILURE - CANCELLED type: string InvalidRequestError: allOf: - $ref: '#/components/schemas/GenericError' - properties: pointer: description: Path to the offending request item. example: .granularity type: string type: object NotifyReleasesRequest: description: 'Request body of `/events/releases`: list of release notifications. ' items: $ref: '#/components/schemas/ReleaseNotification' type: array RepositorySet: description: Set of repositories. An empty list raises a bad response 400. Duplicates are automatically ignored. example: - github.com/athenianco/athenian-webapp - github.com/athenianco/athenian-api items: $ref: '#/components/schemas/RepositoryID' type: array NotifyDeploymentsRequest: items: $ref: '#/components/schemas/DeploymentNotification' type: array ReleaseNotification: additionalProperties: false description: Push message about a custom release event. example: author: Vadim Markovtsev commit: c3f4d3a name: 0.8.66 repository: github.com/athenianco/athenian-api published_at: 2021-02-23 15:16:07+00:00 url: https://github.com/athenianco/athenian-api/releases/tag/v0.8.66 properties: repository: $ref: '#/components/schemas/RepositoryID' commit: $ref: '#/components/schemas/CommitHash' name: description: 'Release name. The value may not contain \n - new line character, and '' - single quote. ' nullable: true pattern: ^([^'\s]| ){1,100}$ type: string author: description: Release author. type: string url: description: Release URL. format: url type: string published_at: description: When the release was created. If missing, set to `now()`. format: date-time type: string required: - commit - repository type: object CommitHash: description: Commit hash, either short (7 chars) or long (40 chars) form. maxLength: 40 minLength: 7 type: string DeploymentNotification: description: 'Push message about a deployment. We remove unresolved components after 24h. ' example: components: - repository: github.com/athenianco/athenian-api reference: v0.10.34 environment: production date_finished: 2022-01-23 05:01:07+00:00 date_started: 2022-01-23 04:56:07+00:00 conclusion: SUCCESS labels: helm_chart: 0.0.67 properties: components: description: 'List of deployed software version. Each item identifies a Git reference in a repository, either a tag or a commit hash. ' items: $ref: '#/components/schemas/DeployedComponent' minItems: 1 type: array environment: description: Name of the environment where the deployment happened. minLength: 1 type: string name: description: Name of the deployment. If is not specified, we generate our own by the template `--`. The value may not contain \n - new line character, and ' - single quote. nullable: true pattern: ^([^'\s]| ){1,100}$ type: string url: description: URL pointing at the internal details of the deployment. format: url type: string date_started: description: Timestamp of when the deployment procedure launched. format: date-time type: string date_finished: description: Timestamp of when the deployment procedure completed. format: date-time type: string conclusion: $ref: '#/components/schemas/DeploymentConclusion' labels: $ref: '#/components/schemas/DeploymentLabels' required: - components - conclusion - date_finished - date_started - environment type: object DeployedComponent: additionalProperties: false description: Definition of the deployed software unit. example: repository: github.com/athenianco/athenian-api reference: v0.10.34 properties: repository: $ref: '#/components/schemas/RepositoryID' reference: description: 'We accept three ways to define a Git reference: 1. Tag name. 2. Full commit hash (40 characters). 3. Short commit hash (7 characters). We ignore the reference while we cannot find it in our database. There can be two reasons: - There is a mistake or a typo in the provided data. - We are temporarily unable to synchronize with GitHub. ' minLength: 1 type: string required: - reference - repository type: object responses: DeploymentNotFoundResponse: content: application/json: schema: $ref: '#/components/schemas/GenericError' description: A deployment with the given name was not found. DeploymentLabelsResponse: content: application/json: schema: additionalProperties: false properties: labels: $ref: '#/components/schemas/DeploymentLabels' required: - labels type: object description: The labels now associated with the deployment. InvalidRequestErrorResponse: content: application/json: schema: $ref: '#/components/schemas/InvalidRequestError' description: The request is invalid. securitySchemes: apiKeyAuth: description: 'Authorization by the value of `X-API-Key` header aka API token. The tokens are user- and account-specific. Create them by calling `/token/create`. The server automatically inserts `account` in the request''s body if it was not supplied by the user.' in: header name: X-API-Key type: apiKey x-apikeyInfoFunc: athenian.api.controllers.security_controller.info_from_apiKeyAuth bearerAuth: bearerFormat: JWT description: 'Regular JSON Web Token authorization powered by Auth0. The server expects an `Authorization: Bearer ` header and checks `` by sending it to Auth0. Visit [{{ server_url | replace("api", "app") }}/bearer]({{ server_url | replace("api", "app") }}/bearer) to copy your current JWT that will expire within 24 hours.' scheme: bearer type: http x-bearerInfoFunc: athenian.api.controllers.security_controller.info_from_bearerAuth