infrawrench-sdk 1.14.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/infrawrench-sdk.gemspec +4 -4
- data/lib/infrawrench/client.rb +503 -2
- data/lib/infrawrench/sdk.rb +2 -2
- data/lib/infrawrench/transport.rb +2 -2
- data/lib/infrawrench/version.rb +3 -3
- data/lib/infrawrench-sdk.rb +2 -2
- data/sig/infrawrench/sdk.rbs +311 -2
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ed2bbb041647f781da0b26a0d376c2cedcf6a4904aa085405ee8c7bd5d477de9
|
|
4
|
+
data.tar.gz: fc6adc2c9b7edd3188848c118b52f322ce2e54bd1d613fc927cc718401759df8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cfa7d9ba7d12d044aca5221751c60b316d4ac51133f6c17967417deaea411f688dafbce45af8c18836fd421cf9f1469b1972eb068c5fb085501efb3f7d14ff62
|
|
7
|
+
data.tar.gz: 1eb649eb2e24e58172ec86e6b84a4d90c2c8739bb7d01804defc426845bc566261a69f241f9b6af1cc7db1ea4ee888274ff2415a645c50efcc441d068962cc9d
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# infrawrench-sdk
|
|
2
2
|
|
|
3
|
-
Generated Ruby client for the Infrawrench API (API version `1.
|
|
3
|
+
Generated Ruby client for the Infrawrench API (API version `1.16.0`).
|
|
4
4
|
|
|
5
5
|
**Do not edit this gem by hand** — it is regenerated from `openapi.json` and is
|
|
6
6
|
not checked into the repository. Run
|
|
@@ -41,7 +41,7 @@ Every method takes an optional trailing `request_options:` hash (`:headers`,
|
|
|
41
41
|
Responses are the plain `Hash`/`Array` that `JSON.parse` returns, with String
|
|
42
42
|
keys spelled exactly as the wire spells them. There are no model classes — see
|
|
43
43
|
[`sig/infrawrench/sdk.rbs`](./sig/infrawrench/sdk.rbs) for the shape of every one of the
|
|
44
|
-
|
|
44
|
+
596 schemas, as RBS type aliases that steep and TypeProf can read.
|
|
45
45
|
|
|
46
46
|
Non-2xx responses raise `Infrawrench::ApiError`, which carries `#status`,
|
|
47
47
|
the parsed `#body`, and the machine-readable `#code` when the API sends one —
|
data/infrawrench-sdk.gemspec
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.16.0 | MIT | Copyright (c) 2026 Infrawrench LLC
|
|
4
4
|
# https://github.com/Infrawrench/Infrawrench
|
|
5
5
|
#
|
|
6
|
-
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.
|
|
6
|
+
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.16.0).
|
|
7
7
|
#
|
|
8
8
|
# DO NOT EDIT. Regenerate with:
|
|
9
9
|
# pnpm --filter @infrawrench/web generate:sdk
|
|
@@ -17,8 +17,8 @@ require_relative "lib/infrawrench/version"
|
|
|
17
17
|
Gem::Specification.new do |spec|
|
|
18
18
|
spec.name = "infrawrench-sdk"
|
|
19
19
|
spec.version = Infrawrench::VERSION
|
|
20
|
-
spec.summary = "Generated Ruby client for the Infrawrench API (v1.
|
|
21
|
-
spec.description = "Generated Ruby client for the Infrawrench API (v1.
|
|
20
|
+
spec.summary = "Generated Ruby client for the Infrawrench API (v1.16.0)."
|
|
21
|
+
spec.description = "Generated Ruby client for the Infrawrench API (v1.16.0). Covers the published API surface only — operations marked x-internal in the spec are not generated. No runtime dependencies."
|
|
22
22
|
spec.authors = ["Infrawrench LLC", "Astrid Gealer"]
|
|
23
23
|
spec.email = ["astrid@infrawrench.com"]
|
|
24
24
|
spec.homepage = "https://infrawrench.com/docs/team-and-billing/client-sdks"
|
data/lib/infrawrench/client.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.16.0 | MIT | Copyright (c) 2026 Infrawrench LLC
|
|
4
4
|
# https://github.com/Infrawrench/Infrawrench
|
|
5
5
|
#
|
|
6
|
-
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.
|
|
6
|
+
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.16.0).
|
|
7
7
|
#
|
|
8
8
|
# DO NOT EDIT. Regenerate with:
|
|
9
9
|
# pnpm --filter @infrawrench/web generate:sdk
|
|
@@ -246,6 +246,173 @@ module Infrawrench
|
|
|
246
246
|
end
|
|
247
247
|
end
|
|
248
248
|
|
|
249
|
+
# `client.access_review.dismissals`
|
|
250
|
+
class AccessReviewDismissalsNamespace
|
|
251
|
+
# @api private
|
|
252
|
+
# @param transport [Transport]
|
|
253
|
+
def initialize(transport)
|
|
254
|
+
@transport = transport
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
# Dismiss an access review finding
|
|
258
|
+
#
|
|
259
|
+
# Accept a finding — that break-glass role really is meant to be admin, that
|
|
260
|
+
# shared key really is rotated out of band. The finding leaves `findings`
|
|
261
|
+
# and stops feeding the security alerts, but the rule keeps being evaluated
|
|
262
|
+
# and the finding is reported back under `dismissed` for as long as it still
|
|
263
|
+
# matches. The principal itself stays in `principals` either way.
|
|
264
|
+
# Idempotent: dismissing an already-dismissed finding rewrites the note and
|
|
265
|
+
# the author.
|
|
266
|
+
#
|
|
267
|
+
# _Requires permission: `resources:write`._
|
|
268
|
+
#
|
|
269
|
+
# POST /api/org/{orgId}/access-review/dismissals
|
|
270
|
+
#
|
|
271
|
+
# Raises on 400: Bad request
|
|
272
|
+
#
|
|
273
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
274
|
+
# constructed with.
|
|
275
|
+
# @param body [Hash, nil] Request body, shaped as `AccessReviewDismissalCreate`.
|
|
276
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
277
|
+
# @return [Hash] Parsed JSON, shaped as `AccessReviewDismissal` — see
|
|
278
|
+
# `sig/infrawrench/sdk.rbs`.
|
|
279
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
280
|
+
def create(org_id: nil, body: nil, request_options: nil)
|
|
281
|
+
@transport.request(
|
|
282
|
+
http_method: "POST",
|
|
283
|
+
path: "/api/org/{orgId}/access-review/dismissals",
|
|
284
|
+
path_params: { "orgId" => org_id },
|
|
285
|
+
body: body,
|
|
286
|
+
request_options: request_options
|
|
287
|
+
)
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
# Restore a dismissed access review finding
|
|
291
|
+
#
|
|
292
|
+
# Undo a dismissal, putting the finding back on the list and back into the
|
|
293
|
+
# security alerts. The finding is identified by query parameters rather than
|
|
294
|
+
# path segments because resource ids are provider-native and routinely
|
|
295
|
+
# contain slashes.
|
|
296
|
+
#
|
|
297
|
+
# _Requires permission: `resources:write`._
|
|
298
|
+
#
|
|
299
|
+
# DELETE /api/org/{orgId}/access-review/dismissals
|
|
300
|
+
#
|
|
301
|
+
# Raises on 400: Bad request
|
|
302
|
+
#
|
|
303
|
+
# Raises on 404: Not found
|
|
304
|
+
#
|
|
305
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
306
|
+
# constructed with.
|
|
307
|
+
# @param resource_id [String] Infrawrench resource id the finding is on.
|
|
308
|
+
# @param rule_id [String] Which rule was raised. Half of a dismissal's key, alongside the
|
|
309
|
+
# resource id. The `access-review:` prefix is reserved so these can share the posture
|
|
310
|
+
# dismissal store without colliding with plugin-declared posture rule ids.
|
|
311
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
312
|
+
# @return [nil] This endpoint returns no content.
|
|
313
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
314
|
+
def delete(resource_id:, rule_id:, org_id: nil, request_options: nil)
|
|
315
|
+
@transport.request(
|
|
316
|
+
http_method: "DELETE",
|
|
317
|
+
path: "/api/org/{orgId}/access-review/dismissals",
|
|
318
|
+
path_params: { "orgId" => org_id },
|
|
319
|
+
query: { "resourceId" => resource_id, "ruleId" => rule_id },
|
|
320
|
+
accept: :empty,
|
|
321
|
+
request_options: request_options
|
|
322
|
+
)
|
|
323
|
+
end
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
# `client.access_review`
|
|
327
|
+
class AccessReviewNamespace
|
|
328
|
+
# @return [AccessReviewDismissalsNamespace] `client.access_review.dismissals`
|
|
329
|
+
attr_reader :dismissals
|
|
330
|
+
|
|
331
|
+
# @api private
|
|
332
|
+
# @param transport [Transport]
|
|
333
|
+
def initialize(transport)
|
|
334
|
+
@transport = transport
|
|
335
|
+
@dismissals = AccessReviewDismissalsNamespace.new(@transport)
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
# Export the access review as compliance evidence
|
|
339
|
+
#
|
|
340
|
+
# The same review as a downloadable file, one row per finding. `format=csv`
|
|
341
|
+
# (the default) returns RFC 4180 CSV with every cell quoted and spreadsheet
|
|
342
|
+
# formulas neutralised; `format=json` returns the full response body
|
|
343
|
+
# pretty-printed.
|
|
344
|
+
#
|
|
345
|
+
# Dismissed findings are included and labelled in both formats, with the
|
|
346
|
+
# note and the person who accepted them: an evidence pack answers what you
|
|
347
|
+
# found *and* what you decided. Exports are recorded in the audit log.
|
|
348
|
+
#
|
|
349
|
+
# _Requires permission: `resources:read`._
|
|
350
|
+
#
|
|
351
|
+
# GET /api/org/{orgId}/access-review/export
|
|
352
|
+
#
|
|
353
|
+
# Raises on 400: Bad request
|
|
354
|
+
#
|
|
355
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
356
|
+
# constructed with.
|
|
357
|
+
# @param format [String, nil] Defaults to "csv".
|
|
358
|
+
# @param stale_days [Integer, nil] Staleness window in days. Defaults to 90.
|
|
359
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
360
|
+
# @return [Hash] Parsed JSON, shaped as `AccessReviewResponse` — see
|
|
361
|
+
# `sig/infrawrench/sdk.rbs`.
|
|
362
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
363
|
+
def export(org_id: nil, format: nil, stale_days: nil, request_options: nil)
|
|
364
|
+
@transport.request(
|
|
365
|
+
http_method: "GET",
|
|
366
|
+
path: "/api/org/{orgId}/access-review/export",
|
|
367
|
+
path_params: { "orgId" => org_id },
|
|
368
|
+
query: { "format" => format, "staleDays" => stale_days },
|
|
369
|
+
request_options: request_options
|
|
370
|
+
)
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
# Review the principals inside your connected clouds
|
|
374
|
+
#
|
|
375
|
+
# Every IAM user and role, service account, app registration, group, role
|
|
376
|
+
# binding and long-lived API key your connected accounts have synced, with
|
|
377
|
+
# the findings that have evidence against them: unused beyond the staleness
|
|
378
|
+
# window, holding administrative or wildcard permissions, past the rotation
|
|
379
|
+
# budget their plugin declares, carrying no recorded owner, or signing in
|
|
380
|
+
# without a second factor.
|
|
381
|
+
#
|
|
382
|
+
# This is about principals in **your** clouds — it is neither your
|
|
383
|
+
# Infrawrench team's roles (`/team`) nor the credentials Infrawrench stores
|
|
384
|
+
# for you (`/credential-hygiene`).
|
|
385
|
+
#
|
|
386
|
+
# No provider API calls are made: everything is computed from already-synced
|
|
387
|
+
# fields, so a principal whose provider does not report last use is reported
|
|
388
|
+
# with `activity: "unknown"` and is never called stale. Findings the
|
|
389
|
+
# organization has dismissed are reported separately under `dismissed` and
|
|
390
|
+
# are excluded from `findings`, `counts`, `byRule` and the security alerts.
|
|
391
|
+
#
|
|
392
|
+
# _Requires permission: `resources:read`._
|
|
393
|
+
#
|
|
394
|
+
# GET /api/org/{orgId}/access-review
|
|
395
|
+
#
|
|
396
|
+
# Raises on 400: Bad request
|
|
397
|
+
#
|
|
398
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
399
|
+
# constructed with.
|
|
400
|
+
# @param stale_days [Integer, nil] Staleness window in days. Defaults to 90.
|
|
401
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
402
|
+
# @return [Hash] Parsed JSON, shaped as `AccessReviewResponse` — see
|
|
403
|
+
# `sig/infrawrench/sdk.rbs`.
|
|
404
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
405
|
+
def get(org_id: nil, stale_days: nil, request_options: nil)
|
|
406
|
+
@transport.request(
|
|
407
|
+
http_method: "GET",
|
|
408
|
+
path: "/api/org/{orgId}/access-review",
|
|
409
|
+
path_params: { "orgId" => org_id },
|
|
410
|
+
query: { "staleDays" => stale_days },
|
|
411
|
+
request_options: request_options
|
|
412
|
+
)
|
|
413
|
+
end
|
|
414
|
+
end
|
|
415
|
+
|
|
249
416
|
# `client.accounts.credentials`
|
|
250
417
|
class AccountsCredentialsNamespace
|
|
251
418
|
# @api private
|
|
@@ -6395,6 +6562,334 @@ module Infrawrench
|
|
|
6395
6562
|
end
|
|
6396
6563
|
end
|
|
6397
6564
|
|
|
6565
|
+
# `client.incidents.get`
|
|
6566
|
+
class IncidentsGetNamespace
|
|
6567
|
+
# @api private
|
|
6568
|
+
# @param transport [Transport]
|
|
6569
|
+
def initialize(transport)
|
|
6570
|
+
@transport = transport
|
|
6571
|
+
end
|
|
6572
|
+
|
|
6573
|
+
# List declared incidents
|
|
6574
|
+
#
|
|
6575
|
+
# Every incident the organization has declared, newest first, each with the
|
|
6576
|
+
# artefacts its declaration created — including the ones that failed.
|
|
6577
|
+
#
|
|
6578
|
+
# _Requires permission: `incidents:read`._
|
|
6579
|
+
#
|
|
6580
|
+
# GET /api/org/{orgId}/incidents
|
|
6581
|
+
#
|
|
6582
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
6583
|
+
# constructed with.
|
|
6584
|
+
# @param status [String, nil] `open`, `mitigated`, `resolved`, or `all` (the default).
|
|
6585
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
6586
|
+
# @return [Hash] Parsed JSON, shaped as `IncidentList` — see `sig/infrawrench/sdk.rbs`.
|
|
6587
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
6588
|
+
def get(org_id: nil, status: nil, request_options: nil)
|
|
6589
|
+
@transport.request(
|
|
6590
|
+
http_method: "GET",
|
|
6591
|
+
path: "/api/org/{orgId}/incidents",
|
|
6592
|
+
path_params: { "orgId" => org_id },
|
|
6593
|
+
query: { "status" => status },
|
|
6594
|
+
request_options: request_options
|
|
6595
|
+
)
|
|
6596
|
+
end
|
|
6597
|
+
|
|
6598
|
+
# Read one incident
|
|
6599
|
+
#
|
|
6600
|
+
# The incident with its artefacts and its operator notes.
|
|
6601
|
+
#
|
|
6602
|
+
# _Requires permission: `incidents:read`._
|
|
6603
|
+
#
|
|
6604
|
+
# GET /api/org/{orgId}/incidents/{incidentId}
|
|
6605
|
+
#
|
|
6606
|
+
# Raises on 404: Not found
|
|
6607
|
+
#
|
|
6608
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
6609
|
+
# constructed with.
|
|
6610
|
+
# @param incident_id [String]
|
|
6611
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
6612
|
+
# @return [Hash] Parsed JSON, shaped as `IncidentDetail` — see `sig/infrawrench/sdk.rbs`.
|
|
6613
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
6614
|
+
def get_org_org_id_incidents_incident_id(incident_id:, org_id: nil, request_options: nil)
|
|
6615
|
+
@transport.request(
|
|
6616
|
+
http_method: "GET",
|
|
6617
|
+
path: "/api/org/{orgId}/incidents/{incidentId}",
|
|
6618
|
+
path_params: { "orgId" => org_id, "incidentId" => incident_id },
|
|
6619
|
+
request_options: request_options
|
|
6620
|
+
)
|
|
6621
|
+
end
|
|
6622
|
+
end
|
|
6623
|
+
|
|
6624
|
+
# `client.incidents.notes`
|
|
6625
|
+
class IncidentsNotesNamespace
|
|
6626
|
+
# @api private
|
|
6627
|
+
# @param transport [Transport]
|
|
6628
|
+
def initialize(transport)
|
|
6629
|
+
@transport = transport
|
|
6630
|
+
end
|
|
6631
|
+
|
|
6632
|
+
# Add an operator note
|
|
6633
|
+
#
|
|
6634
|
+
# The running commentary no join can reconstruct. `occurredAt` may be
|
|
6635
|
+
# backdated so a note typed at 04:00 lands on the timeline where it belongs.
|
|
6636
|
+
#
|
|
6637
|
+
# _Requires permission: `incidents:write`._
|
|
6638
|
+
#
|
|
6639
|
+
# POST /api/org/{orgId}/incidents/{incidentId}/notes
|
|
6640
|
+
#
|
|
6641
|
+
# Raises on 400: Bad request
|
|
6642
|
+
#
|
|
6643
|
+
# Raises on 404: Not found
|
|
6644
|
+
#
|
|
6645
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
6646
|
+
# constructed with.
|
|
6647
|
+
# @param incident_id [String]
|
|
6648
|
+
# @param body [Hash, nil] Request body, shaped as `IncidentNoteCreate`.
|
|
6649
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
6650
|
+
# @return [Hash] Parsed JSON, shaped as `IncidentNote` — see `sig/infrawrench/sdk.rbs`.
|
|
6651
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
6652
|
+
def create(incident_id:, org_id: nil, body: nil, request_options: nil)
|
|
6653
|
+
@transport.request(
|
|
6654
|
+
http_method: "POST",
|
|
6655
|
+
path: "/api/org/{orgId}/incidents/{incidentId}/notes",
|
|
6656
|
+
path_params: { "orgId" => org_id, "incidentId" => incident_id },
|
|
6657
|
+
body: body,
|
|
6658
|
+
request_options: request_options
|
|
6659
|
+
)
|
|
6660
|
+
end
|
|
6661
|
+
|
|
6662
|
+
# Delete an operator note
|
|
6663
|
+
#
|
|
6664
|
+
# _Requires permission: `incidents:write`._
|
|
6665
|
+
#
|
|
6666
|
+
# DELETE /api/org/{orgId}/incidents/{incidentId}/notes/{noteId}
|
|
6667
|
+
#
|
|
6668
|
+
# Raises on 404: Not found
|
|
6669
|
+
#
|
|
6670
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
6671
|
+
# constructed with.
|
|
6672
|
+
# @param incident_id [String]
|
|
6673
|
+
# @param note_id [String]
|
|
6674
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
6675
|
+
# @return [nil] This endpoint returns no content.
|
|
6676
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
6677
|
+
def delete(incident_id:, note_id:, org_id: nil, request_options: nil)
|
|
6678
|
+
@transport.request(
|
|
6679
|
+
http_method: "DELETE",
|
|
6680
|
+
path: "/api/org/{orgId}/incidents/{incidentId}/notes/{noteId}",
|
|
6681
|
+
path_params: { "orgId" => org_id, "incidentId" => incident_id, "noteId" => note_id },
|
|
6682
|
+
accept: :empty,
|
|
6683
|
+
request_options: request_options
|
|
6684
|
+
)
|
|
6685
|
+
end
|
|
6686
|
+
end
|
|
6687
|
+
|
|
6688
|
+
# `client.incidents`
|
|
6689
|
+
class IncidentsNamespace
|
|
6690
|
+
# @return [IncidentsGetNamespace] `client.incidents.get`
|
|
6691
|
+
attr_reader :get
|
|
6692
|
+
# @return [IncidentsNotesNamespace] `client.incidents.notes`
|
|
6693
|
+
attr_reader :notes
|
|
6694
|
+
|
|
6695
|
+
# @api private
|
|
6696
|
+
# @param transport [Transport]
|
|
6697
|
+
def initialize(transport)
|
|
6698
|
+
@transport = transport
|
|
6699
|
+
@get = IncidentsGetNamespace.new(@transport)
|
|
6700
|
+
@notes = IncidentsNotesNamespace.new(@transport)
|
|
6701
|
+
end
|
|
6702
|
+
|
|
6703
|
+
# Declare an incident
|
|
6704
|
+
#
|
|
6705
|
+
# Record the incident and perform the opted-in side effects. The incident
|
|
6706
|
+
# row is written first and alone: a 201 means it exists, and the `artifacts`
|
|
6707
|
+
# array on the response says what else happened. No side effect can lose the
|
|
6708
|
+
# declaration, and none is swallowed. Audit-logged.
|
|
6709
|
+
#
|
|
6710
|
+
# _Requires permission: `incidents:write`._
|
|
6711
|
+
#
|
|
6712
|
+
# POST /api/org/{orgId}/incidents
|
|
6713
|
+
#
|
|
6714
|
+
# Raises on 400: Bad request
|
|
6715
|
+
#
|
|
6716
|
+
# Raises on 403: Forbidden
|
|
6717
|
+
#
|
|
6718
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
6719
|
+
# constructed with.
|
|
6720
|
+
# @param body [Hash, nil] Request body, shaped as `IncidentDeclare`.
|
|
6721
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
6722
|
+
# @return [Hash] Parsed JSON, shaped as `Incident` — see `sig/infrawrench/sdk.rbs`.
|
|
6723
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
6724
|
+
def create(org_id: nil, body: nil, request_options: nil)
|
|
6725
|
+
@transport.request(
|
|
6726
|
+
http_method: "POST",
|
|
6727
|
+
path: "/api/org/{orgId}/incidents",
|
|
6728
|
+
path_params: { "orgId" => org_id },
|
|
6729
|
+
body: body,
|
|
6730
|
+
request_options: request_options
|
|
6731
|
+
)
|
|
6732
|
+
end
|
|
6733
|
+
|
|
6734
|
+
# Delete an incident
|
|
6735
|
+
#
|
|
6736
|
+
# Removes the incident, its notes and its artefact records. It does not lift
|
|
6737
|
+
# a freeze or close a status-page update — resolve for that; deleting is for
|
|
6738
|
+
# a mis-declaration. Audit-logged.
|
|
6739
|
+
#
|
|
6740
|
+
# _Requires permission: `incidents:write`._
|
|
6741
|
+
#
|
|
6742
|
+
# DELETE /api/org/{orgId}/incidents/{incidentId}
|
|
6743
|
+
#
|
|
6744
|
+
# Raises on 404: Not found
|
|
6745
|
+
#
|
|
6746
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
6747
|
+
# constructed with.
|
|
6748
|
+
# @param incident_id [String]
|
|
6749
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
6750
|
+
# @return [nil] This endpoint returns no content.
|
|
6751
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
6752
|
+
def delete(incident_id:, org_id: nil, request_options: nil)
|
|
6753
|
+
@transport.request(
|
|
6754
|
+
http_method: "DELETE",
|
|
6755
|
+
path: "/api/org/{orgId}/incidents/{incidentId}",
|
|
6756
|
+
path_params: { "orgId" => org_id, "incidentId" => incident_id },
|
|
6757
|
+
accept: :empty,
|
|
6758
|
+
request_options: request_options
|
|
6759
|
+
)
|
|
6760
|
+
end
|
|
6761
|
+
|
|
6762
|
+
# Export a pre-filled postmortem
|
|
6763
|
+
#
|
|
6764
|
+
# Markdown with the timeline, the affected resources, the duration, the time
|
|
6765
|
+
# to mitigate and the notes already filled in. The analysis headings —
|
|
6766
|
+
# impact, root cause, action items — are deliberately left blank: a
|
|
6767
|
+
# generated document that guesses at a root cause is worse than one that
|
|
6768
|
+
# leaves a heading.
|
|
6769
|
+
#
|
|
6770
|
+
# _Requires permission: `incidents:read`._
|
|
6771
|
+
#
|
|
6772
|
+
# GET /api/org/{orgId}/incidents/{incidentId}/postmortem
|
|
6773
|
+
#
|
|
6774
|
+
# Raises on 404: Not found
|
|
6775
|
+
#
|
|
6776
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
6777
|
+
# constructed with.
|
|
6778
|
+
# @param incident_id [String]
|
|
6779
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
6780
|
+
# @return [Hash] Parsed JSON, shaped as `IncidentPostmortem` — see
|
|
6781
|
+
# `sig/infrawrench/sdk.rbs`.
|
|
6782
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
6783
|
+
def postmortem(incident_id:, org_id: nil, request_options: nil)
|
|
6784
|
+
@transport.request(
|
|
6785
|
+
http_method: "GET",
|
|
6786
|
+
path: "/api/org/{orgId}/incidents/{incidentId}/postmortem",
|
|
6787
|
+
path_params: { "orgId" => org_id, "incidentId" => incident_id },
|
|
6788
|
+
request_options: request_options
|
|
6789
|
+
)
|
|
6790
|
+
end
|
|
6791
|
+
|
|
6792
|
+
# Retry the artefacts that failed
|
|
6793
|
+
#
|
|
6794
|
+
# Re-runs only the side effects whose artefact is in a failure state,
|
|
6795
|
+
# replacing each failure rather than queueing a second attempt beside it. A
|
|
6796
|
+
# `failed` artefact is **re-created**; a `close_failed` one is **re-closed**
|
|
6797
|
+
# — re-creating the latter would open a second change freeze or post a
|
|
6798
|
+
# duplicate public notice. A status-page retry reuses the components
|
|
6799
|
+
# recorded on the artefact's `request`, so the announcement keeps its
|
|
6800
|
+
# original scope. Its own endpoint rather than a flag on PATCH, because it
|
|
6801
|
+
# writes into three external systems. Audit-logged.
|
|
6802
|
+
#
|
|
6803
|
+
# _Requires permission: `incidents:write`._
|
|
6804
|
+
#
|
|
6805
|
+
# POST /api/org/{orgId}/incidents/{incidentId}/retry-artifacts
|
|
6806
|
+
#
|
|
6807
|
+
# Raises on 404: Not found
|
|
6808
|
+
#
|
|
6809
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
6810
|
+
# constructed with.
|
|
6811
|
+
# @param incident_id [String]
|
|
6812
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
6813
|
+
# @return [Hash] Parsed JSON, shaped as `Incident` — see `sig/infrawrench/sdk.rbs`.
|
|
6814
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
6815
|
+
def retry_artifacts(incident_id:, org_id: nil, request_options: nil)
|
|
6816
|
+
@transport.request(
|
|
6817
|
+
http_method: "POST",
|
|
6818
|
+
path: "/api/org/{orgId}/incidents/{incidentId}/retry-artifacts",
|
|
6819
|
+
path_params: { "orgId" => org_id, "incidentId" => incident_id },
|
|
6820
|
+
request_options: request_options
|
|
6821
|
+
)
|
|
6822
|
+
end
|
|
6823
|
+
|
|
6824
|
+
# Assemble the incident's timeline
|
|
6825
|
+
#
|
|
6826
|
+
# Merged on read from what is already recorded between the incident's start
|
|
6827
|
+
# and its resolution: resource changes, deployments, cost anomalies,
|
|
6828
|
+
# provider status incidents, audit entries, change freezes and workflow runs
|
|
6829
|
+
# (all via the same union the Moment screen uses), plus probe state
|
|
6830
|
+
# transitions, metric-alert firings, the incident's own life events, its
|
|
6831
|
+
# artefacts and its operator notes. Nothing is copied — a correction
|
|
6832
|
+
# upstream shows up here on the next read.
|
|
6833
|
+
#
|
|
6834
|
+
# Probe transitions are an approximation: `synthetic_probes` keeps only a
|
|
6835
|
+
# single `lastStateChangeAt`, so a probe that flapped twice inside the
|
|
6836
|
+
# window contributes its most recent flip and no more.
|
|
6837
|
+
#
|
|
6838
|
+
# _Requires permission: `incidents:read`._
|
|
6839
|
+
#
|
|
6840
|
+
# GET /api/org/{orgId}/incidents/{incidentId}/timeline
|
|
6841
|
+
#
|
|
6842
|
+
# Raises on 404: Not found
|
|
6843
|
+
#
|
|
6844
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
6845
|
+
# constructed with.
|
|
6846
|
+
# @param incident_id [String]
|
|
6847
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
6848
|
+
# @return [Hash] Parsed JSON, shaped as `IncidentTimeline` — see `sig/infrawrench/sdk.rbs`.
|
|
6849
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
6850
|
+
def timeline(incident_id:, org_id: nil, request_options: nil)
|
|
6851
|
+
@transport.request(
|
|
6852
|
+
http_method: "GET",
|
|
6853
|
+
path: "/api/org/{orgId}/incidents/{incidentId}/timeline",
|
|
6854
|
+
path_params: { "orgId" => org_id, "incidentId" => incident_id },
|
|
6855
|
+
request_options: request_options
|
|
6856
|
+
)
|
|
6857
|
+
end
|
|
6858
|
+
|
|
6859
|
+
# Edit or transition an incident
|
|
6860
|
+
#
|
|
6861
|
+
# Omitted fields keep their value. Setting `status` stamps the matching
|
|
6862
|
+
# timestamp, and resolving undoes exactly what this incident created — the
|
|
6863
|
+
# freeze whose id is on its own artefact, not whatever freeze happens to be
|
|
6864
|
+
# in effect. Resolving an incident that was never marked mitigated
|
|
6865
|
+
# back-fills `mitigatedAt` from `resolvedAt`. Audit-logged.
|
|
6866
|
+
#
|
|
6867
|
+
# _Requires permission: `incidents:write`._
|
|
6868
|
+
#
|
|
6869
|
+
# PATCH /api/org/{orgId}/incidents/{incidentId}
|
|
6870
|
+
#
|
|
6871
|
+
# Raises on 400: Bad request
|
|
6872
|
+
#
|
|
6873
|
+
# Raises on 404: Not found
|
|
6874
|
+
#
|
|
6875
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
6876
|
+
# constructed with.
|
|
6877
|
+
# @param incident_id [String]
|
|
6878
|
+
# @param body [Hash, nil] Request body, shaped as `IncidentPatch`.
|
|
6879
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
6880
|
+
# @return [Hash] Parsed JSON, shaped as `Incident` — see `sig/infrawrench/sdk.rbs`.
|
|
6881
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
6882
|
+
def update(incident_id:, org_id: nil, body: nil, request_options: nil)
|
|
6883
|
+
@transport.request(
|
|
6884
|
+
http_method: "PATCH",
|
|
6885
|
+
path: "/api/org/{orgId}/incidents/{incidentId}",
|
|
6886
|
+
path_params: { "orgId" => org_id, "incidentId" => incident_id },
|
|
6887
|
+
body: body,
|
|
6888
|
+
request_options: request_options
|
|
6889
|
+
)
|
|
6890
|
+
end
|
|
6891
|
+
end
|
|
6892
|
+
|
|
6398
6893
|
# `client.invitations.by_token`
|
|
6399
6894
|
class InvitationsByTokenNamespace
|
|
6400
6895
|
# @api private
|
|
@@ -13224,6 +13719,8 @@ module Infrawrench
|
|
|
13224
13719
|
attr_reader :transport
|
|
13225
13720
|
# @return [AccessRequestsNamespace] `client.access_requests`
|
|
13226
13721
|
attr_reader :access_requests
|
|
13722
|
+
# @return [AccessReviewNamespace] `client.access_review`
|
|
13723
|
+
attr_reader :access_review
|
|
13227
13724
|
# @return [AccountsNamespace] `client.accounts`
|
|
13228
13725
|
attr_reader :accounts
|
|
13229
13726
|
# @return [AgentsNamespace] `client.agents`
|
|
@@ -13304,6 +13801,8 @@ module Infrawrench
|
|
|
13304
13801
|
attr_reader :environment_diff
|
|
13305
13802
|
# @return [ExpiringNamespace] `client.expiring`
|
|
13306
13803
|
attr_reader :expiring
|
|
13804
|
+
# @return [IncidentsNamespace] `client.incidents`
|
|
13805
|
+
attr_reader :incidents
|
|
13307
13806
|
# @return [InvitationsNamespace] `client.invitations`
|
|
13308
13807
|
attr_reader :invitations
|
|
13309
13808
|
# @return [InvoicesNamespace] `client.invoices`
|
|
@@ -13393,6 +13892,7 @@ module Infrawrench
|
|
|
13393
13892
|
def initialize(**options)
|
|
13394
13893
|
@transport = Transport.new(**options)
|
|
13395
13894
|
@access_requests = AccessRequestsNamespace.new(@transport)
|
|
13895
|
+
@access_review = AccessReviewNamespace.new(@transport)
|
|
13396
13896
|
@accounts = AccountsNamespace.new(@transport)
|
|
13397
13897
|
@agents = AgentsNamespace.new(@transport)
|
|
13398
13898
|
@alert_rules = AlertRulesNamespace.new(@transport)
|
|
@@ -13433,6 +13933,7 @@ module Infrawrench
|
|
|
13433
13933
|
@docker = DockerNamespace.new(@transport)
|
|
13434
13934
|
@environment_diff = EnvironmentDiffNamespace.new(@transport)
|
|
13435
13935
|
@expiring = ExpiringNamespace.new(@transport)
|
|
13936
|
+
@incidents = IncidentsNamespace.new(@transport)
|
|
13436
13937
|
@invitations = InvitationsNamespace.new(@transport)
|
|
13437
13938
|
@invoices = InvoicesNamespace.new(@transport)
|
|
13438
13939
|
@jira = JiraNamespace.new(@transport)
|
data/lib/infrawrench/sdk.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.16.0 | MIT | Copyright (c) 2026 Infrawrench LLC
|
|
4
4
|
# https://github.com/Infrawrench/Infrawrench
|
|
5
5
|
#
|
|
6
|
-
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.
|
|
6
|
+
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.16.0).
|
|
7
7
|
#
|
|
8
8
|
# DO NOT EDIT. Regenerate with:
|
|
9
9
|
# pnpm --filter @infrawrench/web generate:sdk
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.16.0 | MIT | Copyright (c) 2026 Infrawrench LLC
|
|
4
4
|
# https://github.com/Infrawrench/Infrawrench
|
|
5
5
|
#
|
|
6
|
-
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.
|
|
6
|
+
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.16.0).
|
|
7
7
|
#
|
|
8
8
|
# DO NOT EDIT. Regenerate with:
|
|
9
9
|
# pnpm --filter @infrawrench/web generate:sdk
|
data/lib/infrawrench/version.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.16.0 | MIT | Copyright (c) 2026 Infrawrench LLC
|
|
4
4
|
# https://github.com/Infrawrench/Infrawrench
|
|
5
5
|
#
|
|
6
|
-
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.
|
|
6
|
+
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.16.0).
|
|
7
7
|
#
|
|
8
8
|
# DO NOT EDIT. Regenerate with:
|
|
9
9
|
# pnpm --filter @infrawrench/web generate:sdk
|
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
# Kept in its own file so the gemspec can read the version without loading the
|
|
16
16
|
# client — a gemspec that pulls in net/http is a gemspec that can fail to parse.
|
|
17
17
|
module Infrawrench
|
|
18
|
-
VERSION = "1.
|
|
18
|
+
VERSION = "1.16.0"
|
|
19
19
|
end
|
data/lib/infrawrench-sdk.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.16.0 | MIT | Copyright (c) 2026 Infrawrench LLC
|
|
4
4
|
# https://github.com/Infrawrench/Infrawrench
|
|
5
5
|
#
|
|
6
|
-
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.
|
|
6
|
+
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.16.0).
|
|
7
7
|
#
|
|
8
8
|
# DO NOT EDIT. Regenerate with:
|
|
9
9
|
# pnpm --filter @infrawrench/web generate:sdk
|
data/sig/infrawrench/sdk.rbs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# infrawrench-sdk v1.
|
|
1
|
+
# infrawrench-sdk v1.16.0 | MIT | Copyright (c) 2026 Infrawrench LLC
|
|
2
2
|
# https://github.com/Infrawrench/Infrawrench
|
|
3
3
|
#
|
|
4
|
-
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.
|
|
4
|
+
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.16.0).
|
|
5
5
|
#
|
|
6
6
|
# DO NOT EDIT. Regenerate with:
|
|
7
7
|
# pnpm --filter @infrawrench/web generate:sdk
|
|
@@ -104,6 +104,57 @@ module Infrawrench
|
|
|
104
104
|
?"missing" => Array[String]
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
# Spec schema: `AccessFinding`.
|
|
108
|
+
type access_finding = {
|
|
109
|
+
"resourceId" => String,
|
|
110
|
+
"ruleId" => "access-review:stale-principal"
|
|
111
|
+
| "access-review:admin-principal"
|
|
112
|
+
| "access-review:key-past-rotation"
|
|
113
|
+
| "access-review:no-recorded-owner"
|
|
114
|
+
| "access-review:no-mfa",
|
|
115
|
+
"title" => String,
|
|
116
|
+
"severity" => "critical" | "high" | "medium" | "low",
|
|
117
|
+
"reason" => String,
|
|
118
|
+
"principal" => access_principal
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
# Spec schema: `AccessPrincipal`.
|
|
122
|
+
type access_principal = {
|
|
123
|
+
"resourceId" => String,
|
|
124
|
+
"pluginId" => plugin_id,
|
|
125
|
+
"pluginName" => String,
|
|
126
|
+
"resourceTypeId" => String,
|
|
127
|
+
"resourceTypeName" => String,
|
|
128
|
+
"accountId" => String,
|
|
129
|
+
"accountName" => String,
|
|
130
|
+
"displayName" => String,
|
|
131
|
+
"externalId" => String | nil,
|
|
132
|
+
"role" => "user" | "group" | "role" | "service-account" | "key" | "binding",
|
|
133
|
+
"lastUsedAt" => String | nil,
|
|
134
|
+
"daysSinceLastUsed" => Integer | nil,
|
|
135
|
+
"activity" => "active" | "stale" | "unknown",
|
|
136
|
+
"createdAt" => String | nil,
|
|
137
|
+
"ageDays" => Integer | nil,
|
|
138
|
+
"admin" => bool | nil,
|
|
139
|
+
"mfa" => bool | nil,
|
|
140
|
+
"parent" => String | nil,
|
|
141
|
+
"owner" => access_principal_owner,
|
|
142
|
+
"revokeActionId" => String | nil
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
# Who owns the resource, from the resource-ownership record. Null when nobody
|
|
146
|
+
# is named.
|
|
147
|
+
#
|
|
148
|
+
# Spec schema: `AccessPrincipalOwner`.
|
|
149
|
+
type access_principal_owner = {
|
|
150
|
+
"userId" => String | nil,
|
|
151
|
+
"displayName" => String,
|
|
152
|
+
"isLabel" => bool,
|
|
153
|
+
"ticketUrl" => String | nil,
|
|
154
|
+
"purpose" => String | nil
|
|
155
|
+
}
|
|
156
|
+
| nil
|
|
157
|
+
|
|
107
158
|
# Spec schema: `AccessRequest`.
|
|
108
159
|
type access_request = {
|
|
109
160
|
"id" => String,
|
|
@@ -137,6 +188,63 @@ module Infrawrench
|
|
|
137
188
|
# Spec schema: `AccessRequestCreate`.
|
|
138
189
|
type access_request_create = { "permissions" => Array[String], "reason" => String, "durationMinutes" => Integer }
|
|
139
190
|
|
|
191
|
+
# Spec schema: `AccessReviewDismissal`.
|
|
192
|
+
type access_review_dismissal = {
|
|
193
|
+
"resourceId" => String,
|
|
194
|
+
"ruleId" => String,
|
|
195
|
+
"dismissedAt" => String,
|
|
196
|
+
"dismissedBy" => String | nil,
|
|
197
|
+
"reason" => String | nil
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
# Spec schema: `AccessReviewDismissalCreate`.
|
|
201
|
+
type access_review_dismissal_create = {
|
|
202
|
+
"resourceId" => String,
|
|
203
|
+
"ruleId" => "access-review:stale-principal"
|
|
204
|
+
| "access-review:admin-principal"
|
|
205
|
+
| "access-review:key-past-rotation"
|
|
206
|
+
| "access-review:no-recorded-owner"
|
|
207
|
+
| "access-review:no-mfa",
|
|
208
|
+
?"reason" => String | nil
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
# Spec schema: `AccessReviewResponse`.
|
|
212
|
+
type access_review_response = {
|
|
213
|
+
"principals" => Array[access_principal],
|
|
214
|
+
"findings" => Array[access_finding],
|
|
215
|
+
"totalCount" => Integer,
|
|
216
|
+
"counts" => access_review_severity_counts,
|
|
217
|
+
"byRule" => access_review_rule_counts,
|
|
218
|
+
"byRole" => access_review_role_counts,
|
|
219
|
+
"dismissed" => Array[dismissed_access_finding],
|
|
220
|
+
"dismissedCount" => Integer,
|
|
221
|
+
"unknownActivityCount" => Integer,
|
|
222
|
+
"staleDays" => Integer,
|
|
223
|
+
"generatedAt" => String
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
# Spec schema: `AccessReviewRoleCounts`.
|
|
227
|
+
type access_review_role_counts = {
|
|
228
|
+
"user" => Integer,
|
|
229
|
+
"group" => Integer,
|
|
230
|
+
"role" => Integer,
|
|
231
|
+
"service-account" => Integer,
|
|
232
|
+
"key" => Integer,
|
|
233
|
+
"binding" => Integer
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
# Spec schema: `AccessReviewRuleCounts`.
|
|
237
|
+
type access_review_rule_counts = {
|
|
238
|
+
"access-review:stale-principal" => Integer,
|
|
239
|
+
"access-review:admin-principal" => Integer,
|
|
240
|
+
"access-review:key-past-rotation" => Integer,
|
|
241
|
+
"access-review:no-recorded-owner" => Integer,
|
|
242
|
+
"access-review:no-mfa" => Integer
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
# Spec schema: `AccessReviewSeverityCounts`.
|
|
246
|
+
type access_review_severity_counts = { "critical" => Integer, "high" => Integer, "medium" => Integer, "low" => Integer }
|
|
247
|
+
|
|
140
248
|
# Spec schema: `AccessRevokeConflict`.
|
|
141
249
|
type access_revoke_conflict = { "error" => String }
|
|
142
250
|
|
|
@@ -328,6 +436,7 @@ module Infrawrench
|
|
|
328
436
|
| "postureAlerts"
|
|
329
437
|
| "probeAlerts"
|
|
330
438
|
| "quotaAlerts"
|
|
439
|
+
| "incidentAlerts"
|
|
331
440
|
| "weeklyDigest"
|
|
332
441
|
|
|
333
442
|
# Spec schema: `AllocationRule`.
|
|
@@ -2177,6 +2286,21 @@ module Infrawrench
|
|
|
2177
2286
|
# Spec schema: `DigestTransportResult`.
|
|
2178
2287
|
type digest_transport_result = { "attempted" => Integer, "succeeded" => Integer }
|
|
2179
2288
|
|
|
2289
|
+
# Spec schema: `DismissedAccessFinding`.
|
|
2290
|
+
type dismissed_access_finding = {
|
|
2291
|
+
"resourceId" => String,
|
|
2292
|
+
"ruleId" => "access-review:stale-principal"
|
|
2293
|
+
| "access-review:admin-principal"
|
|
2294
|
+
| "access-review:key-past-rotation"
|
|
2295
|
+
| "access-review:no-recorded-owner"
|
|
2296
|
+
| "access-review:no-mfa",
|
|
2297
|
+
"title" => String,
|
|
2298
|
+
"severity" => "critical" | "high" | "medium" | "low",
|
|
2299
|
+
"reason" => String,
|
|
2300
|
+
"principal" => access_principal,
|
|
2301
|
+
"dismissal" => access_review_dismissal
|
|
2302
|
+
}
|
|
2303
|
+
|
|
2180
2304
|
# Spec schema: `DismissedPostureFinding`.
|
|
2181
2305
|
type dismissed_posture_finding = {
|
|
2182
2306
|
"resourceId" => String,
|
|
@@ -2584,6 +2708,148 @@ module Infrawrench
|
|
|
2584
2708
|
"isImported" => bool
|
|
2585
2709
|
}
|
|
2586
2710
|
|
|
2711
|
+
# Spec schema: `Incident`.
|
|
2712
|
+
type incident = {
|
|
2713
|
+
"id" => String,
|
|
2714
|
+
"title" => String,
|
|
2715
|
+
"severity" => "sev1" | "sev2" | "sev3" | "sev4",
|
|
2716
|
+
"status" => "open" | "mitigated" | "resolved",
|
|
2717
|
+
"summary" => String | nil,
|
|
2718
|
+
"startedAt" => String,
|
|
2719
|
+
"mitigatedAt" => String | nil,
|
|
2720
|
+
"resolvedAt" => String | nil,
|
|
2721
|
+
"declaredByUserId" => String | nil,
|
|
2722
|
+
"declaredByName" => String | nil,
|
|
2723
|
+
"resolvedByUserId" => String | nil,
|
|
2724
|
+
"affectedResourceIds" => Array[String],
|
|
2725
|
+
"affectedAccountIds" => Array[String],
|
|
2726
|
+
"issueUrl" => String | nil,
|
|
2727
|
+
"createdAt" => String,
|
|
2728
|
+
"updatedAt" => String,
|
|
2729
|
+
"artifacts" => Array[incident_artifact],
|
|
2730
|
+
"noteCount" => Integer
|
|
2731
|
+
}
|
|
2732
|
+
|
|
2733
|
+
# Spec schema: `IncidentActions`.
|
|
2734
|
+
type incident_actions = {
|
|
2735
|
+
?"openFreeze" => bool,
|
|
2736
|
+
?"pinMoment" => bool,
|
|
2737
|
+
?"postSlack" => bool,
|
|
2738
|
+
?"statusPageId" => String | nil,
|
|
2739
|
+
?"statusPageComponentIds" => Array[String]
|
|
2740
|
+
}
|
|
2741
|
+
|
|
2742
|
+
# Spec schema: `IncidentArtifact`.
|
|
2743
|
+
type incident_artifact = {
|
|
2744
|
+
"id" => String,
|
|
2745
|
+
"kind" => "freeze" | "moment" | "slack" | "status-page",
|
|
2746
|
+
"status" => "created" | "failed" | "closed" | "close_failed",
|
|
2747
|
+
"label" => String | nil,
|
|
2748
|
+
"refId" => String | String | nil,
|
|
2749
|
+
"refSecondary" => String | nil,
|
|
2750
|
+
"error" => String | nil,
|
|
2751
|
+
"request" => incident_artifact_request,
|
|
2752
|
+
"createdAt" => String,
|
|
2753
|
+
"updatedAt" => String
|
|
2754
|
+
}
|
|
2755
|
+
|
|
2756
|
+
# What the declaration asked for, recorded so a retry asks for the same thing.
|
|
2757
|
+
# Present on the status-page artefact, where a retry that forgot the
|
|
2758
|
+
# operator's chosen components would publish the outage against the whole
|
|
2759
|
+
# page.
|
|
2760
|
+
#
|
|
2761
|
+
# Spec schema: `IncidentArtifactRequest`.
|
|
2762
|
+
type incident_artifact_request = { ?"statusPageId" => String | nil, ?"componentIds" => Array[String] } | nil
|
|
2763
|
+
|
|
2764
|
+
# Spec schema: `IncidentDeclare`.
|
|
2765
|
+
type incident_declare = {
|
|
2766
|
+
"title" => String,
|
|
2767
|
+
?"severity" => "sev1" | "sev2" | "sev3" | "sev4",
|
|
2768
|
+
?"summary" => String | nil,
|
|
2769
|
+
?"startedAt" => String,
|
|
2770
|
+
?"affectedResourceIds" => Array[String],
|
|
2771
|
+
?"affectedAccountIds" => Array[String],
|
|
2772
|
+
?"actions" => incident_actions
|
|
2773
|
+
}
|
|
2774
|
+
|
|
2775
|
+
# Spec schema: `IncidentDetail`.
|
|
2776
|
+
type incident_detail = { "incident" => incident, "notes" => Array[incident_note] }
|
|
2777
|
+
|
|
2778
|
+
# Spec schema: `IncidentList`.
|
|
2779
|
+
type incident_list = { "incidents" => Array[incident] }
|
|
2780
|
+
|
|
2781
|
+
# Spec schema: `IncidentNote`.
|
|
2782
|
+
type incident_note = {
|
|
2783
|
+
"id" => String,
|
|
2784
|
+
"body" => String,
|
|
2785
|
+
"authorUserId" => String | nil,
|
|
2786
|
+
"authorName" => String | nil,
|
|
2787
|
+
"occurredAt" => String,
|
|
2788
|
+
"createdAt" => String
|
|
2789
|
+
}
|
|
2790
|
+
|
|
2791
|
+
# Spec schema: `IncidentNoteCreate`.
|
|
2792
|
+
type incident_note_create = { "body" => String, ?"occurredAt" => String }
|
|
2793
|
+
|
|
2794
|
+
# Spec schema: `IncidentPatch`.
|
|
2795
|
+
type incident_patch = {
|
|
2796
|
+
?"title" => String,
|
|
2797
|
+
?"severity" => "sev1" | "sev2" | "sev3" | "sev4",
|
|
2798
|
+
?"status" => "open" | "mitigated" | "resolved",
|
|
2799
|
+
?"summary" => String | nil,
|
|
2800
|
+
?"affectedResourceIds" => Array[String],
|
|
2801
|
+
?"affectedAccountIds" => Array[String],
|
|
2802
|
+
?"issueUrl" => String | nil
|
|
2803
|
+
}
|
|
2804
|
+
|
|
2805
|
+
# Spec schema: `IncidentPostmortem`.
|
|
2806
|
+
type incident_postmortem = { "markdown" => String, "filename" => String }
|
|
2807
|
+
|
|
2808
|
+
# Spec schema: `IncidentTimeline`.
|
|
2809
|
+
type incident_timeline = {
|
|
2810
|
+
"incidentId" => String,
|
|
2811
|
+
"from" => String,
|
|
2812
|
+
"to" => String,
|
|
2813
|
+
"generatedAt" => String,
|
|
2814
|
+
"entries" => Array[incident_timeline_entry],
|
|
2815
|
+
"feeds" => Array[{ "feed" => String, "status" => "ok" | "omitted" | "error", ?"error" => String | nil }],
|
|
2816
|
+
"truncated" => bool
|
|
2817
|
+
}
|
|
2818
|
+
|
|
2819
|
+
# Spec schema: `IncidentTimelineEntry`.
|
|
2820
|
+
type incident_timeline_entry = {
|
|
2821
|
+
"id" => String,
|
|
2822
|
+
"source" => "incident" | "note" | "artifact" | "moment" | "probe" | "metric-alert",
|
|
2823
|
+
"kind" => String,
|
|
2824
|
+
"at" => String,
|
|
2825
|
+
"title" => String,
|
|
2826
|
+
?"detail" => String | nil,
|
|
2827
|
+
"severity" => "info" | "warning" | "critical",
|
|
2828
|
+
?"authorName" => String | nil,
|
|
2829
|
+
?"resourceId" => String | nil,
|
|
2830
|
+
?"resourceName" => String | nil,
|
|
2831
|
+
?"pluginId" => String | nil,
|
|
2832
|
+
?"accountId" => String | nil,
|
|
2833
|
+
?"link" => {
|
|
2834
|
+
"kind" => "resource"
|
|
2835
|
+
| "changes"
|
|
2836
|
+
| "provider-incident"
|
|
2837
|
+
| "costs"
|
|
2838
|
+
| "workflow-run"
|
|
2839
|
+
| "deployment"
|
|
2840
|
+
| "audit"
|
|
2841
|
+
| "freeze"
|
|
2842
|
+
| "expiring"
|
|
2843
|
+
| "probe"
|
|
2844
|
+
| "metric-alert"
|
|
2845
|
+
| "incident",
|
|
2846
|
+
?"id" => String | nil,
|
|
2847
|
+
?"parentId" => String | nil,
|
|
2848
|
+
?"url" => String | nil
|
|
2849
|
+
}
|
|
2850
|
+
| nil
|
|
2851
|
+
}
|
|
2852
|
+
|
|
2587
2853
|
# Spec schema: `Invitation`.
|
|
2588
2854
|
type invitation = {
|
|
2589
2855
|
"id" => String,
|
|
@@ -3793,6 +4059,8 @@ module Infrawrench
|
|
|
3793
4059
|
| "freezes:read"
|
|
3794
4060
|
| "freezes:write"
|
|
3795
4061
|
| "freezes:override"
|
|
4062
|
+
| "incidents:read"
|
|
4063
|
+
| "incidents:write"
|
|
3796
4064
|
| "tag-policy:override"
|
|
3797
4065
|
| "config:read"
|
|
3798
4066
|
| "config:write"
|
|
@@ -5647,12 +5915,14 @@ module Infrawrench
|
|
|
5647
5915
|
| "changes"
|
|
5648
5916
|
| "expiring"
|
|
5649
5917
|
| "posture"
|
|
5918
|
+
| "access-review"
|
|
5650
5919
|
| "dns"
|
|
5651
5920
|
| "environment-diff"
|
|
5652
5921
|
| "ssh-fanout"
|
|
5653
5922
|
| "metric-alerts"
|
|
5654
5923
|
| "probes"
|
|
5655
5924
|
| "quotas"
|
|
5925
|
+
| "incidents"
|
|
5656
5926
|
| "workflows"
|
|
5657
5927
|
| "deployments"
|
|
5658
5928
|
| "settings"
|
|
@@ -5892,6 +6162,19 @@ module Infrawrench
|
|
|
5892
6162
|
def withdraw: (request_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
|
|
5893
6163
|
end
|
|
5894
6164
|
|
|
6165
|
+
class AccessReviewDismissalsNamespace
|
|
6166
|
+
def initialize: (Transport) -> void
|
|
6167
|
+
def create: (?org_id: String?, ?body: access_review_dismissal_create?, ?request_options: Hash[Symbol, untyped]?) -> access_review_dismissal
|
|
6168
|
+
def delete: (resource_id: String, rule_id: "access-review:stale-principal" | "access-review:admin-principal" | "access-review:key-past-rotation" | "access-review:no-recorded-owner" | "access-review:no-mfa", ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> nil
|
|
6169
|
+
end
|
|
6170
|
+
|
|
6171
|
+
class AccessReviewNamespace
|
|
6172
|
+
attr_reader dismissals: AccessReviewDismissalsNamespace
|
|
6173
|
+
def initialize: (Transport) -> void
|
|
6174
|
+
def export: (?org_id: String?, ?format: "csv" | "json"?, ?stale_days: Integer?, ?request_options: Hash[Symbol, untyped]?) -> access_review_response
|
|
6175
|
+
def get: (?org_id: String?, ?stale_days: Integer?, ?request_options: Hash[Symbol, untyped]?) -> access_review_response
|
|
6176
|
+
end
|
|
6177
|
+
|
|
5895
6178
|
class AccountsCredentialsNamespace
|
|
5896
6179
|
def initialize: (Transport) -> void
|
|
5897
6180
|
def get: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Hash[String, String]
|
|
@@ -6382,6 +6665,30 @@ module Infrawrench
|
|
|
6382
6665
|
def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> expiry_list_response
|
|
6383
6666
|
end
|
|
6384
6667
|
|
|
6668
|
+
class IncidentsGetNamespace
|
|
6669
|
+
def initialize: (Transport) -> void
|
|
6670
|
+
def get: (?org_id: String?, ?status: String?, ?request_options: Hash[Symbol, untyped]?) -> incident_list
|
|
6671
|
+
def get_org_org_id_incidents_incident_id: (incident_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> incident_detail
|
|
6672
|
+
end
|
|
6673
|
+
|
|
6674
|
+
class IncidentsNotesNamespace
|
|
6675
|
+
def initialize: (Transport) -> void
|
|
6676
|
+
def create: (incident_id: String, ?org_id: String?, ?body: incident_note_create?, ?request_options: Hash[Symbol, untyped]?) -> incident_note
|
|
6677
|
+
def delete: (incident_id: String, note_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> nil
|
|
6678
|
+
end
|
|
6679
|
+
|
|
6680
|
+
class IncidentsNamespace
|
|
6681
|
+
attr_reader get: IncidentsGetNamespace
|
|
6682
|
+
attr_reader notes: IncidentsNotesNamespace
|
|
6683
|
+
def initialize: (Transport) -> void
|
|
6684
|
+
def create: (?org_id: String?, ?body: incident_declare?, ?request_options: Hash[Symbol, untyped]?) -> incident
|
|
6685
|
+
def delete: (incident_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> nil
|
|
6686
|
+
def postmortem: (incident_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> incident_postmortem
|
|
6687
|
+
def retry_artifacts: (incident_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> incident
|
|
6688
|
+
def timeline: (incident_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> incident_timeline
|
|
6689
|
+
def update: (incident_id: String, ?org_id: String?, ?body: incident_patch?, ?request_options: Hash[Symbol, untyped]?) -> incident
|
|
6690
|
+
end
|
|
6691
|
+
|
|
6385
6692
|
class InvitationsByTokenNamespace
|
|
6386
6693
|
def initialize: (Transport) -> void
|
|
6387
6694
|
def get: (token: String, ?request_options: Hash[Symbol, untyped]?) -> invitation_detail
|
|
@@ -6879,6 +7186,7 @@ module Infrawrench
|
|
|
6879
7186
|
class APIV1Client
|
|
6880
7187
|
attr_reader transport: Transport
|
|
6881
7188
|
attr_reader access_requests: AccessRequestsNamespace
|
|
7189
|
+
attr_reader access_review: AccessReviewNamespace
|
|
6882
7190
|
attr_reader accounts: AccountsNamespace
|
|
6883
7191
|
attr_reader agents: AgentsNamespace
|
|
6884
7192
|
attr_reader alert_rules: AlertRulesNamespace
|
|
@@ -6919,6 +7227,7 @@ module Infrawrench
|
|
|
6919
7227
|
attr_reader docker: DockerNamespace
|
|
6920
7228
|
attr_reader environment_diff: EnvironmentDiffNamespace
|
|
6921
7229
|
attr_reader expiring: ExpiringNamespace
|
|
7230
|
+
attr_reader incidents: IncidentsNamespace
|
|
6922
7231
|
attr_reader invitations: InvitationsNamespace
|
|
6923
7232
|
attr_reader invoices: InvoicesNamespace
|
|
6924
7233
|
attr_reader jira: JiraNamespace
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: infrawrench-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.16.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Infrawrench LLC
|
|
@@ -11,7 +11,7 @@ bindir: bin
|
|
|
11
11
|
cert_chain: []
|
|
12
12
|
date: 2026-08-12 00:00:00.000000000 Z
|
|
13
13
|
dependencies: []
|
|
14
|
-
description: Generated Ruby client for the Infrawrench API (v1.
|
|
14
|
+
description: Generated Ruby client for the Infrawrench API (v1.16.0). Covers the published
|
|
15
15
|
API surface only — operations marked x-internal in the spec are not generated. No
|
|
16
16
|
runtime dependencies.
|
|
17
17
|
email:
|
|
@@ -58,5 +58,5 @@ requirements: []
|
|
|
58
58
|
rubygems_version: 3.5.22
|
|
59
59
|
signing_key:
|
|
60
60
|
specification_version: 4
|
|
61
|
-
summary: Generated Ruby client for the Infrawrench API (v1.
|
|
61
|
+
summary: Generated Ruby client for the Infrawrench API (v1.16.0).
|
|
62
62
|
test_files: []
|