infrawrench-sdk 1.31.0 → 1.34.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6b9949aa079c143a23690ba5fa79798a1432feced3cce42a39bfba2f9a626c90
4
- data.tar.gz: 70f71ff7e4cf680c9c9363d9d61bdb3d753e6c6c0f70aa6cb04363ccbf9842e5
3
+ metadata.gz: bb980c1a1123712fc1dd3630cb778f4b005f830e9177d144334d835ac0cd4493
4
+ data.tar.gz: d7946079dcf9ffe48c117f76eedd7eafd022530f33d290be1c9e5985743ac9b6
5
5
  SHA512:
6
- metadata.gz: 25404cf3021a1f519e36207932834a902b6748ef3a6214623a850145819b3eb71756201e7371b382de5c35dbfc63ef32bb45078b7e954546d18abca28014aaae
7
- data.tar.gz: b34d1eddb479f2aae4a28876d788c90269bb3afab12251a009db2bfd7f1b14972dfbfc7b3964a58bdf40c76ae65ef525bd117d388642160c9246781f119bfcf2
6
+ metadata.gz: f3a0b7449f0f12c62308885cefa63fad30031ef43deccd83c6d2e2990b6da4bf60400d4a05985eea6a75a4a8b860f70ff7953671a0be171961d691e4234abc83
7
+ data.tar.gz: 003a160954fb2fe083681affff7d44fb6a09a3a0973d803f326179978a1e3a874994a3f2ed701a066c771e5474c965e2a757fca8f0d5334ab9c4edbc51c7b0c5
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.31.0`).
3
+ Generated Ruby client for the Infrawrench API (API version `1.34.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
- 698 schemas, as RBS type aliases that steep and TypeProf can read.
44
+ 721 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 —
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.31.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.34.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.31.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.34.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.31.0)."
21
- spec.description = "Generated Ruby client for the Infrawrench API (v1.31.0). Covers the published API surface only — operations marked x-internal in the spec are not generated. No runtime dependencies."
20
+ spec.summary = "Generated Ruby client for the Infrawrench API (v1.34.0)."
21
+ spec.description = "Generated Ruby client for the Infrawrench API (v1.34.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"
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.31.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.34.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.31.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.34.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -10450,6 +10450,273 @@ module Infrawrench
10450
10450
  end
10451
10451
  end
10452
10452
 
