All Quiet Inbound Integrations API

Manage inbound integrations that turn observability and alerting signals into All Quiet incidents, including the generic inbound webhook endpoint, payload attribute mapping, integration types, and maintenance windows.

OpenAPI Specification

allquiet-openapi.yml Raw ↑
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 }