CircleCI Webhook API
Endpoints for creating, updating, listing, and deleting outbound webhook subscriptions.
Endpoints for creating, updating, listing, and deleting outbound webhook subscriptions.
openapi: 3.1.0
info:
title: CircleCI REST API v1 Artifact Webhook API
description: The CircleCI REST API v1 is the legacy API that provides access to build information, project details, and user data. While still available, CircleCI recommends migrating to the v2 API for newer features and improved functionality. The v1 API supports operations for retrieving build details, triggering builds, managing SSH keys, and accessing test metadata. Authentication is handled through API tokens passed as query parameters or HTTP headers.
version: '1.1'
contact:
name: CircleCI Support
url: https://support.circleci.com
termsOfService: https://circleci.com/terms-of-service/
servers:
- url: https://circleci.com/api/v1.1
description: CircleCI Production API v1.1
security:
- apiToken: []
tags:
- name: Webhook
description: Endpoints for creating, updating, listing, and deleting outbound webhook subscriptions.
paths:
/webhook:
get:
operationId: listWebhooks
summary: List webhooks
description: Returns a list of outbound webhooks for the specified scope.
tags:
- Webhook
parameters:
- name: scope-id
in: query
required: true
description: The ID of the scope (project ID)
schema:
type: string
format: uuid
- name: scope-type
in: query
required: true
description: The type of scope
schema:
type: string
enum:
- project
responses:
'200':
description: Successfully retrieved webhooks
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookList'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
operationId: createWebhook
summary: Create a webhook
description: Creates a new outbound webhook for the specified scope.
tags:
- Webhook
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWebhookRequest'
responses:
'201':
description: Webhook created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookInfo'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/webhook/{webhook-id}:
get:
operationId: getWebhook
summary: Get a webhook by ID
description: Returns a webhook by its unique identifier.
tags:
- Webhook
parameters:
- $ref: '#/components/parameters/WebhookIdParam'
responses:
'200':
description: Successfully retrieved webhook
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookInfo'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Webhook not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
put:
operationId: updateWebhook
summary: Update a webhook
description: Updates an existing webhook with the provided parameters.
tags:
- Webhook
parameters:
- $ref: '#/components/parameters/WebhookIdParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateWebhookRequest'
responses:
'200':
description: Webhook updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookInfo'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
operationId: deleteWebhook
summary: Delete a webhook
description: Deletes a webhook by its unique identifier.
tags:
- Webhook
parameters:
- $ref: '#/components/parameters/WebhookIdParam'
responses:
'200':
description: Webhook deleted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/MessageResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
MessageResponse:
type: object
properties:
message:
type: string
description: A message describing the result of the operation
WebhookInfo:
type: object
properties:
id:
type: string
format: uuid
description: The unique identifier of the webhook
url:
type: string
format: uri
description: The URL the webhook delivers to
name:
type: string
description: The name of the webhook
events:
type: array
items:
type: string
enum:
- workflow-completed
- job-completed
description: The events this webhook subscribes to
scope:
type: object
properties:
id:
type: string
format: uuid
description: The scope ID
type:
type: string
description: The scope type
description: The scope of the webhook
signing-secret:
type: string
description: The signing secret for verifying webhook payloads
verify-tls:
type: boolean
description: Whether to verify TLS certificates
created-at:
type: string
format: date-time
description: When the webhook was created
updated-at:
type: string
format: date-time
description: When the webhook was last updated
UpdateWebhookRequest:
type: object
properties:
name:
type: string
description: The name of the webhook
url:
type: string
format: uri
description: The URL to deliver webhook payloads to
events:
type: array
items:
type: string
enum:
- workflow-completed
- job-completed
description: The events to subscribe to
signing-secret:
type: string
description: Secret used to generate HMAC signature
verify-tls:
type: boolean
description: Whether to verify TLS on delivery
CreateWebhookRequest:
type: object
required:
- name
- url
- events
- scope
- signing-secret
properties:
name:
type: string
description: The name of the webhook
url:
type: string
format: uri
description: The URL to deliver webhook payloads to
events:
type: array
items:
type: string
enum:
- workflow-completed
- job-completed
description: The events to subscribe to
scope:
type: object
required:
- id
- type
properties:
id:
type: string
format: uuid
description: The scope ID (project ID)
type:
type: string
enum:
- project
description: The scope type
signing-secret:
type: string
description: Secret used to generate HMAC signature
verify-tls:
type: boolean
description: Whether to verify TLS on delivery
ErrorResponse:
type: object
properties:
message:
type: string
description: A human-readable error message
WebhookList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/WebhookInfo'
description: List of webhooks
next_page_token:
type: string
description: Token for retrieving the next page
parameters:
WebhookIdParam:
name: webhook-id
in: path
required: true
description: The unique identifier of the webhook
schema:
type: string
format: uuid
securitySchemes:
apiToken:
type: apiKey
in: header
name: Circle-Token
description: Personal API token for authenticating with the CircleCI API. Can also be passed as a query parameter.
externalDocs:
description: CircleCI API v1 Reference
url: https://circleci.com/docs/api/v1/