LinearB Incidents API

Upload and update custom incident reports from external incident-management tools to feed change failure rate and mean-time-to-restore (MTTR) metrics.

OpenAPI Specification

linearb-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: LinearB Public API
  description: >-
    The LinearB public REST API for software engineering intelligence. Report
    deployments, push and update incidents, export engineering measurements
    (DORA and developer-productivity metrics), and manage teams and services.
    All requests are authenticated with an API token passed in the x-api-key
    request header.
  termsOfService: https://linearb.io/legal/terms-of-service
  contact:
    name: LinearB Support
    url: https://docs.linearb.io/api-overview/
  version: '1.0'
servers:
  - url: https://public-api.linearb.io
security:
  - apiKeyAuth: []
paths:
  /api/v1/deployments:
    post:
      operationId: createDeployment
      tags:
        - Deployments
      summary: Report a deployment.
      description: Reports a deployment so LinearB can calculate deployment frequency and lead time.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDeploymentRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateDeploymentResponse'
    get:
      operationId: listDeployments
      tags:
        - Deployments
      summary: List deployments.
      description: Returns a paginated list of reported deployments.
      parameters:
        - name: repository_id
          in: query
          schema:
            type: integer
        - name: after
          in: query
          schema:
            type: string
            format: date-time
        - name: before
          in: query
          schema:
            type: string
            format: date-time
        - name: stage
          in: query
          schema:
            type: string
        - name: commit_sha
          in: query
          schema:
            type: string
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
        - name: offset
          in: query
          schema:
            type: string
        - name: sort_by
          in: query
          schema:
            type: string
            default: published_at
        - name: sort_dir
          in: query
          schema:
            type: string
            enum: [asc, desc]
            default: desc
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentList'
  /api/v1/incidents:
    post:
      operationId: createIncident
      tags:
        - Incidents
      summary: Create an incident.
      description: Uploads a custom incident report to feed change failure rate and MTTR metrics.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateIncidentRequest'
      responses:
        '200':
          description: OK
  /api/v1/incidents/{provider_id}:
    patch:
      operationId: updateIncident
      tags:
        - Incidents
      summary: Update an incident.
      description: Updates an existing incident identified by its provider id.
      parameters:
        - name: provider_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateIncidentRequest'
      responses:
        '200':
          description: OK
  /api/v2/measurements:
    post:
      operationId: getMeasurements
      tags:
        - Measurements
      summary: Retrieve engineering metrics.
      description: >-
        Returns engineering metrics for the requested time ranges, grouping,
        and roll-up. Supported metrics may be aggregated (p50, p75, average).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MeasurementsRequest'
      responses:
        '200':
          description: OK
  /api/v2/measurements/export:
    post:
      operationId: exportMeasurements
      tags:
        - Measurements
      summary: Export engineering metrics.
      description: Generates a metrics report and drops it as a CSV or JSON file in cloud storage.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MeasurementsRequest'
      responses:
        '200':
          description: OK
  /api/v2/teams:
    get:
      operationId: searchTeams
      tags:
        - Teams
      summary: Search teams.
      responses:
        '200':
          description: OK
    post:
      operationId: createTeams
      tags:
        - Teams
      summary: Create teams.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTeamsRequest'
      responses:
        '200':
          description: OK
  /api/v2/teams/{team_id}:
    patch:
      operationId: updateTeam
      tags:
        - Teams
      summary: Update a team.
      parameters:
        - name: team_id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Team'
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteTeam
      tags:
        - Teams
      summary: Delete a team.
      parameters:
        - name: team_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
  /api/v2/teams/{team_id}/members:
    get:
      operationId: getTeamMembers
      tags:
        - Teams
      summary: Get team members.
      parameters:
        - name: team_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
    post:
      operationId: setTeamMembers
      tags:
        - Teams
      summary: Set team members.
      parameters:
        - name: team_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
    patch:
      operationId: addTeamMembers
      tags:
        - Teams
      summary: Add members to a team.
      parameters:
        - name: team_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
  /api/v2/teams/{team_id}/members/{user_id_or_email}:
    delete:
      operationId: removeTeamMember
      tags:
        - Teams
      summary: Remove a member from a team.
      parameters:
        - name: team_id
          in: path
          required: true
          schema:
            type: integer
        - name: user_id_or_email
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /api/v1/services:
    get:
      operationId: listServices
      tags:
        - Services
      summary: List services.
      responses:
        '200':
          description: OK
    post:
      operationId: createServices
      tags:
        - Services
      summary: Create services.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateServicesRequest'
      responses:
        '200':
          description: OK
  /api/v1/services/{service_id}:
    get:
      operationId: getService
      tags:
        - Services
      summary: Get a service.
      parameters:
        - name: service_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
    put:
      operationId: updateService
      tags:
        - Services
      summary: Update a service.
      parameters:
        - name: service_id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Service'
      responses:
        '200':
          description: OK
    delete:
      operationId: deleteService
      tags:
        - Services
      summary: Delete a service.
      parameters:
        - name: service_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
  schemas:
    CreateDeploymentRequest:
      type: object
      required:
        - repo_url
        - ref_name
      properties:
        repo_url:
          type: string
          description: The git repository url.
        ref_name:
          type: string
          description: Ref name of the release, accepts any Git ref.
        timestamp:
          type: string
          format: date-time
          description: Deployment time in ISO 8601 format.
        stage:
          type: string
          description: The key of the custom pre-deployment stage (lowercase).
        services:
          type: array
          description: The list of LinearB service names (lowercase).
          items:
            type: string
    CreateDeploymentResponse:
      type: object
      properties:
        request_id:
          type: string
    DeploymentList:
      type: object
      properties:
        total:
          type: integer
        items:
          type: array
          items:
            $ref: '#/components/schemas/Deployment'
    Deployment:
      type: object
      properties:
        repository_id:
          type: integer
        ref_name:
          type: string
        commit_sha:
          type: string
        stage:
          type: string
        published_at:
          type: string
          format: date-time
    CreateIncidentRequest:
      type: object
      required:
        - provider_id
        - http_url
        - title
        - issued_at
      properties:
        provider_id:
          type: string
          description: Unique identifier of the incident in your incident management provider.
        http_url:
          type: string
          description: The URL of your incident management provider.
        title:
          type: string
          description: The title of the incident.
        issued_at:
          type: string
          format: date-time
          description: When the incident was logged and officially opened.
        started_at:
          type: string
          format: date-time
        ended_at:
          type: string
          format: date-time
        git_ref:
          type: string
        teams:
          type: array
          items:
            type: string
        services:
          type: array
          items:
            type: string
        repository_urls:
          type: array
          items:
            type: string
    UpdateIncidentRequest:
      type: object
      required:
        - title
        - issued_at
        - git_ref
      properties:
        title:
          type: string
        issued_at:
          type: string
          format: date-time
        git_ref:
          type: string
        started_at:
          type: string
          format: date-time
        ended_at:
          type: string
          format: date-time
        teams:
          type: array
          items:
            type: string
        services:
          type: array
          items:
            type: string
        repository_urls:
          type: array
          items:
            type: string
    MeasurementsRequest:
      type: object
      required:
        - requested_metrics
        - time_ranges
      properties:
        group_by:
          type: string
          description: Dimension to group results by (for example organization, team, repository, or contributor).
        roll_up:
          type: string
          description: Time aggregation granularity (for example 1d, 1w, 1mo, or custom).
          enum: [1d, 1w, 1mo, custom]
        requested_metrics:
          type: array
          description: The list of metrics to retrieve, optionally with an aggregation.
          items:
            $ref: '#/components/schemas/RequestedMetric'
        time_ranges:
          type: array
          description: One or more date ranges in yyyy-mm-dd format; multiple ranges require roll_up=custom.
          items:
            $ref: '#/components/schemas/TimeRange'
    RequestedMetric:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: The metric key (for example branch.computed.cycle_time).
        agg:
          type: string
          description: Aggregation method for metrics that support it.
          enum: [p50, p75, avg, default]
    TimeRange:
      type: object
      required:
        - after
        - before
      properties:
        after:
          type: string
          description: Range start in yyyy-mm-dd format.
        before:
          type: string
          description: Range end in yyyy-mm-dd format, greater than after.
    CreateTeamsRequest:
      type: object
      properties:
        teams:
          type: array
          items:
            $ref: '#/components/schemas/Team'
    Team:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: Team name, 3-100 characters beginning with a letter.
        parent_team:
          type: string
          description: Name of an existing parent team for hierarchy.
        initials:
          type: string
          description: Optional 1-3 character abbreviation.
        color:
          type: string
          description: Hex color code in #RGB or #RRGGBB format.
          default: '#348B83'
    CreateServicesRequest:
      type: object
      properties:
        services:
          type: array
          items:
            $ref: '#/components/schemas/Service'
    Service:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: The service display name.
        repositories:
          type: array
          items:
            $ref: '#/components/schemas/ServiceRepository'
    ServiceRepository:
      type: object
      properties:
        url:
          type: string
          description: The repository URL.
        paths:
          type: array
          description: Directory paths within the repository belonging to this service.
          items:
            type: string