10453
+ # `client.on_call.overrides`
10454
+ class OnCallOverridesNamespace
10455
+ # @api private
10456
+ # @param transport [Transport]
10457
+ def initialize(transport)
10458
+ @transport = transport
10459
+ end
10460
+
10461
+ # Arrange cover
10462
+ #
10463
+ # A cover beats the rotation for exactly its window. Among several
10464
+ # overlapping covers the one that **started most recently** wins, so a
10465
+ # later-written cover supersedes an earlier one rather than the answer
10466
+ # depending on row order.
10467
+ #
10468
+ # Takes `team:read`, not a settings permission: cover is arranged at 17:55
10469
+ # on a Friday and the person handing over is rarely an org admin. Every
10470
+ # cover is audit-logged, which is the control that makes the looser
10471
+ # permission safe.
10472
+ #
10473
+ # POST /api/org/{orgId}/on-call/overrides
10474
+ #
10475
+ # Raises on 400: Bad request
10476
+ #
10477
+ # Raises on 404: Not found
10478
+ #
10479
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
10480
+ # constructed with.
10481
+ # @param body [Hash, nil] Request body, shaped as `OnCallOverrideCreate`.
10482
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
10483
+ # @return [Hash] Parsed JSON, shaped as `OnCallOverride` — see `sig/infrawrench/sdk.rbs`.
10484
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
10485
+ def create(org_id: nil, body: nil, request_options: nil)
10486
+ @transport.request(
10487
+ http_method: "POST",
10488
+ path: "/api/org/{orgId}/on-call/overrides",
10489
+ path_params: { "orgId" => org_id },
10490
+ body: body,
10491
+ request_options: request_options
10492
+ )
10493
+ end
10494
+
10495
+ # Cancel a cover
10496
+ #
10497
+ # DELETE /api/org/{orgId}/on-call/overrides/{overrideId}
10498
+ #
10499
+ # Raises on 404: Not found
10500
+ #
10501
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
10502
+ # constructed with.
10503
+ # @param override_id [String]
10504
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
10505
+ # @return [nil] This endpoint returns no content.
10506
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
10507
+ def delete(override_id:, org_id: nil, request_options: nil)
10508
+ @transport.request(
10509
+ http_method: "DELETE",
10510
+ path: "/api/org/{orgId}/on-call/overrides/{overrideId}",
10511
+ path_params: { "orgId" => org_id, "overrideId" => override_id },
10512
+ accept: :empty,
10513
+ request_options: request_options
10514
+ )
10515
+ end
10516
+
10517
+ # List covers
10518
+ #
10519
+ # GET /api/org/{orgId}/on-call/overrides
10520
+ #
10521
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
10522
+ # constructed with.
10523
+ # @param schedule_id [String, nil]
10524
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
10525
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
10526
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
10527
+ def get(org_id: nil, schedule_id: nil, request_options: nil)
10528
+ @transport.request(
10529
+ http_method: "GET",
10530
+ path: "/api/org/{orgId}/on-call/overrides",
10531
+ path_params: { "orgId" => org_id },
10532
+ query: { "scheduleId" => schedule_id },
10533
+ request_options: request_options
10534
+ )
10535
+ end
10536
+ end
10537
+
10538
+ # `client.on_call.schedules`
10539
+ class OnCallSchedulesNamespace
10540
+ # @api private
10541
+ # @param transport [Transport]
10542
+ def initialize(transport)
10543
+ @transport = transport
10544
+ end
10545
+
10546
+ # Create an on-call rotation
10547
+ #
10548
+ # Shift boundaries are calendar-day arithmetic in the rotation's own zone,
10549
+ # not 24-hour arithmetic: a rotation stepped in fixed milliseconds drifts an
10550
+ # hour at each daylight-saving change until the 09:00 Monday handover
10551
+ # happens at 08:00 — or until two people each think the other is on call.
10552
+ #
10553
+ # Writing takes `org:settings:write`: a rotation decides who gets woken up.
10554
+ #
10555
+ # POST /api/org/{orgId}/on-call/schedules
10556
+ #
10557
+ # Raises on 400: Bad request
10558
+ #
10559
+ # Raises on 409: Conflict
10560
+ #
10561
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
10562
+ # constructed with.
10563
+ # @param body [Hash, nil] Request body, shaped as `OnCallScheduleCreate`.
10564
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
10565
+ # @return [Hash] Parsed JSON, shaped as `OnCallSchedule` — see `sig/infrawrench/sdk.rbs`.
10566
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
10567
+ def create(org_id: nil, body: nil, request_options: nil)
10568
+ @transport.request(
10569
+ http_method: "POST",
10570
+ path: "/api/org/{orgId}/on-call/schedules",
10571
+ path_params: { "orgId" => org_id },
10572
+ body: body,
10573
+ request_options: request_options
10574
+ )
10575
+ end
10576
+
10577
+ # Delete an on-call rotation
10578
+ #
10579
+ # Takes its covers with it. Routing rules naming it resolve to nobody
10580
+ # afterwards.
10581
+ #
10582
+ # DELETE /api/org/{orgId}/on-call/schedules/{scheduleId}
10583
+ #
10584
+ # Raises on 404: Not found
10585
+ #
10586
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
10587
+ # constructed with.
10588
+ # @param schedule_id [String]
10589
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
10590
+ # @return [nil] This endpoint returns no content.
10591
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
10592
+ def delete(schedule_id:, org_id: nil, request_options: nil)
10593
+ @transport.request(
10594
+ http_method: "DELETE",
10595
+ path: "/api/org/{orgId}/on-call/schedules/{scheduleId}",
10596
+ path_params: { "orgId" => org_id, "scheduleId" => schedule_id },
10597
+ accept: :empty,
10598
+ request_options: request_options
10599
+ )
10600
+ end
10601
+
10602
+ # List on-call rotations
10603
+ #
10604
+ # GET /api/org/{orgId}/on-call/schedules
10605
+ #
10606
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
10607
+ # constructed with.
10608
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
10609
+ # @return [Hash] Parsed JSON, shaped as `OnCallScheduleList` — see
10610
+ # `sig/infrawrench/sdk.rbs`.
10611
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
10612
+ def get(org_id: nil, request_options: nil)
10613
+ @transport.request(
10614
+ http_method: "GET",
10615
+ path: "/api/org/{orgId}/on-call/schedules",
10616
+ path_params: { "orgId" => org_id },
10617
+ request_options: request_options
10618
+ )
10619
+ end
10620
+
10621
+ # Preview upcoming shifts
10622
+ #
10623
+ # The same computation the alert path resolves with, so a preview can never
10624
+ # disagree with who actually gets woken up.
10625
+ #
10626
+ # GET /api/org/{orgId}/on-call/schedules/{scheduleId}/shifts
10627
+ #
10628
+ # Raises on 400: Bad request
10629
+ #
10630
+ # Raises on 404: Not found
10631
+ #
10632
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
10633
+ # constructed with.
10634
+ # @param schedule_id [String]
10635
+ # @param count [Integer, nil]
10636
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
10637
+ # @return [Hash] Parsed JSON, shaped as `OnCallShiftsResponse` — see
10638
+ # `sig/infrawrench/sdk.rbs`.
10639
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
10640
+ def shifts(schedule_id:, org_id: nil, count: nil, request_options: nil)
10641
+ @transport.request(
10642
+ http_method: "GET",
10643
+ path: "/api/org/{orgId}/on-call/schedules/{scheduleId}/shifts",
10644
+ path_params: { "orgId" => org_id, "scheduleId" => schedule_id },
10645
+ query: { "count" => count },
10646
+ request_options: request_options
10647
+ )
10648
+ end
10649
+
10650
+ # Edit an on-call rotation
10651
+ #
10652
+ # Omitted fields are left alone, and the result is validated after merging.
10653
+ # Sending `participantUserIds` replaces the list wholesale — position is
10654
+ # rotation order, so reordering re-plans the future.
10655
+ #
10656
+ # PATCH /api/org/{orgId}/on-call/schedules/{scheduleId}
10657
+ #
10658
+ # Raises on 400: Bad request
10659
+ #
10660
+ # Raises on 404: Not found
10661
+ #
10662
+ # Raises on 409: Conflict
10663
+ #
10664
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
10665
+ # constructed with.
10666
+ # @param schedule_id [String]
10667
+ # @param body [Hash, nil] Request body, shaped as `OnCallScheduleUpdate`.
10668
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
10669
+ # @return [Hash] Parsed JSON, shaped as `OnCallSchedule` — see `sig/infrawrench/sdk.rbs`.
10670
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
10671
+ def update(schedule_id:, org_id: nil, body: nil, request_options: nil)
10672
+ @transport.request(
10673
+ http_method: "PATCH",
10674
+ path: "/api/org/{orgId}/on-call/schedules/{scheduleId}",
10675
+ path_params: { "orgId" => org_id, "scheduleId" => schedule_id },
10676
+ body: body,
10677
+ request_options: request_options
10678
+ )
10679
+ end
10680
+ end
10681
+
10682
+ # `client.on_call`
10683
+ class OnCallNamespace
10684
+ # @return [OnCallOverridesNamespace] `client.on_call.overrides`
10685
+ attr_reader :overrides
10686
+ # @return [OnCallSchedulesNamespace] `client.on_call.schedules`
10687
+ attr_reader :schedules
10688
+
10689
+ # @api private
10690
+ # @param transport [Transport]
10691
+ def initialize(transport)
10692
+ @transport = transport
10693
+ @overrides = OnCallOverridesNamespace.new(@transport)
10694
+ @schedules = OnCallSchedulesNamespace.new(@transport)
10695
+ end
10696
+
10697
+ # Who is on call right now
10698
+ #
10699
+ # One entry per rotation: the shift in effect, and the next person in the
10700
+ # rotation. Takes `team:read` — knowing who is on call is something every
10701
+ # member needs and nobody should have to ask an admin for.
10702
+ #
10703
+ # GET /api/org/{orgId}/on-call/now
10704
+ #
10705
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
10706
+ # constructed with.
10707
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
10708
+ # @return [Hash] Parsed JSON, shaped as `OnCallNowResponse` — see `sig/infrawrench/sdk.rbs`.
10709
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
10710
+ def now(org_id: nil, request_options: nil)
10711
+ @transport.request(
10712
+ http_method: "GET",
10713
+ path: "/api/org/{orgId}/on-call/now",
10714
+ path_params: { "orgId" => org_id },
10715
+ request_options: request_options
10716
+ )
10717
+ end
10718
+ end
10719
+
10453
10720
  # `client.orgs`
