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.
8152 8153 8154 8155 8156 |
# File 'lib/infrawrench/client.rb', line 8152 def initialize(transport) @transport = transport @get = IncidentsGetNamespace.new(@transport) @notes = IncidentsNotesNamespace.new(@transport) end |
Instance Attribute Details
#get ⇒ IncidentsGetNamespace (readonly)
Returns client.incidents.get.
8146 8147 8148 |
# File 'lib/infrawrench/client.rb', line 8146 def get @get end |
#notes ⇒ IncidentsNotesNamespace (readonly)
Returns client.incidents.notes.
8148 8149 8150 |
# File 'lib/infrawrench/client.rb', line 8148 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
8179 8180 8181 8182 8183 8184 8185 8186 8187 |
# File 'lib/infrawrench/client.rb', line 8179 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
8207 8208 8209 8210 8211 8212 8213 8214 8215 |
# File 'lib/infrawrench/client.rb', line 8207 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
8238 8239 8240 8241 8242 8243 8244 8245 |
# File 'lib/infrawrench/client.rb', line 8238 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
8270 8271 8272 8273 8274 8275 8276 8277 |
# File 'lib/infrawrench/client.rb', line 8270 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
8305 8306 8307 8308 8309 8310 8311 8312 |
# File 'lib/infrawrench/client.rb', line 8305 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
8337 8338 8339 8340 8341 8342 8343 8344 8345 |
# File 'lib/infrawrench/client.rb', line 8337 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 |