openapi: 3.1.0 info: title: FireHydrant REST API description: >- Incident management platform exposing programmatic access to incidents, services, teams, environments, runbooks, change events, on-call schedules, Signals event sources, status pages, retrospectives, and integrations. Authentication is by Bot User API token presented as a Bearer token. version: "1.0" contact: name: FireHydrant url: https://docs.firehydrant.com/reference servers: - url: https://api.firehydrant.io/v1 description: Production security: - bearerAuth: [] paths: /ping: get: summary: Verify API connectivity and authentication operationId: ping responses: "200": description: Bot user info content: application/json: schema: type: object properties: response: type: string actor: type: object /incidents: get: summary: List incidents operationId: listIncidents parameters: - name: page in: query schema: type: integer - name: per_page in: query schema: type: integer - name: query in: query schema: type: string - name: status in: query schema: type: string - name: severity in: query schema: type: string responses: "200": description: Paginated incident list content: application/json: schema: type: object properties: data: type: array items: $ref: "#/components/schemas/Incident" pagination: $ref: "#/components/schemas/Pagination" post: summary: Declare an incident operationId: createIncident requestBody: required: true content: application/json: schema: type: object required: [name] properties: name: type: string summary: type: string description: type: string severity: type: string priority: type: string status: type: string incident_type_id: type: string tag_list: type: array items: type: string impacts: type: array items: type: object responses: "201": description: Incident created content: application/json: schema: $ref: "#/components/schemas/Incident" /incidents/{incident_id}: get: summary: Retrieve an incident operationId: getIncident parameters: - $ref: "#/components/parameters/IncidentId" responses: "200": description: Incident content: application/json: schema: $ref: "#/components/schemas/Incident" patch: summary: Update an incident operationId: updateIncident parameters: - $ref: "#/components/parameters/IncidentId" requestBody: required: true content: application/json: schema: type: object responses: "200": description: Updated content: application/json: schema: $ref: "#/components/schemas/Incident" delete: summary: Archive an incident operationId: archiveIncident parameters: - $ref: "#/components/parameters/IncidentId" responses: "204": description: Archived /incidents/{incident_id}/close: put: summary: Close an incident operationId: closeIncident parameters: - $ref: "#/components/parameters/IncidentId" responses: "200": description: Closed /incidents/{incident_id}/notes: post: summary: Add an incident note operationId: createIncidentNote parameters: - $ref: "#/components/parameters/IncidentId" requestBody: required: true content: application/json: schema: type: object required: [body] properties: body: type: string visibility: type: string responses: "201": description: Note created /incidents/{incident_id}/events: get: summary: List events for an incident operationId: listIncidentEvents parameters: - $ref: "#/components/parameters/IncidentId" responses: "200": description: Event list /services: get: summary: List services operationId: listServices parameters: - name: page in: query schema: type: integer - name: per_page in: query schema: type: integer - name: query in: query schema: type: string responses: "200": description: Services post: summary: Create a service operationId: createService requestBody: required: true content: application/json: schema: type: object required: [name] properties: name: type: string description: type: string service_tier: type: integer owner: type: object labels: type: object responses: "201": description: Service created /services/{service_id}: get: summary: Retrieve a service operationId: getService parameters: - name: service_id in: path required: true schema: type: string responses: "200": description: Service patch: summary: Update a service operationId: updateService parameters: - name: service_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object responses: "200": description: Updated service delete: summary: Delete a service operationId: deleteService parameters: - name: service_id in: path required: true schema: type: string responses: "204": description: Deleted /environments: get: summary: List environments operationId: listEnvironments responses: "200": description: Environments post: summary: Create an environment operationId: createEnvironment requestBody: required: true content: application/json: schema: type: object required: [name] properties: name: type: string description: type: string responses: "201": description: Environment created /environments/{environment_id}: get: summary: Retrieve an environment operationId: getEnvironment parameters: - name: environment_id in: path required: true schema: type: string responses: "200": description: Environment /functionalities: get: summary: List functionalities operationId: listFunctionalities responses: "200": description: Functionalities post: summary: Create a functionality operationId: createFunctionality requestBody: required: true content: application/json: schema: type: object required: [name] properties: name: type: string description: type: string responses: "201": description: Created /teams: get: summary: List teams operationId: listTeams responses: "200": description: Teams post: summary: Create a team operationId: createTeam requestBody: required: true content: application/json: schema: type: object required: [name] properties: name: type: string description: type: string responses: "201": description: Team created /teams/{team_id}: get: summary: Retrieve a team operationId: getTeam parameters: - name: team_id in: path required: true schema: type: string responses: "200": description: Team /runbooks: get: summary: List runbooks operationId: listRunbooks responses: "200": description: Runbooks post: summary: Create a runbook operationId: createRunbook requestBody: required: true content: application/json: schema: type: object required: [name] properties: name: type: string description: type: string type: type: string steps: type: array items: type: object responses: "201": description: Runbook created /runbooks/executions: post: summary: Execute a runbook against a target operationId: createRunbookExecution requestBody: required: true content: application/json: schema: type: object required: [runbook_id] properties: runbook_id: type: string attachment_type: type: string attachment_id: type: string responses: "201": description: Execution created /changes: get: summary: List changes operationId: listChanges responses: "200": description: Changes post: summary: Create a change entry operationId: createChange requestBody: required: true content: application/json: schema: type: object properties: summary: type: string identifier: type: string responses: "201": description: Created /change_events: post: summary: Create a change event operationId: createChangeEvent requestBody: required: true content: application/json: schema: type: object required: [summary] properties: summary: type: string description: type: string external_id: type: string responses: "201": description: Created /change_events/{change_event_id}: get: summary: Retrieve a change event operationId: getChangeEvent parameters: - name: change_event_id in: path required: true schema: type: string responses: "200": description: Change event delete: summary: Delete a change event operationId: deleteChangeEvent parameters: - name: change_event_id in: path required: true schema: type: string responses: "204": description: Deleted /conversations/{conversation_id}/comments: post: summary: Create a comment on a conversation operationId: createComment parameters: - name: conversation_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object required: [body] properties: body: type: string responses: "201": description: Created /signals/events: post: summary: Ingest a Signals alert event operationId: createSignalsEvent requestBody: required: true content: application/json: schema: type: object required: [summary] properties: summary: type: string body: type: string level: type: string enum: [INFO, WARN, ERROR, CRITICAL] images: type: array items: type: object links: type: array items: type: object annotations: type: object status: type: string responses: "202": description: Accepted /severities: get: summary: List severities operationId: listSeverities responses: "200": description: Severities post: summary: Create a severity operationId: createSeverity requestBody: required: true content: application/json: schema: type: object required: [slug] properties: slug: type: string description: type: string position: type: integer responses: "201": description: Created /priorities: get: summary: List priorities operationId: listPriorities responses: "200": description: Priorities post: summary: Create a priority operationId: createPriority requestBody: required: true content: application/json: schema: type: object required: [slug] properties: slug: type: string description: type: string default: type: boolean responses: "201": description: Created /scheduled_maintenances: post: summary: Create a scheduled maintenance event operationId: createScheduledMaintenance requestBody: required: true content: application/json: schema: type: object required: [summary, starts_at, ends_at] properties: summary: type: string description: type: string starts_at: type: string format: date-time ends_at: type: string format: date-time responses: "201": description: Created /audits/{audit_event_id}: get: summary: Retrieve an audit event operationId: getAuditEvent parameters: - name: audit_event_id in: path required: true schema: type: string responses: "200": description: Audit event components: parameters: IncidentId: name: incident_id in: path required: true schema: type: string securitySchemes: bearerAuth: type: http scheme: bearer schemas: Pagination: type: object properties: count: type: integer page: type: integer items: type: integer pages: type: integer last: type: integer prev: type: integer next: type: integer Incident: type: object properties: id: type: string name: type: string description: type: string summary: type: string current_milestone: type: string number: type: integer priority: type: string severity: type: string severity_color: type: string tag_list: type: array items: type: string created_at: type: string format: date-time started_at: type: string format: date-time discarded_at: type: string format: date-time nullable: true organization: type: object customer_impact_summary: type: string