10454
10721
  class OrgsNamespace
10455
10722
  # @api private
@@ -12492,6 +12759,329 @@ module Infrawrench
12492
12759
  end
12493
12760
  end
12494
12761
 
12762
+ # `client.runbooks.get`
12763
+ class RunbooksGetNamespace
12764
+ # @api private
12765
+ # @param transport [Transport]
12766
+ def initialize(transport)
12767
+ @transport = transport
12768
+ end
12769
+
12770
+ # List the organization's runbooks
12771
+ #
12772
+ # Every runbook, with how many times each has been run and when it was last
12773
+ # used. Reading takes `resources:read`: the person who can see the
12774
+ # infrastructure is the person who will be woken up about it.
12775
+ #
12776
+ # GET /api/org/{orgId}/runbooks
12777
+ #
12778
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
12779
+ # constructed with.
12780
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12781
+ # @return [Hash] Parsed JSON, shaped as `RunbookList` — see `sig/infrawrench/sdk.rbs`.
12782
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
12783
+ def get(org_id: nil, request_options: nil)
12784
+ @transport.request(
12785
+ http_method: "GET",
12786
+ path: "/api/org/{orgId}/runbooks",
12787
+ path_params: { "orgId" => org_id },
12788
+ request_options: request_options
12789
+ )
12790
+ end
12791
+
12792
+ # Get one runbook
12793
+ #
12794
+ # GET /api/org/{orgId}/runbooks/{runbookId}
12795
+ #
12796
+ # Raises on 404: Not found
12797
+ #
12798
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
12799
+ # constructed with.
12800
+ # @param runbook_id [String]
12801
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12802
+ # @return [Hash] Parsed JSON, shaped as `Runbook` — see `sig/infrawrench/sdk.rbs`.
12803
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
12804
+ def get_org_org_id_runbooks_runbook_id(runbook_id:, org_id: nil, request_options: nil)
12805
+ @transport.request(
12806
+ http_method: "GET",
12807
+ path: "/api/org/{orgId}/runbooks/{runbookId}",
12808
+ path_params: { "orgId" => org_id, "runbookId" => runbook_id },
12809
+ request_options: request_options
12810
+ )
12811
+ end
12812
+ end
12813
+
12814
+ # `client.runbooks.runs.steps`
12815
+ class RunbooksRunsStepsNamespace
12816
+ # @api private
12817
+ # @param transport [Transport]
12818
+ def initialize(transport)
12819
+ @transport = transport
12820
+ end
12821
+
12822
+ # Tick a step
12823
+ #
12824
+ # One targeted update on one row, so two responders working the same
12825
+ # incident can tick different steps at the same moment without either losing
12826
+ # the other's work.
12827
+ #
12828
+ # A closed run refuses updates, and reopening is not offered: a run is a
12829
+ # record of what happened. Start another run to record another attempt.
12830
+ #
12831
+ # PATCH /api/org/{orgId}/runbooks/runs/{runId}/steps/{stepId}
12832
+ #
12833
+ # Raises on 400: Bad request
12834
+ #
12835
+ # Raises on 404: Not found
12836
+ #
12837
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
12838
+ # constructed with.
12839
+ # @param run_id [String]
12840
+ # @param step_id [String]
12841
+ # @param body [Hash, nil] Request body, shaped as `RunbookStepUpdate`.
12842
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12843
+ # @return [Hash] Parsed JSON, shaped as `RunbookRun` — see `sig/infrawrench/sdk.rbs`.
12844
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
12845
+ def update(run_id:, step_id:, org_id: nil, body: nil, request_options: nil)
12846
+ @transport.request(
12847
+ http_method: "PATCH",
12848
+ path: "/api/org/{orgId}/runbooks/runs/{runId}/steps/{stepId}",
12849
+ path_params: { "orgId" => org_id, "runId" => run_id, "stepId" => step_id },
12850
+ body: body,
12851
+ request_options: request_options
12852
+ )
12853
+ end
12854
+ end
12855
+
12856
+ # `client.runbooks.runs`
12857
+ class RunbooksRunsNamespace
12858
+ # @return [RunbooksRunsStepsNamespace] `client.runbooks.runs.steps`
12859
+ attr_reader :steps
12860
+
12861
+ # @api private
12862
+ # @param transport [Transport]
12863
+ def initialize(transport)
12864
+ @transport = transport
12865
+ @steps = RunbooksRunsStepsNamespace.new(@transport)
12866
+ end
12867
+
12868
+ # Close a run out
12869
+ #
12870
+ # Closing does **not** settle outstanding steps. A run completed with three
12871
+ # steps still pending is a true and useful record — it says the incident
12872
+ # ended before the checklist did — and quietly marking them done would erase
12873
+ # the one thing a postmortem wants to know.
12874
+ #
12875
+ # POST /api/org/{orgId}/runbooks/runs/{runId}/close
12876
+ #
12877
+ # Raises on 400: Bad request
12878
+ #
12879
+ # Raises on 404: Not found
12880
+ #
12881
+ # Raises on 409: Conflict
12882
+ #
12883
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
12884
+ # constructed with.
12885
+ # @param run_id [String]
12886
+ # @param body [Hash, nil] Request body, shaped as `RunbookRunClose`.
12887
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12888
+ # @return [Hash] Parsed JSON, shaped as `RunbookRun` — see `sig/infrawrench/sdk.rbs`.
12889
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
12890
+ def close(run_id:, org_id: nil, body: nil, request_options: nil)
12891
+ @transport.request(
12892
+ http_method: "POST",
12893
+ path: "/api/org/{orgId}/runbooks/runs/{runId}/close",
12894
+ path_params: { "orgId" => org_id, "runId" => run_id },
12895
+ body: body,
12896
+ request_options: request_options
12897
+ )
12898
+ end
12899
+
12900
+ # Start performing a runbook
12901
+ #
12902
+ # Copies every step's title and kind into the run, so the record of what
12903
+ # somebody was asked to do survives the runbook being rewritten next week.
12904
+ #
12905
+ # Takes `resources:read`, like ticking a step: performing a checklist is not
12906
+ # an act of configuration, and requiring an admin mid-incident is how a team
12907
+ # stops using it. Deliberately not deduplicated against a run already in
12908
+ # progress — performing the failover twice in one incident is a real thing,
12909
+ # and refusing the second would mean it goes unrecorded rather than not
12910
+ # happening.
12911
+ #
12912
+ # POST /api/org/{orgId}/runbooks/{runbookId}/runs
12913
+ #
12914
+ # Raises on 400: Bad request
12915
+ #
12916
+ # Raises on 404: Not found
12917
+ #
12918
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
12919
+ # constructed with.
12920
+ # @param runbook_id [String]
12921
+ # @param body [Hash, nil] Request body, shaped as `RunbookRunStart`.
12922
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12923
+ # @return [Hash] Parsed JSON, shaped as `RunbookRun` — see `sig/infrawrench/sdk.rbs`.
12924
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
12925
+ def create(runbook_id:, org_id: nil, body: nil, request_options: nil)
12926
+ @transport.request(
12927
+ http_method: "POST",
12928
+ path: "/api/org/{orgId}/runbooks/{runbookId}/runs",
12929
+ path_params: { "orgId" => org_id, "runbookId" => runbook_id },
12930
+ body: body,
12931
+ request_options: request_options
12932
+ )
12933
+ end
12934
+
12935
+ # List runbook runs
12936
+ #
12937
+ # Newest first, optionally narrowed to one runbook or one incident.
12938
+ #
12939
+ # GET /api/org/{orgId}/runbooks/runs
12940
+ #
12941
+ # Raises on 400: Bad request
12942
+ #
12943
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
12944
+ # constructed with.
12945
+ # @param runbook_id [String, nil]
12946
+ # @param incident_id [String, nil]
12947
+ # @param limit [Integer, nil]
12948
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12949
+ # @return [Hash] Parsed JSON, shaped as `RunbookRunList` — see `sig/infrawrench/sdk.rbs`.
12950
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
12951
+ def get(org_id: nil, runbook_id: nil, incident_id: nil, limit: nil, request_options: nil)
12952
+ @transport.request(
12953
+ http_method: "GET",
12954
+ path: "/api/org/{orgId}/runbooks/runs",
12955
+ path_params: { "orgId" => org_id },
12956
+ query: { "runbookId" => runbook_id, "incidentId" => incident_id, "limit" => limit },
12957
+ request_options: request_options
12958
+ )
12959
+ end
12960
+
12961
+ # Get one runbook run
12962
+ #
12963
+ # GET /api/org/{orgId}/runbooks/runs/{runId}
12964
+ #
12965
+ # Raises on 404: Not found
12966
+ #
12967
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
12968
+ # constructed with.
12969
+ # @param run_id [String]
12970
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12971
+ # @return [Hash] Parsed JSON, shaped as `RunbookRun` — see `sig/infrawrench/sdk.rbs`.
12972
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
12973
+ def get_org_org_id_runbooks_runs_run_id(run_id:, org_id: nil, request_options: nil)
12974
+ @transport.request(
12975
+ http_method: "GET",
12976
+ path: "/api/org/{orgId}/runbooks/runs/{runId}",
12977
+ path_params: { "orgId" => org_id, "runId" => run_id },
12978
+ request_options: request_options
12979
+ )
12980
+ end
12981
+ end
12982
+
12983
+ # `client.runbooks`
12984
+ class RunbooksNamespace
12985
+ # @return [RunbooksGetNamespace] `client.runbooks.get`
12986
+ attr_reader :get
12987
+ # @return [RunbooksRunsNamespace] `client.runbooks.runs`
12988
+ attr_reader :runs
12989
+
12990
+ # @api private
12991
+ # @param transport [Transport]
12992
+ def initialize(transport)
12993
+ @transport = transport
12994
+ @get = RunbooksGetNamespace.new(@transport)
12995
+ @runs = RunbooksRunsNamespace.new(@transport)
12996
+ end
12997
+
12998
+ # Write a runbook
12999
+ #
13000
+ # Editing takes `org:settings:write` — a procedure is an org-wide statement
13001
+ # about how something is done, and it is read by strangers under pressure.
13002
+ # Names are unique within an organization: two runbooks called "Failover" is
13003
+ # how the wrong one gets run.
13004
+ #
13005
+ # POST /api/org/{orgId}/runbooks
13006
+ #
13007
+ # Raises on 400: Bad request
13008
+ #
13009
+ # Raises on 409: Conflict
13010
+ #
13011
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
13012
+ # constructed with.
13013
+ # @param body [Hash, nil] Request body, shaped as `RunbookCreate`.
13014
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
13015
+ # @return [Hash] Parsed JSON, shaped as `Runbook` — see `sig/infrawrench/sdk.rbs`.
13016
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
13017
+ def create(org_id: nil, body: nil, request_options: nil)
13018
+ @transport.request(
13019
+ http_method: "POST",
13020
+ path: "/api/org/{orgId}/runbooks",
13021
+ path_params: { "orgId" => org_id },
13022
+ body: body,
13023
+ request_options: request_options
13024
+ )
13025
+ end
13026
+
13027
+ # Delete a runbook
13028
+ #
13029
+ # Takes its run history with it. To retire a procedure without losing the
13030
+ # record of the runs performed against it, set `enabled` to false instead.
13031
+ #
13032
+ # DELETE /api/org/{orgId}/runbooks/{runbookId}
13033
+ #
13034
+ # Raises on 404: Not found
13035
+ #
13036
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
13037
+ # constructed with.
13038
+ # @param runbook_id [String]
13039
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
13040
+ # @return [nil] This endpoint returns no content.
13041
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
13042
+ def delete(runbook_id:, org_id: nil, request_options: nil)
13043
+ @transport.request(
13044
+ http_method: "DELETE",
13045
+ path: "/api/org/{orgId}/runbooks/{runbookId}",
13046
+ path_params: { "orgId" => org_id, "runbookId" => runbook_id },
13047
+ accept: :empty,
13048
+ request_options: request_options
13049
+ )
13050
+ end
13051
+
13052
+ # Edit a runbook
13053
+ #
13054
+ # Omitted fields are left alone. The result is validated **after** merging,
13055
+ # so a patch that only changes the steps still has to produce a runbook that
13056
+ # is valid as a whole. A step sent with its `id` keeps its identity, so a
13057
+ # run in progress still matches it.
13058
+ #
13059
+ # PATCH /api/org/{orgId}/runbooks/{runbookId}
13060
+ #
13061
+ # Raises on 400: Bad request
13062
+ #
13063
+ # Raises on 404: Not found
13064
+ #
13065
+ # Raises on 409: Conflict
13066
+ #
13067
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
13068
+ # constructed with.
13069
+ # @param runbook_id [String]
13070
+ # @param body [Hash, nil] Request body, shaped as `RunbookUpdate`.
13071
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
13072
+ # @return [Hash] Parsed JSON, shaped as `Runbook` — see `sig/infrawrench/sdk.rbs`.
13073
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
13074
+ def update(runbook_id:, org_id: nil, body: nil, request_options: nil)
13075
+ @transport.request(
13076
+ http_method: "PATCH",
13077
+ path: "/api/org/{orgId}/runbooks/{runbookId}",
13078
+ path_params: { "orgId" => org_id, "runbookId" => runbook_id },
13079
+ body: body,
13080
+ request_options: request_options
13081
+ )
13082
+ end
13083
+ end
13084
+
12495
13085
  # `client.saved_cost_filters`
