openapi: 3.0.1
info:
title: All Quiet Public API
description: >-
The All Quiet Public REST API lets you manage incident management and on-call
resources programmatically. It is available in the US (https://allquiet.app/api)
and EU (https://allquiet.eu/api) regions and requires a Pro or Enterprise plan.
Authenticate with an organization API key sent either as an `X-Api-Key` header
or as a `Authorization: Bearer` token. This document captures the documented
Incidents, Inbound Integrations, Teams, On-Call Schedules, and Webhooks
(outbound integrations) surfaces of the public v1 API.
termsOfService: https://allquiet.app/legal/terms
contact:
name: All Quiet Support
email: support@allquiet.app
version: v1
servers:
- url: https://allquiet.app/api
description: US region
- url: https://allquiet.eu/api
description: EU region
security:
- ApiKeyHeader: []
- BearerAuth: []
tags:
- name: Incidents
description: Create, search, read, update, and delete incidents.
- name: Inbound Integrations
description: Integrations that turn external signals into All Quiet incidents.
- name: Teams
description: Teams, team membership, and organization membership (users).
- name: On-Call Schedules
description: On-call lookups, escalation tiers, and on-call overrides.
- name: Webhooks
description: Outbound integrations that forward incidents to third-party platforms.
paths:
/public/v1/incident:
post:
tags:
- Incidents
summary: Create an incident
description: Creates a new incident with a title, severity, status, and optional team and user assignments.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/IncidentCreateRequest'
responses:
'200':
description: The created incident.
content:
application/json:
schema:
$ref: '#/components/schemas/Incident'
/public/v1/incident/search/list:
get:
tags:
- Incidents
summary: Search incidents
description: Returns a paged list of incidents filtered by status, severity, team, user, integration, and time range.
parameters:
- { name: Statuses, in: query, schema: { type: array, items: { type: string } } }
- { name: Severities, in: query, schema: { type: array, items: { type: string } } }
- { name: IntegrationIds, in: query, schema: { type: array, items: { type: string } } }
- { name: TeamIds, in: query, schema: { type: array, items: { type: string } } }
- { name: UserIds, in: query, schema: { type: array, items: { type: string } } }
- { name: SearchTerm, in: query, schema: { type: string } }
- { name: IsArchived, in: query, schema: { type: boolean } }
- { name: CreatedFrom, in: query, schema: { type: string, format: date-time } }
- { name: CreatedUntil, in: query, schema: { type: string, format: date-time } }
- { name: Limit, in: query, schema: { type: integer } }
- { name: Offset, in: query, schema: { type: integer } }
- { name: SortBy, in: query, schema: { type: string } }
- { name: Asc, in: query, schema: { type: boolean } }
responses:
'200':
description: A paged list of incidents.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Incident'
/public/v1/incident/search/{incidentId}:
get:
tags:
- Incidents
summary: Get an incident
parameters:
- name: incidentId
in: path
required: true
schema: { type: string }
responses:
'200':
description: The requested incident.
content:
application/json:
schema:
$ref: '#/components/schemas/Incident'
/public/v1/incident/search/{incidentId}/markdown:
get:
tags:
- Incidents
summary: Get an incident as Markdown
parameters:
- name: incidentId
in: path
required: true
schema: { type: string }
responses:
'200':
description: A Markdown rendering of the incident.
content:
text/markdown:
schema: { type: string }
/public/v1/incident/{incidentId}:
patch:
tags:
- Incidents
summary: Update an incident
description: Applies a list of patch operations (e.g. change status, severity, assignments) to an incident.
parameters:
- name: incidentId
in: path
required: true
schema: { type: string }
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/IncidentPatchRequest'
responses:
'200':
description: The updated incident.
content:
application/json:
schema:
$ref: '#/components/schemas/Incident'
delete:
tags:
- Incidents
summary: Delete an incident
parameters:
- name: incidentId
in: path
required: true
schema: { type: string }
responses:
'200':
description: The incident was deleted.
/public/v1/inbound-integration:
post:
tags:
- Inbound Integrations
summary: Create an inbound integration
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InboundIntegrationCreateRequest'
responses:
'200':
description: The created inbound integration.
content:
application/json:
schema:
$ref: '#/components/schemas/InboundIntegration'
/public/v1/inbound-integration/{id}:
get:
tags: [Inbound Integrations]
summary: Get an inbound integration
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: The requested inbound integration.
content:
application/json:
schema:
$ref: '#/components/schemas/InboundIntegration'
put:
tags: [Inbound Integrations]
summary: Update an inbound integration
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InboundIntegrationCreateRequest'
responses:
'200':
description: The updated inbound integration.
delete:
tags: [Inbound Integrations]
summary: Delete an inbound integration
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: The inbound integration was deleted.
/public/v1/inbound-integration/types:
get:
tags: [Inbound Integrations]
summary: List inbound integration types
responses:
'200':
description: The supported inbound integration types.
/public/v1/inbound-integration/search/list:
get:
tags: [Inbound Integrations]
summary: Search inbound integrations
responses:
'200':
description: A list of inbound integrations.
/public/v1/team:
post:
tags: [Teams]
summary: Create a team
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TeamRequest'
responses:
'200':
description: The created team.
content:
application/json:
schema:
$ref: '#/components/schemas/Team'
/public/v1/team/{id}:
get:
tags: [Teams]
summary: Get a team
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: The requested team.
content:
application/json:
schema:
$ref: '#/components/schemas/Team'
put:
tags: [Teams]
summary: Update a team
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TeamRequest'
responses:
'200':
description: The updated team.
delete:
tags: [Teams]
summary: Delete a team
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: The team was deleted.
/public/v1/team/search/list:
get:
tags: [Teams]
summary: Search teams
responses:
'200':
description: A list of teams.
/public/v1/team-membership:
post:
tags: [Teams]
summary: Add a team membership
responses:
'200':
description: The created team membership.
/public/v1/organization-membership:
post:
tags: [Teams]
summary: Add an organization membership (user)
responses:
'200':
description: The created organization membership.
/public/v1/user:
post:
tags: [Teams]
summary: Create a user
responses:
'200':
description: The created user.
/public/v1/on-call:
get:
tags: [On-Call Schedules]
summary: Get who is on call
description: Returns the users on call for the given teams or users at the supplied timestamp (defaults to now).
parameters:
- { name: TeamIds, in: query, schema: { type: array, items: { type: string } } }
- { name: UserIds, in: query, schema: { type: array, items: { type: string } } }
- { name: Timestamp, in: query, schema: { type: string, format: date-time } }
responses:
'200':
description: The on-call result set.
/public/v1/team-escalations:
post:
tags: [On-Call Schedules]
summary: Create team escalations
description: Defines escalation tiers, schedules, and rotations for a team.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TeamEscalationsRequest'
responses:
'200':
description: The created team escalations.
/public/v1/team-escalations/{id}:
get:
tags: [On-Call Schedules]
summary: Get team escalations
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: The requested team escalations.
put:
tags: [On-Call Schedules]
summary: Update team escalations
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TeamEscalationsRequest'
responses:
'200':
description: The updated team escalations.
delete:
tags: [On-Call Schedules]
summary: Delete team escalations
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: The team escalations were deleted.
/public/v1/on-call-override:
post:
tags: [On-Call Schedules]
summary: Create an on-call override
description: Overrides who is on call for a team and escalation tier over a time window.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OnCallOverrideRequest'
responses:
'200':
description: The created on-call override.
/public/v1/on-call-override/{id}:
get:
tags: [On-Call Schedules]
summary: Get an on-call override
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: The requested on-call override.
put:
tags: [On-Call Schedules]
summary: Update an on-call override
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OnCallOverrideRequest'
responses:
'200':
description: The updated on-call override.
delete:
tags: [On-Call Schedules]
summary: Delete an on-call override
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: The on-call override was deleted.
/public/v1/outbound-integration:
post:
tags: [Webhooks]
summary: Create an outbound integration
description: Creates an outbound integration (e.g. generic webhook, Slack, Mattermost) that forwards incidents to a third-party platform.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OutboundIntegrationCreateRequest'
responses:
'200':
description: The created outbound integration.
content:
application/json:
schema:
$ref: '#/components/schemas/OutboundIntegration'
/public/v1/outbound-integration/{id}:
get:
tags: [Webhooks]
summary: Get an outbound integration
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: The requested outbound integration.
content:
application/json:
schema:
$ref: '#/components/schemas/OutboundIntegration'
put:
tags: [Webhooks]
summary: Update an outbound integration
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OutboundIntegrationCreateRequest'
responses:
'200':
description: The updated outbound integration.
delete:
tags: [Webhooks]
summary: Delete an outbound integration
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: The outbound integration was deleted.
/public/v1/outbound-integration/types:
get:
tags: [Webhooks]
summary: List outbound integration types
responses:
'200':
description: The supported outbound integration types.
components:
securitySchemes:
ApiKeyHeader:
type: apiKey
in: header
name: X-Api-Key
description: Organization API key sent in the X-Api-Key header.
BearerAuth:
type: http
scheme: bearer
description: Organization API key sent as a Bearer token in the Authorization header.
schemas:
IncidentCreateRequest:
type: object
required:
- title
- severity
- status
properties:
title: { type: string }
message: { type: string }
messageIsPublic: { type: boolean }
integrationId: { type: string }
teamIds:
type: array
items: { type: string }
status: { type: string, description: 'Incident status, e.g. Open, Resolved.' }
severity: { type: string, description: 'Incident severity, e.g. Critical, Warning, Minor.' }
serviceIds:
type: array
items: { type: string }
excludeFromUptimeCalculation: { type: boolean }
userAssignments:
type: array
items: { type: object }
attributes:
type: array
items: { type: object }
publicComment: { type: string }
IncidentPatchRequest:
type: object
required:
- operations
properties:
operations:
type: array
description: A list of patch operations to apply to the incident.
items: { type: object }
Incident:
type: object
properties:
id: { type: string }
title: { type: string }
status: { type: string }
severity: { type: string }
teamIds:
type: array
items: { type: string }
createdAt: { type: string, format: date-time }
InboundIntegrationCreateRequest:
type: object
required:
- displayName
- teamId
- type
properties:
displayName: { type: string }
teamId: { type: string }
type: { type: string, description: 'Integration type, e.g. Webhook, Datadog, Prometheus.' }
isMuted: { type: boolean }
isInMaintenance: { type: boolean }
snoozeSettings: { type: object }
webhookAuthentication: { type: object }
integrationSettings: { type: object }
labels:
type: array
items: { type: string }
InboundIntegration:
type: object
properties:
id: { type: string }
displayName: { type: string }
teamId: { type: string }
type: { type: string }
TeamRequest:
type: object
required:
- displayName
- timeZoneId
properties:
displayName: { type: string }
timeZoneId: { type: string }
labels:
type: array
items: { type: string }
incidentEngagementReportSettings: { type: object }
calendarPublishingSettings: { type: object }
Team:
type: object
properties:
id: { type: string }
displayName: { type: string }
timeZoneId: { type: string }
TeamEscalationsRequest:
type: object
properties:
teamId: { type: string }
tiers:
type: array
description: Escalation tiers with their schedules and rotations.
items: { type: object }
OnCallOverrideRequest:
type: object
required:
- type
- userId
properties:
userId: { type: string }
teamId: { type: string }
escalationTier: { type: integer }
replacementUserIds:
type: array
items: { type: string }
start: { type: string, format: date-time }
end: { type: string, format: date-time }
type: { type: string }
OutboundIntegrationCreateRequest:
type: object
required:
- displayName
- teamId
- type
properties:
displayName: { type: string }
teamId: { type: string }
type: { type: string, description: 'Integration type, e.g. Webhook, Slack, Mattermost.' }
triggersOnlyOnForwarded: { type: boolean }
skipUpdatingAfterForwarding: { type: boolean }
teamConnectionSettings: { type: object }
slackSettings: { type: object }
mattermostSettings: { type: object }
OutboundIntegration:
type: object
properties:
id: { type: string }
displayName: { type: string }
teamId: { type: string }
type: { type: string }