Class: Infrawrench::IncidentsNamespace
- Inherits:
-
Object
- Object
- Infrawrench::IncidentsNamespace
- Defined in:
- lib/infrawrench/client.rb,
sig/infrawrench/sdk.rbs
Overview
client.incidents
Instance Attribute Summary collapse
-
#get ⇒ IncidentsGetNamespace
readonly
client.incidents.get. -
#notes ⇒ IncidentsNotesNamespace
readonly
client.incidents.notes.
Instance Method Summary collapse
-
#create(org_id: nil, body: nil, request_options: nil) ⇒ Hash
Declare an incident.
-
#delete(incident_id:, org_id: nil, request_options: nil) ⇒ nil
Delete an incident.
-
#initialize(transport) ⇒ IncidentsNamespace
constructor
private
A new instance of IncidentsNamespace.
-
#postmortem(incident_id:, org_id: nil, request_options: nil) ⇒ Hash
Export a pre-filled postmortem.
-
#retry_artifacts(incident_id:, org_id: nil, request_options: nil) ⇒ Hash
Retry the artefacts that failed.
-
#timeline(incident_id:, org_id: nil, request_options: nil) ⇒ Hash
Assemble the incident's timeline.
-
#update(incident_id:, org_id: nil, body: nil, request_options: nil) ⇒ Hash
Edit or transition an incident.
Constructor Details
#initialize(transport) ⇒ IncidentsNamespace
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of IncidentsNamespace.
8491 8492 8493 8494 8495 |
# File 'lib/infrawrench/client.rb', line 8491 def initialize(transport) @transport = transport @get = IncidentsGetNamespace.new(@transport) @notes = IncidentsNotesNamespace.new(@transport) end |
Instance Attribute Details
#get ⇒ IncidentsGetNamespace (readonly)
Returns client.incidents.get.
8485 8486 8487 |
# File 'lib/infrawrench/client.rb', line 8485 def get @get end |
#notes ⇒ IncidentsNotesNamespace (readonly)
Returns client.incidents.notes.
8487 8488 8489 |
# File 'lib/infrawrench/client.rb', line 8487 def notes @notes end |
Instance Method Details
#create(org_id: nil, body: nil, request_options: nil) ⇒ Hash
Declare an incident
Record the incident and perform the opted-in side effects. The incident
row is written first and alone: a 201 means it exists, and the artifacts
array on the response says what else happened. No side effect can lose the
declaration, and none is swallowed. Audit-logged.
Requires permission: incidents:write.
POST /api/org/orgId/incidents
Raises on 400: Bad request
Raises on 403: Forbidden
8518 8519 8520 8521 8522 8523 8524 8525 8526 |
# File 'lib/infrawrench/client.rb', line 8518 def create(org_id: nil, body: nil, request_options: nil) @transport.request( http_method: "POST", path: "/api/org/{orgId}/incidents", path_params: { "orgId" => org_id }, body: body, request_options: ) end |
#delete(incident_id:, org_id: nil, request_options: nil) ⇒ nil
Delete an incident
Removes the incident, its notes and its artefact records. It does not lift a freeze or close a status-page update — resolve for that; deleting is for a mis-declaration. Audit-logged.
Requires permission: incidents:write.
DELETE /api/org/orgId/incidents/incidentId
Raises on 404: Not found
8546 8547 8548 8549 8550 8551 8552 8553 8554 |
# File 'lib/infrawrench/client.rb', line 8546 def delete(incident_id:, org_id: nil, request_options: nil) @transport.request( http_method: "DELETE", path: "/api/org/{orgId}/incidents/{incidentId}", path_params: { "orgId" => org_id, "incidentId" => incident_id }, accept: :empty, request_options: ) end |
#postmortem(incident_id:, org_id: nil, request_options: nil) ⇒ Hash
Export a pre-filled postmortem
Markdown with the timeline, the affected resources, the duration, the time to mitigate and the notes already filled in. The analysis headings — impact, root cause, action items — are deliberately left blank: a generated document that guesses at a root cause is worse than one that leaves a heading.
Requires permission: incidents:read.
GET /api/org/orgId/incidents/incidentId/postmortem
Raises on 404: Not found
8577 8578 8579 8580 8581 8582 8583 8584 |
# File 'lib/infrawrench/client.rb', line 8577 def postmortem(incident_id:, org_id: nil, request_options: nil) @transport.request( http_method: "GET", path: "/api/org/{orgId}/incidents/{incidentId}/postmortem", path_params: { "orgId" => org_id, "incidentId" => incident_id }, request_options: ) end |
#retry_artifacts(incident_id:, org_id: nil, request_options: nil) ⇒ Hash
Retry the artefacts that failed
Re-runs only the side effects whose artefact is in a failure state,
replacing each failure rather than queueing a second attempt beside it. A
failed artefact is re-created; a close_failed one is re-closed
— re-creating the latter would open a second change freeze or post a
duplicate public notice. A status-page retry reuses the components
recorded on the artefact's request, so the announcement keeps its
original scope. Its own endpoint rather than a flag on PATCH, because it
writes into three external systems. Audit-logged.
Requires permission: incidents:write.
POST /api/org/orgId/incidents/incidentId/retry-artifacts
Raises on 404: Not found
8609 8610 8611 8612 8613 8614 8615 8616 |
# File 'lib/infrawrench/client.rb', line 8609 def retry_artifacts(incident_id:, org_id: nil, request_options: nil) @transport.request( http_method: "POST", path: "/api/org/{orgId}/incidents/{incidentId}/retry-artifacts", path_params: { "orgId" => org_id, "incidentId" => incident_id }, request_options: ) end |
#timeline(incident_id:, org_id: nil, request_options: nil) ⇒ Hash
Assemble the incident's timeline
Merged on read from what is already recorded between the incident's start and its resolution: resource changes, deployments, cost anomalies, provider status incidents, audit entries, change freezes and workflow runs (all via the same union the Moment screen uses), plus probe state transitions, metric-alert firings, the incident's own life events, its artefacts and its operator notes. Nothing is copied — a correction upstream shows up here on the next read.
Probe transitions are an approximation: synthetic_probes keeps only a
single lastStateChangeAt, so a probe that flapped twice inside the
window contributes its most recent flip and no more.
Requires permission: incidents:read.
GET /api/org/orgId/incidents/incidentId/timeline
Raises on 404: Not found
8644 8645 8646 8647 8648 8649 8650 8651 |
# File 'lib/infrawrench/client.rb', line 8644 def timeline(incident_id:, org_id: nil, request_options: nil) @transport.request( http_method: "GET", path: "/api/org/{orgId}/incidents/{incidentId}/timeline", path_params: { "orgId" => org_id, "incidentId" => incident_id }, request_options: ) end |
#update(incident_id:, org_id: nil, body: nil, request_options: nil) ⇒ Hash
Edit or transition an incident
Omitted fields keep their value. Setting status stamps the matching
timestamp, and resolving undoes exactly what this incident created — the
freeze whose id is on its own artefact, not whatever freeze happens to be
in effect. Resolving an incident that was never marked mitigated
back-fills mitigatedAt from resolvedAt. Audit-logged.
Requires permission: incidents:write.
PATCH /api/org/orgId/incidents/incidentId
Raises on 400: Bad request
Raises on 404: Not found
8676 8677 8678 8679 8680 8681 8682 8683 8684 |
# File 'lib/infrawrench/client.rb', line 8676 def update(incident_id:, org_id: nil, body: nil, request_options: nil) @transport.request( http_method: "PATCH", path: "/api/org/{orgId}/incidents/{incidentId}", path_params: { "orgId" => org_id, "incidentId" => incident_id }, body: body, request_options: ) end |