12496
13086
  class SavedCostFiltersNamespace
12497
13087
  # @api private
@@ -15837,6 +16427,8 @@ module Infrawrench
15837
16427
  attr_reader :msteams
15838
16428
  # @return [NetworkFlowsNamespace] `client.network_flows`
15839
16429
  attr_reader :network_flows
16430
+ # @return [OnCallNamespace] `client.on_call`
16431
+ attr_reader :on_call
15840
16432
  # @return [OrgsNamespace] `client.orgs`
15841
16433
  attr_reader :orgs
15842
16434
  # @return [OrphansNamespace] `client.orphans`
@@ -15857,6 +16449,8 @@ module Infrawrench
15857
16449
  attr_reader :resources
15858
16450
  # @return [RightsizingNamespace] `client.rightsizing`
15859
16451
  attr_reader :rightsizing
16452
+ # @return [RunbooksNamespace] `client.runbooks`
16453
+ attr_reader :runbooks
15860
16454
  # @return [SavedCostFiltersNamespace] `client.saved_cost_filters`
15861
16455
  attr_reader :saved_cost_filters
15862
16456
  # @return [SchedulesNamespace] `client.schedules`
@@ -15968,6 +16562,7 @@ module Infrawrench
15968
16562
  @moment = MomentNamespace.new(@transport)
15969
16563
  @msteams = MsteamsNamespace.new(@transport)
15970
16564
  @network_flows = NetworkFlowsNamespace.new(@transport)
16565
+ @on_call = OnCallNamespace.new(@transport)
15971
16566
  @orgs = OrgsNamespace.new(@transport)
15972
16567
  @orphans = OrphansNamespace.new(@transport)
15973
16568
  @ownership = OwnershipNamespace.new(@transport)
@@ -15978,6 +16573,7 @@ module Infrawrench
15978
16573
  @quotas = QuotasNamespace.new(@transport)
15979
16574
  @resources = ResourcesNamespace.new(@transport)
15980
16575
  @rightsizing = RightsizingNamespace.new(@transport)
16576
+ @runbooks = RunbooksNamespace.new(@transport)
15981
16577
  @saved_cost_filters = SavedCostFiltersNamespace.new(@transport)
15982
16578
  @schedules = SchedulesNamespace.new(@transport)
15983
16579
  @search = SearchNamespace.new(@transport)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.31.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.34.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.31.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.34.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.31.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.34.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.31.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.34.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.31.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.34.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.31.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.34.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.31.0"
18
+ VERSION = "1.34.0"
19
19
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.31.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.34.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.31.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.34.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -1,7 +1,7 @@
1
- # infrawrench-sdk v1.31.0 | MIT | Copyright (c) 2026 Infrawrench LLC
1
+ # infrawrench-sdk v1.34.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.31.0).
4
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.34.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -441,10 +441,17 @@ module Infrawrench
441
441
  # still filtered by each member's own mutes — an organization rule decides
442
442
  # whether the org is told, a member decides whether their phone rings.
443
443
  #
444
+ # `on-call` resolves to one person at delivery time, so a rule reading
445
+ # "database alerts → whoever is on call" needs no edit at handover. A rotation
446
+ # that resolves to nobody — disabled, empty, not yet started — contributes
447
+ # nobody and the rule's **other** destinations still deliver: an alert lost to
448
+ # a misconfigured rotation would be the worst outcome the feature could have.
449
+ #
444
450
  # Spec schema: `AlertDestination`.
445
451
  type alert_destination = { "kind" => "push" }
446
452
  | { "kind" => "slack", "channelId" => String }
447
453
  | { "kind" => "msteams", "webhookId" => String }
454
+ | { "kind" => "on-call", "scheduleId" => String }
448
455
 
449
456
  # Spec schema: `AlertRule`.
450
457
  type alert_rule = {
@@ -477,7 +484,8 @@ module Infrawrench
477
484
  "usingDefaults" => bool,
478
485
  "slackChannels" => Array[{ "id" => String, "name" => String, "isPrivate" => bool }],
479
486
  "msTeamsWebhooks" => Array[{ "id" => String, "label" => String }],
480
- "accounts" => Array[{ "id" => String, "displayName" => String, "pluginId" => String }]
487
+ "accounts" => Array[{ "id" => String, "displayName" => String, "pluginId" => String }],
488
+ "onCallSchedules" => Array[{ "id" => String, "name" => String }]
481
489
  }
482
490
 
483
491
  # Alert severity, ordered info < warning < critical.
@@ -4341,6 +4349,104 @@ module Infrawrench
4341
4349
  # Spec schema: `Ok`.
4342
4350
  type ok = { "ok" => bool }
4343
4351
 
4352
+ # Spec schema: `OnCallNowEntry`.
4353
+ type on_call_now_entry = {
4354
+ "scheduleId" => String,
4355
+ "scheduleName" => String,
4356
+ "enabled" => bool,
4357
+ "shift" => on_call_shift,
4358
+ "next" => on_call_participant
4359
+ }
4360
+
4361
+ # Spec schema: `OnCallNowResponse`.
4362
+ type on_call_now_response = { "onCall" => Array[on_call_now_entry], "generatedAt" => String }
4363
+
4364
+ # Spec schema: `OnCallOverride`.
4365
+ type on_call_override = {
4366
+ "id" => String,
4367
+ "scheduleId" => String,
4368
+ "userId" => String,
4369
+ "userName" => String | nil,
4370
+ "startsAt" => String,
4371
+ "endsAt" => String,
4372
+ "reason" => String | nil,
4373
+ "createdByUserId" => String | nil,
4374
+ "createdAt" => String
4375
+ }
4376
+
4377
+ # Spec schema: `OnCallOverrideCreate`.
4378
+ type on_call_override_create = {
4379
+ "scheduleId" => String,
4380
+ "userId" => String,
4381
+ "startsAt" => String,
4382
+ "endsAt" => String,
4383
+ ?"reason" => String | nil
4384
+ }
4385
+
4386
+ # The next person in the rotation — where an escalation goes. Resolved from
4387
+ # the rotation and never from a cover: a cover is somebody standing in for one
4388
+ # shift.
4389
+ #
4390
+ # Spec schema: `OnCallParticipant`.
4391
+ type on_call_participant = { "userId" => String, "name" => String | nil, "email" => String | nil } | nil
4392
+
4393
+ # Spec schema: `OnCallSchedule`.
4394
+ type on_call_schedule = {
4395
+ "id" => String,
4396
+ "name" => String,
4397
+ "timezone" => String,
4398
+ "rotationDays" => Integer,
4399
+ "handoffTime" => String,
4400
+ "startDate" => String,
4401
+ "participants" => Array[on_call_participant & Hash[String, untyped]],
4402
+ "enabled" => bool,
4403
+ "createdAt" => String,
4404
+ "updatedAt" => String
4405
+ }
4406
+
4407
+ # Spec schema: `OnCallScheduleCreate`.
4408
+ type on_call_schedule_create = {
4409
+ "name" => String,
4410
+ "timezone" => String,
4411
+ "rotationDays" => Integer,
4412
+ "handoffTime" => String,
4413
+ "startDate" => String,
4414
+ "participantUserIds" => Array[String],
4415
+ ?"enabled" => bool
4416
+ }
4417
+
4418
+ # Spec schema: `OnCallScheduleList`.
4419
+ type on_call_schedule_list = { "schedules" => Array[on_call_schedule] }
4420
+
4421
+ # Spec schema: `OnCallScheduleUpdate`.
4422
+ type on_call_schedule_update = {
4423
+ ?"name" => String,
4424
+ ?"timezone" => String,
4425
+ ?"rotationDays" => Integer,
4426
+ ?"handoffTime" => String,
4427
+ ?"startDate" => String,
4428
+ ?"participantUserIds" => Array[String],
4429
+ ?"enabled" => bool
4430
+ }
4431
+
4432
+ # Spec schema: `OnCallShift`.
4433
+ type on_call_shift = {
4434
+ "startsAt" => String,
4435
+ "endsAt" => String,
4436
+ "userId" => String,
4437
+ "name" => String | nil,
4438
+ "email" => String | nil,
4439
+ "source" => "rotation" | "override",
4440
+ "rotationIndex" => Integer | nil
4441
+ }
4442
+ | nil
4443
+
4444
+ # Spec schema: `OnCallShiftsResponse`.
4445
+ type on_call_shifts_response = {
4446
+ "shifts" => Array[on_call_shift & Hash[String, untyped]],
4447
+ "overrides" => Array[on_call_override]
4448
+ }
4449
+
4344
4450
  # Org-wide notification tuning. Cooldown claims (`lastNotifiedAt`,
4345
4451
  # `lastSentWeekStart`) are deliberately absent: they are poller state, and
4346
4452
  # resetting one from an apply would re-open a quiet period and page people
@@ -5980,6 +6086,113 @@ module Infrawrench
5980
6086
  # Spec schema: `RoleUpdateRequest`.
5981
6087
  type role_update_request = { ?"name" => String, ?"description" => String | nil, ?"permissions" => Array[permission] }
5982
6088
 
6089
+ # Spec schema: `Runbook`.
6090
+ type runbook = {
6091
+ "id" => String,
6092
+ "name" => String,
6093
+ "description" => String | nil,
6094
+ "steps" => Array[runbook_step],
6095
+ "resourceTypeIds" => Array[String],
6096
+ "tagKey" => String | nil,
6097
+ "tagValue" => String | nil,
6098
+ "enabled" => bool,
6099
+ "createdByUserId" => String | nil,
6100
+ "createdByName" => String | nil,
6101
+ "createdAt" => String,
6102
+ "updatedAt" => String,
6103
+ "runCount" => Integer,
6104
+ "lastRunAt" => String | nil
6105
+ }
6106
+
6107
+ # Spec schema: `RunbookCreate`.
6108
+ type runbook_create = {
6109
+ "name" => String,
6110
+ ?"description" => String | nil,
6111
+ ?"steps" => Array[runbook_step_input],
6112
+ ?"resourceTypeIds" => Array[String],
6113
+ ?"tagKey" => String | nil,
6114
+ ?"tagValue" => String | nil,
6115
+ ?"enabled" => bool
6116
+ }
6117
+
6118
+ # Spec schema: `RunbookList`.
6119
+ type runbook_list = { "runbooks" => Array[runbook] }
6120
+
6121
+ # Spec schema: `RunbookRun`.
6122
+ type runbook_run = {
6123
+ "id" => String,
6124
+ "runbookId" => String,
6125
+ "runbookName" => String,
6126
+ "status" => "running" | "completed" | "abandoned",
6127
+ "incidentId" => String | nil,
6128
+ "startedByUserId" => String | nil,
6129
+ "startedByName" => String | nil,
6130
+ "startedAt" => String,
6131
+ "completedAt" => String | nil,
6132
+ "summary" => String | nil,
6133
+ "steps" => Array[runbook_run_step]
6134
+ }
6135
+
6136
+ # Spec schema: `RunbookRunClose`.
6137
+ type runbook_run_close = { "status" => "completed" | "abandoned", ?"summary" => String | nil }
6138
+
6139
+ # Spec schema: `RunbookRunList`.
6140
+ type runbook_run_list = { "runs" => Array[runbook_run] }
6141
+
6142
+ # Spec schema: `RunbookRunStart`.
6143
+ type runbook_run_start = { ?"incidentId" => String | nil }
6144
+
6145
+ # Spec schema: `RunbookRunStep`.
6146
+ type runbook_run_step = {
6147
+ "stepId" => String,
6148
+ "title" => String,
6149
+ "kind" => "manual" | "workflow" | "link",
6150
+ "status" => "pending" | "done" | "skipped" | "failed",
6151
+ "note" => String | nil,
6152
+ "workflowRunId" => String | nil,
6153
+ "actorUserId" => String | nil,
6154
+ "actorName" => String | nil,
6155
+ "updatedAt" => String | nil
6156
+ }
6157
+
6158
+ # Spec schema: `RunbookStep`.
6159
+ type runbook_step = {
6160
+ "id" => String,
6161
+ "kind" => "manual" | "workflow" | "link",
6162
+ "title" => String,
6163
+ "body" => String,
6164
+ ?"workflowId" => String,
6165
+ ?"url" => String
6166
+ }
6167
+
6168
+ # Spec schema: `RunbookStepInput`.
6169
+ type runbook_step_input = {
6170
+ ?"id" => String,
6171
+ "kind" => "manual" | "workflow" | "link",
6172
+ "title" => String,
6173
+ ?"body" => String,
6174
+ ?"workflowId" => String | nil,
6175
+ ?"url" => String | nil
6176
+ }
6177
+
6178
+ # Spec schema: `RunbookStepUpdate`.
6179
+ type runbook_step_update = {
6180
+ "status" => "pending" | "done" | "skipped" | "failed",
6181
+ ?"note" => String | nil,
6182
+ ?"workflowRunId" => String | nil
6183
+ }
6184
+
6185
+ # Spec schema: `RunbookUpdate`.
6186
+ type runbook_update = {
6187
+ ?"name" => String,
6188
+ ?"description" => String | nil,
6189
+ ?"steps" => Array[runbook_step_input],
6190
+ ?"resourceTypeIds" => Array[String],
6191
+ ?"tagKey" => String | nil,
6192
+ ?"tagValue" => String | nil,
6193
+ ?"enabled" => bool
6194
+ }
6195
+
5983
6196
  # Spec schema: `SavedCostFilter`.
5984
6197
  type saved_cost_filter = {
5985
6198
  "id" => String,
@@ -6722,6 +6935,7 @@ module Infrawrench
6722
6935
  | "backups"
6723
6936
  | "wallboard"
6724
6937
  | "calendar"
6938
+ | "runbooks"
6725
6939
  | "dns"
6726
6940
  | "iac"
6727
6941
  | "environment-diff"
@@ -7827,6 +8041,29 @@ module Infrawrench
7827
8041
  def get: (?org_id: String?, ?from: String?, ?to: String?, ?scope: "intra_zone" | "cross_zone" | "cross_region" | "internet_egress" | "internet_ingress" | "provider_service" | "nat_gateway" | "private_interconnect" | "unknown"?, ?account_id: String?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> network_flow_feed
7828
8042
  end
7829
8043
 
8044
+ class OnCallOverridesNamespace
8045
+ def initialize: (Transport) -> void
8046
+ def create: (?org_id: String?, ?body: on_call_override_create?, ?request_options: Hash[Symbol, untyped]?) -> on_call_override
8047
+ def delete: (override_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> nil
8048
+ def get: (?org_id: String?, ?schedule_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "overrides" => Array[on_call_override] }
8049
+ end
8050
+
8051
+ class OnCallSchedulesNamespace
8052
+ def initialize: (Transport) -> void
8053
+ def create: (?org_id: String?, ?body: on_call_schedule_create?, ?request_options: Hash[Symbol, untyped]?) -> on_call_schedule
8054
+ def delete: (schedule_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> nil
8055
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> on_call_schedule_list
8056
+ def shifts: (schedule_id: String, ?org_id: String?, ?count: Integer?, ?request_options: Hash[Symbol, untyped]?) -> on_call_shifts_response
8057
+ def update: (schedule_id: String, ?org_id: String?, ?body: on_call_schedule_update?, ?request_options: Hash[Symbol, untyped]?) -> on_call_schedule
8058
+ end
8059
+
8060
+ class OnCallNamespace
8061
+ attr_reader overrides: OnCallOverridesNamespace
8062
+ attr_reader schedules: OnCallSchedulesNamespace
8063
+ def initialize: (Transport) -> void
8064
+ def now: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> on_call_now_response
8065
+ end
8066
+
7830
8067
  class OrgsNamespace
7831
8068
  def initialize: (Transport) -> void
7832
8069
  def create: (body: create_org_request, ?request_options: Hash[Symbol, untyped]?) -> organization
@@ -7972,6 +8209,35 @@ module Infrawrench
7972
8209
  def get: (?org_id: String?, ?refresh: "true" | "false"?, ?request_options: Hash[Symbol, untyped]?) -> rightsizing_list_response
7973
8210
  end
7974
8211
 
8212
+ class RunbooksGetNamespace
8213
+ def initialize: (Transport) -> void
8214
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> runbook_list
8215
+ def get_org_org_id_runbooks_runbook_id: (runbook_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> runbook
8216
+ end
8217
+
8218
+ class RunbooksRunsStepsNamespace
8219
+ def initialize: (Transport) -> void
8220
+ def update: (run_id: String, step_id: String, ?org_id: String?, ?body: runbook_step_update?, ?request_options: Hash[Symbol, untyped]?) -> runbook_run
8221
+ end
8222
+
8223
+ class RunbooksRunsNamespace
8224
+ attr_reader steps: RunbooksRunsStepsNamespace
8225
+ def initialize: (Transport) -> void
8226
+ def close: (run_id: String, ?org_id: String?, ?body: runbook_run_close?, ?request_options: Hash[Symbol, untyped]?) -> runbook_run
8227
+ def create: (runbook_id: String, ?org_id: String?, ?body: runbook_run_start?, ?request_options: Hash[Symbol, untyped]?) -> runbook_run
8228
+ def get: (?org_id: String?, ?runbook_id: String?, ?incident_id: String?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> runbook_run_list
8229
+ def get_org_org_id_runbooks_runs_run_id: (run_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> runbook_run
8230
+ end
8231
+
8232
+ class RunbooksNamespace
8233
+ attr_reader get: RunbooksGetNamespace
8234
+ attr_reader runs: RunbooksRunsNamespace
8235
+ def initialize: (Transport) -> void
8236
+ def create: (?org_id: String?, ?body: runbook_create?, ?request_options: Hash[Symbol, untyped]?) -> runbook
8237
+ def delete: (runbook_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> nil
8238
+ def update: (runbook_id: String, ?org_id: String?, ?body: runbook_update?, ?request_options: Hash[Symbol, untyped]?) -> runbook
8239
+ end
8240
+
7975
8241
  class SavedCostFiltersNamespace
7976
8242
  def initialize: (Transport) -> void
7977
8243
  def create: (body: saved_cost_filter_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> saved_cost_filter
@@ -8280,6 +8546,7 @@ module Infrawrench
8280
8546
  attr_reader moment: MomentNamespace
8281
8547
  attr_reader msteams: MsteamsNamespace
8282
8548
  attr_reader network_flows: NetworkFlowsNamespace
8549
+ attr_reader on_call: OnCallNamespace
8283
8550
  attr_reader orgs: OrgsNamespace
8284
8551
  attr_reader orphans: OrphansNamespace
8285
8552
  attr_reader ownership: OwnershipNamespace
@@ -8290,6 +8557,7 @@ module Infrawrench
8290
8557
  attr_reader quotas: QuotasNamespace
8291
8558
  attr_reader resources: ResourcesNamespace
8292
8559
  attr_reader rightsizing: RightsizingNamespace
8560
+ attr_reader runbooks: RunbooksNamespace
8293
8561
  attr_reader saved_cost_filters: SavedCostFiltersNamespace
8294
8562
  attr_reader schedules: SchedulesNamespace
8295
8563
  attr_reader search: SearchNamespace
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.31.0
4
+ version: 1.34.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Infrawrench LLC
@@ -9,9 +9,9 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2026-08-18 00:00:00.000000000 Z
12
+ date: 2026-08-20 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: Generated Ruby client for the Infrawrench API (v1.31.0). Covers the published
14
+ description: Generated Ruby client for the Infrawrench API (v1.34.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.31.0).
61
+ summary: Generated Ruby client for the Infrawrench API (v1.34.0).
62
62
  test_files: []