infrawrench-sdk 1.74.1 → 1.76.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.
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.74.1 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.76.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.74.1).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.76.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -28,9 +28,9 @@ module Infrawrench
28
28
  # WebSocket gateway, chat, MCP tools). Two rules are enforced here and
29
29
  # cannot be bypassed: you cannot decide your own request (403
30
30
  # `self_approval`), and you cannot grant a permission you do not hold
31
- # yourself (403 `exceeds_approver`) — denying something aimed higher than
32
- # you is allowed. Deciding a request that has already been decided or has
33
- # timed out is a 409. Audit-logged.
31
+ # yourself (403 `exceeds_approver`): denying something aimed higher than you
32
+ # is allowed. Deciding a request that has already been decided or has timed
33
+ # out is a 409. Audit-logged.
34
34
  #
35
35
  # _Requires permission: `access:approve`._
36
36
  #
@@ -91,7 +91,7 @@ module Infrawrench
91
91
  #
92
92
  # Ask for specific permissions, for a specific number of minutes, with a
93
93
  # reason. Rejected with 400 when the caller's role already grants every
94
- # permission asked for — that is almost always a wrong permission string
94
+ # permission asked for; that is almost always a wrong permission string
95
95
  # rather than a real request. Fans out to push, Slack (with Approve/Deny
96
96
  # buttons) and Microsoft Teams under the Pages opt-in. Audit-logged.
97
97
  #
@@ -121,7 +121,7 @@ module Infrawrench
121
121
  #
122
122
  # Records the refusal. Two rules are enforced here and cannot be bypassed:
123
123
  # you cannot decide your own request (403 `self_approval`), and you cannot
124
- # grant a permission you do not hold yourself (403 `exceeds_approver`) —
124
+ # grant a permission you do not hold yourself (403 `exceeds_approver`):
125
125
  # denying something aimed higher than you is allowed. Deciding a request
126
126
  # that has already been decided or has timed out is a 409. Audit-logged.
127
127
  #
@@ -190,7 +190,7 @@ module Infrawrench
190
190
 
191
191
  # End a live elevation early
192
192
  #
193
- # Allowed for anyone with `access:approve` and for the holder — giving back
193
+ # Allowed for anyone with `access:approve` and for the holder; giving back
194
194
  # an elevation you no longer need must never require finding an approver.
195
195
  # Applies from the next permission resolution; nothing is cached.
196
196
  # Audit-logged.
@@ -256,7 +256,7 @@ module Infrawrench
256
256
 
257
257
  # Dismiss an access review finding
258
258
  #
259
- # Accept a finding — that break-glass role really is meant to be admin, that
259
+ # Accept a finding; that break-glass role really is meant to be admin, that
260
260
  # shared key really is rotated out of band. The finding leaves `findings`
261
261
  # and stops feeding the security alerts, but the rule keeps being evaluated
262
262
  # and the finding is reported back under `dismissed` for as long as it still
@@ -379,7 +379,7 @@ module Infrawrench
379
379
  # budget their plugin declares, carrying no recorded owner, or signing in
380
380
  # without a second factor.
381
381
  #
382
- # This is about principals in **your** clouds — it is neither your
382
+ # This is about principals in **your** clouds; it is neither your
383
383
  # Infrawrench team's roles (`/team`) nor the credentials Infrawrench stores
384
384
  # for you (`/credential-hygiene`).
385
385
  #
@@ -423,7 +423,7 @@ module Infrawrench
423
423
 
424
424
  # Fetch the decrypted credentials for an account
425
425
  #
426
- # Returns the credentials map as it was originally submitted. Sensitive —
426
+ # Returns the credentials map as it was originally submitted. Sensitive:
427
427
  # gate access carefully.
428
428
  #
429
429
  # _Requires permission: `secrets:read`._
@@ -554,7 +554,7 @@ module Infrawrench
554
554
  # Probe credentials before creating an account
555
555
  #
556
556
  # Runs the plugin's per-capability permission checks against the submitted
557
- # credentials. Nothing is stored — use it from the add-account flow before
557
+ # credentials. Nothing is stored; use it from the add-account flow before
558
558
  # committing.
559
559
  #
560
560
  # _Requires permission: `accounts:write`._
@@ -675,7 +675,7 @@ module Infrawrench
675
675
  #
676
676
  # Raises on 400: Bad request
677
677
  #
678
- # Raises on 402: Payment required — the organization's plan does not include
678
+ # Raises on 402: Payment required: the organization's plan does not include
679
679
  # this
680
680
  #
681
681
  # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
@@ -995,7 +995,7 @@ module Infrawrench
995
995
 
996
996
  # Open an anonymous registration and a 24-hour trial workspace
997
997
  #
998
- # Requires no authentication — this is how a client with no credentials gets
998
+ # Requires no authentication; this is how a client with no credentials gets
999
999
  # one. Rate limited per source address. The workspace it opens is deleted 24
1000
1000
  # hours later unless a person completes the claim ceremony.
1001
1001
  #
@@ -1073,7 +1073,7 @@ module Infrawrench
1073
1073
  #
1074
1074
  # Raises on 401: Unauthenticated
1075
1075
  #
1076
- # Raises on 402: Payment required — the organization's plan does not include
1076
+ # Raises on 402: Payment required: the organization's plan does not include
1077
1077
  # this
1078
1078
  #
1079
1079
  # Raises on 403: Forbidden
@@ -1112,7 +1112,7 @@ module Infrawrench
1112
1112
  #
1113
1113
  # Raises on 401: Unauthenticated
1114
1114
  #
1115
- # Raises on 402: Payment required — the organization's plan does not include
1115
+ # Raises on 402: Payment required: the organization's plan does not include
1116
1116
  # this
1117
1117
  #
1118
1118
  # Raises on 403: Forbidden
@@ -2034,10 +2034,10 @@ module Infrawrench
2034
2034
 
2035
2035
  # Replace the organization's alert routing rules
2036
2036
  #
2037
- # Whole-list replacement in one transaction. Order is part of the meaning —
2038
- # a rule is only correct relative to the ones above it — so a reorder
2039
- # applied as several requests would leave a window in which alerts route
2040
- # somewhere nobody asked for. Positions are re-derived from array order.
2037
+ # Whole-list replacement in one transaction. Order is part of the meaning (a
2038
+ # rule is only correct relative to the ones above it) so a reorder applied
2039
+ # as several requests would leave a window in which alerts route somewhere
2040
+ # nobody asked for. Positions are re-derived from array order.
2041
2041
  #
2042
2042
  # PUT /api/org/{orgId}/alert-rules
2043
2043
  #
@@ -2162,7 +2162,7 @@ module Infrawrench
2162
2162
  #
2163
2163
  # Runs a read-only shell probe over SSH and reports what the host is
2164
2164
  # missing, plus the packages and commands that would fix it. A POST because
2165
- # it opens a connection to the named host and must never be cached — its
2165
+ # it opens a connection to the named host and must never be cached; its
2166
2166
  # whole value is saying what the host is now.
2167
2167
  #
2168
2168
  # POST /api/org/{orgId}/apps/check
@@ -2195,7 +2195,7 @@ module Infrawrench
2195
2195
  #
2196
2196
  # Installs the named requirements using the host's own package manager, then
2197
2197
  # re-probes and reports what the host now is. Takes requirement ids, never
2198
- # commands — the commands are derived server-side from a fresh probe. Needs
2198
+ # commands; the commands are derived server-side from a fresh probe. Needs
2199
2199
  # root or passwordless sudo on the host, respects change freezes, and is
2200
2200
  # audited as `linux_app.host_setup`.
2201
2201
  #
@@ -2438,7 +2438,7 @@ module Infrawrench
2438
2438
  # Record a restore drill
2439
2439
  #
2440
2440
  # A `verified` drill **must** carry the measured time: an RPO comes from the
2441
- # backup, and an RTO can only come from somebody with a stopwatch — that
2441
+ # backup, and an RTO can only come from somebody with a stopwatch; that
2442
2442
  # number is the entire point of the exercise. A `blocked` drill must not
2443
2443
  # carry one, because it never started.
2444
2444
  #
@@ -2468,7 +2468,7 @@ module Infrawrench
2468
2468
 
2469
2469
  # Delete a recorded drill
2470
2470
  #
2471
- # For one recorded against the wrong resource or the wrong date. Audited —
2471
+ # For one recorded against the wrong resource or the wrong date. Audited:
2472
2472
  # deleting evidence that a restore failed is exactly the edit a reviewer
2473
2473
  # would want to know about.
2474
2474
  #
@@ -2495,7 +2495,7 @@ module Infrawrench
2495
2495
  # Where every protected resource stands on restore
2496
2496
  #
2497
2497
  # Backup coverage answers 'is there a backup'. This answers 'does it
2498
- # restore, and how long does it take' — a different question, and the one
2498
+ # restore, and how long does it take'; a different question, and the one
2499
2499
  # routinely answered wrongly on the day.
2500
2500
  #
2501
2501
  # A drill is a **record that somebody tried**, not an automated restore:
@@ -2556,8 +2556,8 @@ module Infrawrench
2556
2556
 
2557
2557
  # Create a backup policy
2558
2558
  #
2559
- # A policy must demand at least one of `maxRpoHours` and `minRetentionDays`
2560
- # — one that demands nothing could never produce a finding and would read as
2559
+ # A policy must demand at least one of `maxRpoHours` and `minRetentionDays`:
2560
+ # one that demands nothing could never produce a finding and would read as
2561
2561
  # protection while providing none. An empty `resourceTypeIds` selects every
2562
2562
  # stateful resource type.
2563
2563
  #
@@ -2681,7 +2681,7 @@ module Infrawrench
2681
2681
  # What protects the organization's stateful resources, what does not, and
2682
2682
  # which backups protect nothing. Derived from already-synced inventory using
2683
2683
  # the `backupRole` and `backupPolicy` declarations plugins carry on their
2684
- # resource types — no provider API calls are made and results reflect the
2684
+ # resource types; no provider API calls are made and results reflect the
2685
2685
  # last sync. Findings are recomputed on every read rather than stored.
2686
2686
  # Orphaned backups carry a trailing-30-day spend quote when billing data is
2687
2687
  # available.
@@ -2737,7 +2737,7 @@ module Infrawrench
2737
2737
  )
2738
2738
  end
2739
2739
 
2740
- # Revoke a bastion — accounts referencing it have their bastion binding
2740
+ # Revoke a bastion; accounts referencing it have their bastion binding
2741
2741
  # cleared
2742
2742
  #
2743
2743
  # _Requires permission: `bastions:write`._
@@ -2796,7 +2796,7 @@ module Infrawrench
2796
2796
  # A capacity slot is one seat bought outright for a fixed term instead of
2797
2797
  # rented monthly, and it grants paid-plan access on its own. This is a
2798
2798
  # one-time payment, so the seats are granted by the
2799
- # `checkout.session.completed` webhook once Stripe confirms the payment — a
2799
+ # `checkout.session.completed` webhook once Stripe confirms the payment; a
2800
2800
  # 200 here only means the buyer was sent to a payment page. Rejected with
2801
2801
  # 400 for complimentary organizations, and 503 when the deployment has no
2802
2802
  # one-time capacity price configured.
@@ -2840,7 +2840,7 @@ module Infrawrench
2840
2840
 
2841
2841
  # Start a Stripe Checkout session
2842
2842
  #
2843
- # Rejected with 400 for complimentary organizations — they are never billed.
2843
+ # Rejected with 400 for complimentary organizations; they are never billed.
2844
2844
  #
2845
2845
  # _Requires permission: `billing:write`._
2846
2846
  #
@@ -2997,8 +2997,8 @@ module Infrawrench
2997
2997
 
2998
2998
  # List billing rules in evaluation order
2999
2999
  #
3000
- # Billing rules are the organisation's own adjustments to collected spend —
3001
- # a markup that recovers shared overhead, a discount negotiated outside the
3000
+ # Billing rules are the organisation's own adjustments to collected spend; a
3001
+ # markup that recovers shared overhead, a discount negotiated outside the
3002
3002
  # provider's pricing, a shared cluster reallocated onto the teams that use
3003
3003
  # it.
3004
3004
  #
@@ -3090,7 +3090,7 @@ module Infrawrench
3090
3090
 
3091
3091
  # Update a billing rule
3092
3092
  #
3093
- # A full replace, `enabled` included — switching a markup off is an edit of
3093
+ # A full replace, `enabled` included; switching a markup off is an edit of
3094
3094
  # the rule, so there is one audited action for “this rule changed” rather
3095
3095
  # than two.
3096
3096
  #
@@ -3579,7 +3579,7 @@ module Infrawrench
3579
3579
  # accumulating**, which is what makes a nightly job safe to retry. Nothing
3580
3580
  # lands unless the whole batch validates, so a bad row is a 400 rather than
3581
3581
  # half a month restated. The same guarantees back
3582
- # `infra.businessMetrics.write(...)` in a workflow — both go through one
3582
+ # `infra.businessMetrics.write(...)` in a workflow; both go through one
3583
3583
  # validator.
3584
3584
  #
3585
3585
  # _Requires permission: `costs:write`._
@@ -3657,7 +3657,7 @@ module Infrawrench
3657
3657
 
3658
3658
  # Create a business metric
3659
3659
  #
3660
- # Keys must be unique per organization among live metrics — they are how
3660
+ # Keys must be unique per organization among live metrics; they are how
3661
3661
  # workflows and the CLI address the metric. A key collision is a 409.
3662
3662
  #
3663
3663
  # _Requires permission: `costs:write`._
@@ -3829,7 +3829,7 @@ module Infrawrench
3829
3829
  # answer are worth knowing before reading it:
3830
3830
  #
3831
3831
  # - **The ratio is computed at the requested bucket**, from a summed
3832
- # numerator and a summed denominator — never a mean of daily ratios, which
3832
+ # numerator and a summed denominator: never a mean of daily ratios, which
3833
3833
  # weights a quiet day as heavily as a peak one. The same holds for
3834
3834
  # `overallValue`.
3835
3835
  # - **A missing or non-positive denominator is a gap** (`value: null` with a
@@ -3871,8 +3871,8 @@ module Infrawrench
3871
3871
 
3872
3872
  # Update a business metric
3873
3873
  #
3874
- # Replaces the whole definition. Changing `key` never orphans history —
3875
- # values are keyed on the metric's id — but it does break a workflow still
3874
+ # Replaces the whole definition. Changing `key` never orphans history
3875
+ # (values are keyed on the metric's id) but it does break a workflow still
3876
3876
  # writing to the old key, which is why the key is separate from the display
3877
3877
  # name in the first place.
3878
3878
  #
@@ -3967,7 +3967,7 @@ module Infrawrench
3967
3967
  #
3968
3968
  # Returns the only copy of the feed URL. The token in it is 32 random bytes,
3969
3969
  # stored as a SHA-256 hash, and is the sole credential on a route that runs
3970
- # outside every auth layer — treat the URL as a secret. The URL deliberately
3970
+ # outside every auth layer; treat the URL as a secret. The URL deliberately
3971
3971
  # contains no organization id.
3972
3972
  #
3973
3973
  # An organization may hold 25 live subscriptions; revoking makes room.
@@ -4020,7 +4020,7 @@ module Infrawrench
4020
4020
 
4021
4021
  # List the organization's iCalendar subscriptions
4022
4022
  #
4023
- # Feed URLs that have been minted, including revoked ones — a revoked row is
4023
+ # Feed URLs that have been minted, including revoked ones; a revoked row is
4024
4024
  # kept so the audit trail still resolves. The token itself is never
4025
4025
  # returned.
4026
4026
  #
@@ -4059,7 +4059,7 @@ module Infrawrench
4059
4059
  # One time axis over six things the organization already stores: change
4060
4060
  # freezes, sleep/wake schedules, declared deadlines (certificates, domains,
4061
4061
  # keys and resource leases), commitment term ends, cron-triggered workflow
4062
- # runs, and declared incidents. Nothing here is a new record — the calendar
4062
+ # runs, and declared incidents. Nothing here is a new record; the calendar
4063
4063
  # is recomputed on every read, exactly as posture findings and backup
4064
4064
  # coverage are.
4065
4065
  #
@@ -4324,7 +4324,7 @@ module Infrawrench
4324
4324
  # `cooldownMinutes`, covering every change since the previous one. These
4325
4325
  # settings decide which changes count and how often a message may go out.
4326
4326
  # Who receives it is the `resourceDrift` opt-in on push preferences, Slack
4327
- # channels and Teams webhooks — off by default on all three.
4327
+ # channels and Teams webhooks; off by default on all three.
4328
4328
  #
4329
4329
  # GET /api/org/{orgId}/changes/alert-settings
4330
4330
  #
@@ -4383,7 +4383,7 @@ module Infrawrench
4383
4383
  # Revert one change event
4384
4384
  #
4385
4385
  # Applies the inverse patch through the plugin's ordinary `updateResource`
4386
- # path — the same call the Edit form makes — and only for the fields the dry
4386
+ # path (the same call the Edit form makes) and only for the fields the dry
4387
4387
  # run marked `revertible`.
4388
4388
  #
4389
4389
  # The plan is rebuilt against a fresh live read immediately before the
@@ -4409,14 +4409,14 @@ module Infrawrench
4409
4409
  #
4410
4410
  # The claim carries an owner token, and every write that ends a revert is
4411
4411
  # fenced on it. An attempt whose provider call outlives the lease can
4412
- # therefore neither release nor complete the claim that replaced it — it
4413
- # gets `409` with `appliedFields` naming what it did write, so the caller
4414
- # can reconcile rather than assume. Two attempts can overlap in that case,
4415
- # but they cannot disagree: both invert the same recorded event to the same
4412
+ # therefore neither release nor complete the claim that replaced it; it gets
4413
+ # `409` with `appliedFields` naming what it did write, so the caller can
4414
+ # reconcile rather than assume. Two attempts can overlap in that case, but
4415
+ # they cannot disagree: both invert the same recorded event to the same
4416
4416
  # values, so the second one's patch is a subset of the first's.
4417
4417
  #
4418
4418
  # If a write reaches the provider but recording it fails, the response is
4419
- # `500` with `appliedFields` — the resource moved and the timeline has not
4419
+ # `500` with `appliedFields`: the resource moved and the timeline has not
4420
4420
  # caught up. The claim is deliberately held in that case, and the next
4421
4421
  # attempt after the lease expires finds every field already back and records
4422
4422
  # the revert without touching the provider again, answering `200` with
@@ -4428,13 +4428,13 @@ module Infrawrench
4428
4428
  # Blocked with `423` while an org change freeze is in effect. Every attempt
4429
4429
  # whose write reached the provider is audit-logged as
4430
4430
  # `resource.change_revert`, including one that lost its claim or could not
4431
- # record — the entry's `outcome` is `recorded`, `superseded`, `unrecorded`
4432
- # or `reconciled`, so a contested outcome reads as one mutation rather than
4433
- # as several reverts. An attempt that neither wrote nor recorded anything
4434
- # logs nothing. Attribution is best-effort: no transaction spans a
4435
- # third-party cloud API and Infrawrench's database, so if the audit insert
4436
- # itself fails the response carries `auditRecorded: false` and the details
4437
- # go to the server log rather than being silently dropped.
4431
+ # record; the entry's `outcome` is `recorded`, `superseded`, `unrecorded` or
4432
+ # `reconciled`, so a contested outcome reads as one mutation rather than as
4433
+ # several reverts. An attempt that neither wrote nor recorded anything logs
4434
+ # nothing. Attribution is best-effort: no transaction spans a third-party
4435
+ # cloud API and Infrawrench's database, so if the audit insert itself fails
4436
+ # the response carries `auditRecorded: false` and the details go to the
4437
+ # server log rather than being silently dropped.
4438
4438
  #
4439
4439
  # The stored resource snapshot is deliberately left untouched, so the next
4440
4440
  # poll observes the reverted state and records it as an ordinary change
@@ -4482,7 +4482,7 @@ module Infrawrench
4482
4482
  #
4483
4483
  # Inverts the recorded diff and reconciles it against the resource's
4484
4484
  # *current* live fields, which is the whole point: the poller may have
4485
- # recorded this hours ago and the world may have moved on. Read-only — it
4485
+ # recorded this hours ago and the world may have moved on. Read-only: it
4486
4486
  # reads from the provider and writes nothing.
4487
4487
  #
4488
4488
  # Only `updated` events with a field diff can be reverted. `outputs.*`
@@ -4540,7 +4540,7 @@ module Infrawrench
4540
4540
  # run-rate delta.
4541
4541
  #
4542
4542
  # A POST because it takes a list of ids, not because it writes: nothing is
4543
- # stored. The answer is recomputed on every call, deliberately — provider
4543
+ # stored. The answer is recomputed on every call, deliberately; provider
4544
4544
  # cost arrives late and is then restated, so a stored number would be a
4545
4545
  # wrong number that never corrects itself.
4546
4546
  #
@@ -4576,7 +4576,7 @@ module Infrawrench
4576
4576
  # Change events recorded by the resource poller: each poll cycle diffs the
4577
4577
  # freshly fetched state against the stored snapshot and records resources
4578
4578
  # that appeared, changed a stored field, or disappeared upstream.
4579
- # Cross-provider by construction — the diff runs on the generic stored
4579
+ # Cross-provider by construction; the diff runs on the generic stored
4580
4580
  # record, so every plugin's resources show up here.
4581
4581
  #
4582
4582
  # _Requires permission: `resources:read`._
@@ -4796,11 +4796,11 @@ module Infrawrench
4796
4796
 
4797
4797
  # Reservations, savings plans and committed-use discounts
4798
4798
  #
4799
- # The organization's purchased commitments — reserved instances, savings
4800
- # plans, committed-use discounts — with three derived readings.
4799
+ # The organization's purchased commitments (reserved instances, savings
4800
+ # plans, committed-use discounts) with three derived readings.
4801
4801
  #
4802
4802
  # **Coverage** is a range, not a number: the broad ratio counts every
4803
- # uncovered usage dollar in the denominator (a lower bound — egress and
4803
+ # uncovered usage dollar in the denominator (a lower bound; egress and
4804
4804
  # per-request charges can never be committed against), the narrow ratio only
4805
4805
  # uncovered usage in cells where a commitment demonstrably landed (an upper
4806
4806
  # bound). Accounts whose plugin cannot distinguish charge types are excluded
@@ -4808,7 +4808,7 @@ module Infrawrench
4808
4808
  # not 0%.
4809
4809
  #
4810
4810
  # **Utilization** is measured only over days cost data was actually
4811
- # collected — a collection gap is reported as missing days, never counted as
4811
+ # collected; a collection gap is reported as missing days, never counted as
4812
4812
  # idle commitment. Unit-denominated commitments (GCP) report null with a
4813
4813
  # reason, never 0%. Azure's own reported utilization rides on each holding
4814
4814
  # separately and is never blended with the derived figure.
@@ -4848,7 +4848,7 @@ module Infrawrench
4848
4848
  # Apply a configuration document
4849
4849
  #
4850
4850
  # Applies the document in a single transaction and returns the plan that was
4851
- # executed — all or nothing, so a failure never leaves the organization
4851
+ # executed; all or nothing, so a failure never leaves the organization
4852
4852
  # halfway between two configurations.
4853
4853
  #
4854
4854
  # Requires the write permission of every section the document carries, so
@@ -4860,7 +4860,7 @@ module Infrawrench
4860
4860
  #
4861
4861
  # Raises on 400: Bad request
4862
4862
  #
4863
- # Raises on 402: Payment required — the organization's plan does not include
4863
+ # Raises on 402: Payment required: the organization's plan does not include
4864
4864
  # this
4865
4865
  #
4866
4866
  # Raises on 403: Forbidden
@@ -4891,7 +4891,7 @@ module Infrawrench
4891
4891
  #
4892
4892
  # Credentials, accounts, resources and workflow signing secrets are never
4893
4893
  # included. Ordering is stable, so re-exporting an unchanged organization
4894
- # produces the same bytes — commit it to git and the diff is the change.
4894
+ # produces the same bytes; commit it to git and the diff is the change.
4895
4895
  #
4896
4896
  # Requires the read permission of every section exported; it refuses rather
4897
4897
  # than silently omitting one, because a partial document applied in
@@ -5224,7 +5224,7 @@ module Infrawrench
5224
5224
  #
5225
5225
  # Writes the finding as a cost annotation, so the step in the run rate is
5226
5226
  # explained on the graph where it shows. Re-posting the same subject
5227
- # **rewords the existing note** rather than adding a second — which is what
5227
+ # **rewords the existing note** rather than adding a second; which is what
5228
5228
  # makes it safe to pin a finding again once the provider has finished
5229
5229
  # restating. The note's date and report scope are never rewritten: they may
5230
5230
  # have been edited deliberately.
@@ -5311,8 +5311,8 @@ module Infrawrench
5311
5311
  #
5312
5312
  # Dated notes drawn over cost charts. With `reportId`, the set a chart for
5313
5313
  # that report draws: the org-wide notes plus that report's own. Without it,
5314
- # every annotation in the org. Annotations are an overlay — they never
5315
- # appear in a series, a total, or an axis.
5314
+ # every annotation in the org. Annotations are an overlay; they never appear
5315
+ # in a series, a total, or an axis.
5316
5316
  #
5317
5317
  # _Requires permission: `costs:read`._
5318
5318
  #
@@ -6172,7 +6172,7 @@ module Infrawrench
6172
6172
  # Runs the export immediately against the same code path the poller uses,
6173
6173
  # writing every period in the restatement window. Answers 200 with `status:
6174
6174
  # "failed"` and a message rather than an error status when the destination
6175
- # rejects the write — the caller wants the reason, and the same failure is
6175
+ # rejects the write; the caller wants the reason, and the same failure is
6176
6176
  # recorded on the export.
6177
6177
  #
6178
6178
  # _Requires permission: `org:settings:write`._
@@ -6373,7 +6373,7 @@ module Infrawrench
6373
6373
 
6374
6374
  # List cost-report folders
6375
6375
  #
6376
- # The org's report folders as a flat list — build the tree from
6376
+ # The org's report folders as a flat list; build the tree from
6377
6377
  # `parentFolderId`. Folders organize the Reports list and nothing else; a
6378
6378
  # report's id, URL and dashboard cards are unchanged by where it is filed.
6379
6379
  #
@@ -6398,7 +6398,7 @@ module Infrawrench
6398
6398
 
6399
6399
  # Update a cost-report folder
6400
6400
  #
6401
- # Rename and/or reparent. Filing a *report* is not here — that is `PUT
6401
+ # Rename and/or reparent. Filing a *report* is not here; that is `PUT
6402
6402
  # /cost-reports/{id}` with a different `folderId`. Reparenting past the
6403
6403
  # 3-level depth limit, or under the folder's own subtree, is a 400.
6404
6404
  #
@@ -6440,8 +6440,8 @@ module Infrawrench
6440
6440
 
6441
6441
  # List every delivery schedule in the organization
6442
6442
  #
6443
- # All reports' schedules in one call — what the CLI's schedules column
6444
- # reads. Schedules of deleted reports are excluded.
6443
+ # All reports' schedules in one call; what the CLI's schedules column reads.
6444
+ # Schedules of deleted reports are excluded.
6445
6445
  #
6446
6446
  # _Requires permission: `costs:read`._
6447
6447
  #
@@ -6474,7 +6474,7 @@ module Infrawrench
6474
6474
  # Create a delivery schedule
6475
6475
  #
6476
6476
  # On its cadence the server runs the report and sends a composed text
6477
- # summary — period total (converted to the org's display currency where
6477
+ # summary; period total (converted to the org's display currency where
6478
6478
  # configured, with the conversion caveat), change vs the previous period,
6479
6479
  # top groups, and a deep link. No chart images. An empty result still sends,
6480
6480
  # saying so.
@@ -6558,7 +6558,7 @@ module Infrawrench
6558
6558
  # Runs the report and delivers it to this schedule's destinations
6559
6559
  # immediately, ignoring the schedule and its enabled flag. Fails with a 400
6560
6560
  # naming the reason when nothing could be delivered. A successful manual
6561
- # send clears a parked failure — it is the documented recovery for a partial
6561
+ # send clears a parked failure; it is the documented recovery for a partial
6562
6562
  # delivery.
6563
6563
  #
6564
6564
  # _Requires permission: `org:settings:write`._
@@ -6595,7 +6595,7 @@ module Infrawrench
6595
6595
  # List the destinations a schedule can deliver to
6596
6596
  #
6597
6597
  # The org's live Slack channels and Teams webhooks, and whether this
6598
- # deployment can send mail. Destinations are picked from here — a schedule
6598
+ # deployment can send mail. Destinations are picked from here; a schedule
6599
6599
  # can only point at surfaces the org already connected.
6600
6600
  #
6601
6601
  # _Requires permission: `org:settings:write`._
@@ -6723,7 +6723,7 @@ module Infrawrench
6723
6723
  # Delete a cost report
6724
6724
  #
6725
6725
  # Soft delete. Every dashboard card pointing at the report is removed with
6726
- # it — a card whose report is gone could only ever render as an unavailable
6726
+ # it; a card whose report is gone could only ever render as an unavailable
6727
6727
  # tile.
6728
6728
  #
6729
6729
  # _Requires permission: `costs:write`._
@@ -6860,7 +6860,7 @@ module Infrawrench
6860
6860
  # Update a cost report
6861
6861
  #
6862
6862
  # Replaces the report's name, description, config and folder. Every
6863
- # dashboard showing the report picks up the new config — that is what
6863
+ # dashboard showing the report picks up the new config; that is what
6864
6864
  # referencing a report by id buys.
6865
6865
  #
6866
6866
  # _Requires permission: `costs:write`._
@@ -6902,7 +6902,7 @@ module Infrawrench
6902
6902
  # List scenario models
6903
6903
  #
6904
6904
  # Named, reusable sets of adjustments an organization overlays on a cost
6905
- # forecast — the **known future cost a trend fit cannot see**. Pass an id as
6905
+ # forecast; the **known future cost a trend fit cannot see**. Pass an id as
6906
6906
  # `POST /costs/query`'s `scenarioModelId` (alongside `forecast: true`) to
6907
6907
  # get the adjusted projection back *beside* the unadjusted one, never
6908
6908
  # instead of it.
@@ -6963,7 +6963,7 @@ module Infrawrench
6963
6963
 
6964
6964
  # Create a scenario model
6965
6965
  #
6966
- # Names must be unique per organization (case-insensitively) — the name is
6966
+ # Names must be unique per organization (case-insensitively); the name is
6967
6967
  # what a chart prints under its scenario line and what the CLI's `--scenario
6968
6968
  # <name>` addresses, so two models sharing one would make both meaningless.
6969
6969
  # A model needs at least one adjustment: an empty model changes nothing,
@@ -6995,7 +6995,7 @@ module Infrawrench
6995
6995
 
6996
6996
  # Delete a scenario model
6997
6997
  #
6998
- # Soft delete — **refused with a 409 while anything references the model**,
6998
+ # Soft delete: **refused with a 409 while anything references the model**,
6999
6999
  # with the referents in the body. For a chart, deleting would silently drop
7000
7000
  # the assumptions from a projection somebody is reading; for a budget it
7001
7001
  # would move the forecast thresholds back to the bare trend, changing when
@@ -7008,7 +7008,7 @@ module Infrawrench
7008
7008
  #
7009
7009
  # Raises on 404: Not found
7010
7010
  #
7011
- # Raises on 409: Still referenced — the body lists every referent.
7011
+ # Raises on 409: Still referenced: the body lists every referent.
7012
7012
  #
7013
7013
  # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7014
7014
  # constructed with.
@@ -7027,9 +7027,9 @@ module Infrawrench
7027
7027
 
7028
7028
  # List a scenario model's referents
7029
7029
  #
7030
- # Every budget, cost report and dashboard cost graph referencing this model
7031
- # — what an edit will change, and what a delete would be refused over.
7032
- # Budgets come first: they are the referents that page people.
7030
+ # Every budget, cost report and dashboard cost graph referencing this model;
7031
+ # what an edit will change, and what a delete would be refused over. Budgets
7032
+ # come first: they are the referents that page people.
7033
7033
  #
7034
7034
  # _Requires permission: `costs:read`._
7035
7035
  #
@@ -7056,7 +7056,7 @@ module Infrawrench
7056
7056
  #
7057
7057
  # Replaces the whole model. This is the high-leverage write: every chart
7058
7058
  # drawing it, and **every budget whose forecast thresholds are measured
7059
- # against it**, uses the new numbers on its next evaluation — which for a
7059
+ # against it**, uses the new numbers on its next evaluation; which for a
7060
7060
  # budget can change which alerts fire. `GET /{id}/referents` names what a
7061
7061
  # change will touch.
7062
7062
  #
@@ -7280,7 +7280,7 @@ module Infrawrench
7280
7280
  # Explain a detected cost anomaly
7281
7281
  #
7282
7282
  # Record what a finding actually was, and publish that sentence as a cost
7283
- # annotation on **every** chart covering the anomalous day — the point being
7283
+ # annotation on **every** chart covering the anomalous day; the point being
7284
7284
  # that 'we migrated the fleet' is not a fact about whichever report somebody
7285
7285
  # happened to open. The note's date (the anomalous day) and its org-wide
7286
7286
  # scope are derived from the anomaly and are not the caller's to choose.
@@ -7327,7 +7327,7 @@ module Infrawrench
7327
7327
  # trailing 28-day baseline by a statistical threshold (mean + N·stddev, with
7328
7328
  # an absolute floor to ignore penny-scale noise), and a `new_source`, where
7329
7329
  # a provider or service with no spend at all across that window suddenly
7330
- # billed a material amount. Thresholds are per organization — see GET
7330
+ # billed a material amount. Thresholds are per organization: see GET
7331
7331
  # /costs/anomaly-settings. Newest day first, capped at 200 rows.
7332
7332
  #
7333
7333
  # _Requires permission: `costs:read`._
@@ -7364,8 +7364,8 @@ module Infrawrench
7364
7364
  # Get the organization's anomaly detection thresholds
7365
7365
  #
7366
7366
  # The tunable part of cost anomaly detection. Everything else about the
7367
- # model — the 28-day baseline, the 7-day notification cooldown, the minimum
7368
- # history a baseline needs — is fixed. An organization that has never
7367
+ # model (the 28-day baseline, the 7-day notification cooldown, the minimum
7368
+ # history a baseline needs ) is fixed. An organization that has never
7369
7369
  # changed a threshold reads back the defaults. The response also carries the
7370
7370
  # derived, read-only `smsConfigured`.
7371
7371
  #
@@ -7392,11 +7392,11 @@ module Infrawrench
7392
7392
  #
7393
7393
  # Takes effect on the next detection pass (which runs after each cost
7394
7394
  # collection). Anomalies already stored are not re-judged. The four
7395
- # threshold fields are required — this is a PUT of the whole settings
7396
- # object, not a patch — and `smsAlerts` deliberately has no server-side
7397
- # default, so a client that omits it is rejected rather than silently
7398
- # switching an organization's SMS paging back off. `smsConfigured` is
7399
- # derived and is not accepted here.
7395
+ # threshold fields are required (this is a PUT of the whole settings object,
7396
+ # not a patch) and `smsAlerts` deliberately has no server-side default, so a
7397
+ # client that omits it is rejected rather than silently switching an
7398
+ # organization's SMS paging back off. `smsConfigured` is derived and is not
7399
+ # accepted here.
7400
7400
  #
7401
7401
  # _Requires permission: `costs:write`._
7402
7402
  #
@@ -7609,7 +7609,7 @@ module Infrawrench
7609
7609
  #
7610
7610
  # Takes effect on the next evaluation pass (which runs after each cost
7611
7611
  # collection). Already-fired alerts are not re-judged, and horizons that
7612
- # have already fired for a commitment's current term do not fire again —
7612
+ # have already fired for a commitment's current term do not fire again;
7613
7613
  # widening the horizon list warns about future crossings, not past ones. A
7614
7614
  # PUT of the whole object, not a patch.
7615
7615
  #
@@ -7754,10 +7754,10 @@ module Infrawrench
7754
7754
  #
7755
7755
  # The three slow-lane cost alerts in one feed, newest first: commitments
7756
7756
  # about to lapse, commitments that are not being used, and business metrics
7757
- # whose cost per unit rose. Unlike budgets, anomalies and change alerts —
7758
- # all of which compare a spend total against another spend total — these
7759
- # read the commitment calendar and the volume the spend bought, so they see
7760
- # the two surprises the other three structurally cannot.
7757
+ # whose cost per unit rose. Unlike budgets, anomalies and change alerts (all
7758
+ # of which compare a spend total against another spend total) these read the
7759
+ # commitment calendar and the volume the spend bought, so they see the two
7760
+ # surprises the other three structurally cannot.
7761
7761
  #
7762
7762
  # _Requires permission: `costs:read`._
7763
7763
  #
@@ -7868,8 +7868,8 @@ module Infrawrench
7868
7868
 
7869
7869
  # Push cost rows from your own systems
7870
7870
  #
7871
- # Reports spend Infrawrench has no provider plugin for — a parsed SaaS
7872
- # invoice, an internal chargeback, a colo bill — into the same store the
7871
+ # Reports spend Infrawrench has no provider plugin for (a parsed SaaS
7872
+ # invoice, an internal chargeback, a colo bill) into the same store the
7873
7873
  # provider collectors write to, so it appears in cost graphs, dimension
7874
7874
  # filters, and budgets alongside everything else.
7875
7875
  #
@@ -7912,7 +7912,7 @@ module Infrawrench
7912
7912
  #
7913
7913
  # Cost centres nest, so the list is a depth-first tree. Each entry carries
7914
7914
  # `totals` (spend allocated directly to it) and `subtreeTotals` (its own
7915
- # plus every descendant's) — "Engineering, of which Platform" needs both.
7915
+ # plus every descendant's). "Engineering, of which Platform" needs both.
7916
7916
  # Rules still evaluate first-match-wins by ascending priority against a flat
7917
7917
  # list, so a row is allocated exactly once even when a rule targets a parent
7918
7918
  # and another targets its child; at equal priority the more deeply nested
@@ -7935,7 +7935,7 @@ module Infrawrench
7935
7935
  # amount.
7936
7936
  # @param adjusted [String, nil] Apply the organization's billing rules (see /billing-rules):
7937
7937
  # markups multiply, and a reallocation moves a centre's spend onto another centre. Off by
7938
- # default — a chargeback report that silently showed marked-up numbers is one the receiving
7938
+ # default; a chargeback report that silently showed marked-up numbers is one the receiving
7939
7939
  # team could not reconcile. On, the response carries `adjustment` with the collected totals
7940
7940
  # beside the adjusted ones. Fixed-amount rules are booked onto the cost centre they name (or
7941
7941
  # "Unallocated" when they name none), pro-rated across the period.
@@ -7979,7 +7979,7 @@ module Infrawrench
7979
7979
  #
7980
7980
  # Spend on cost rows missing at least one of the org's required tag keys,
7981
7981
  # overall and per key, plus the largest untagged (account, service) buckets.
7982
- # Empty when no tag policy is configured — untagged is only meaningful
7982
+ # Empty when no tag policy is configured: untagged is only meaningful
7983
7983
  # against a policy.
7984
7984
  #
7985
7985
  # _Requires permission: `costs:read`._
@@ -8023,7 +8023,7 @@ module Infrawrench
8023
8023
  # Credential hygiene report
8024
8024
  #
8025
8025
  # API keys nobody uses, SSH keys nothing references, and members holding
8026
- # write permissions they have never exercised — derived entirely from data
8026
+ # write permissions they have never exercised; derived entirely from data
8027
8027
  # the server already holds. No provider call and nothing to enable.
8028
8028
  #
8029
8029
  # **The audit log only witnesses writes.** Reading a resource list or a cost
@@ -8031,7 +8031,7 @@ module Infrawrench
8031
8031
  # about read permissions: an absence of evidence about them proves nothing.
8032
8032
  # `permissionFindingsWithheld` is set when the organization does not yet
8033
8033
  # have enough audit history for the unused-permission finding to be
8034
- # meaningful. Both are load-bearing — a governance report that overclaims is
8034
+ # meaningful. Both are load-bearing; a governance report that overclaims is
8035
8035
  # worse than none.
8036
8036
  #
8037
8037
  # Gated on `audit:read` rather than a permission of its own: every fact here
@@ -8073,7 +8073,7 @@ module Infrawrench
8073
8073
  #
8074
8074
  # Every prepaid pot the organization holds, most urgent first. A provider
8075
8075
  # that bills in arrears sends an invoice you can argue with; a prepaid pot
8076
- # that empties simply stops answering — so this is an availability number as
8076
+ # that empties simply stops answering: so this is an availability number as
8077
8077
  # much as a finance one.
8078
8078
  #
8079
8079
  # The burn rate is measured from the server's own series of readings rather
@@ -8627,7 +8627,7 @@ module Infrawrench
8627
8627
  #
8628
8628
  # Raises on 400: Bad request
8629
8629
  #
8630
- # Raises on 402: Payment required — the organization's plan does not include
8630
+ # Raises on 402: Payment required: the organization's plan does not include
8631
8631
  # this
8632
8632
  #
8633
8633
  # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
@@ -8721,7 +8721,7 @@ module Infrawrench
8721
8721
  #
8722
8722
  # Raises on 400: Bad request
8723
8723
  #
8724
- # Raises on 402: Payment required — the organization's plan does not include
8724
+ # Raises on 402: Payment required: the organization's plan does not include
8725
8725
  # this
8726
8726
  #
8727
8727
  # Raises on 404: Not found
@@ -8773,7 +8773,7 @@ module Infrawrench
8773
8773
  #
8774
8774
  # Raises on 400: Bad request
8775
8775
  #
8776
- # Raises on 402: Payment required — the organization's plan does not include
8776
+ # Raises on 402: Payment required: the organization's plan does not include
8777
8777
  # this
8778
8778
  #
8779
8779
  # Raises on 404: Not found
@@ -9577,8 +9577,8 @@ module Infrawrench
9577
9577
  # (the default) is what the provider charged on the day it charged it; `amortized` spreads a
9578
9578
  # commitment's up-front fee across the term it buys; `blended` also spreads each
9579
9579
  # commitment's discount evenly over the usage it could cover. It is echoed on every response
9580
- # because a delta whose basis is unstated is unreadable — an amortized 'after' against a
9581
- # cash 'before' looks exactly like a saving.
9580
+ # because a delta whose basis is unstated is unreadable: an amortized 'after' against a cash
9581
+ # 'before' looks exactly like a saving.
9582
9582
  # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
9583
9583
  # @return [Hash] Parsed JSON, shaped as `DeploymentCostImpact` — see
9584
9584
  # `sig/infrawrench/sdk.rbs`.
@@ -9682,11 +9682,11 @@ module Infrawrench
9682
9682
  # Roll back to a previous deployment
9683
9683
  #
9684
9684
  # Re-runs that run's `deploy()` with the image and plan it recorded,
9685
- # building nothing — the exact artifact that was known good ships again. The
9685
+ # building nothing; the exact artifact that was known good ships again. The
9686
9686
  # Infrafile is read at the commit that run deployed, not at the branch head.
9687
9687
  # Only a successful run that produced an image can be rolled back to. With
9688
9688
  # `deleteCreated`, resources that runs after the target created through
9689
- # `infra.accounts` are deleted once the rollback has succeeded — undoing the
9689
+ # `infra.accounts` are deleted once the rollback has succeeded; undoing the
9690
9690
  # provisioning, not just the shipping. Deletions are best-effort and
9691
9691
  # reported in the result's notes.
9692
9692
  #
@@ -9698,7 +9698,7 @@ module Infrawrench
9698
9698
  #
9699
9699
  # Raises on 401: Unauthenticated
9700
9700
  #
9701
- # Raises on 402: Payment required — the organization's plan does not include
9701
+ # Raises on 402: Payment required: the organization's plan does not include
9702
9702
  # this
9703
9703
  #
9704
9704
  # Raises on 403: Forbidden
@@ -9739,10 +9739,10 @@ module Infrawrench
9739
9739
 
9740
9740
  # Deploy an environment whenever a branch moves
9741
9741
  #
9742
- # Arming a trigger records the branch's current commit WITHOUT deploying it
9743
- # — the trigger fires on the next push, not on the state at the moment it
9744
- # was created. The environment is validated against the Infrafile at that
9745
- # branch head, so a typo fails here rather than silently never firing.
9742
+ # Arming a trigger records the branch's current commit WITHOUT deploying it;
9743
+ # the trigger fires on the next push, not on the state at the moment it was
9744
+ # created. The environment is validated against the Infrafile at that branch
9745
+ # head, so a typo fails here rather than silently never firing.
9746
9746
  #
9747
9747
  # _Requires permission: `deployments:write`._
9748
9748
  #
@@ -10021,8 +10021,8 @@ module Infrawrench
10021
10021
  #
10022
10022
  # Email is a digest-only transport, so its destinations are an
10023
10023
  # organization-level address list rather than a per-channel trigger.
10024
- # Addresses need not belong to Infrawrench users — a finance alias is a
10025
- # valid recipient.
10024
+ # Addresses need not belong to Infrawrench users; a finance alias is a valid
10025
+ # recipient.
10026
10026
  #
10027
10027
  # GET /api/org/{orgId}/digest/recipients
10028
10028
  #
@@ -10081,7 +10081,7 @@ module Infrawrench
10081
10081
 
10082
10082
  # Compose and send last week's digest now
10083
10083
  #
10084
- # Ignores the schedule and the enabled flag — composes the digest for the
10084
+ # Ignores the schedule and the enabled flag; composes the digest for the
10085
10085
  # last complete week and sends it to every opted-in channel and email
10086
10086
  # recipient. This is also the manual recovery for a partial delivery, which
10087
10087
  # is never retried automatically. Fails when nothing is routed to receive
@@ -10108,7 +10108,7 @@ module Infrawrench
10108
10108
  # Update the weekly digest settings
10109
10109
  #
10110
10110
  # Every field is optional. Enabling schedules the first digest for the next
10111
- # configured send time rather than sending immediately — use POST
10111
+ # configured send time rather than sending immediately; use POST
10112
10112
  # /digest/send for an immediate one. The week boundary follows `timezone`,
10113
10113
  # so the reported window is always the organization's own local
10114
10114
  # Monday-to-Sunday week. Changing the schedule clears any parked failure
@@ -10148,7 +10148,7 @@ module Infrawrench
10148
10148
  # One view over every zone and record across the connected DNS providers
10149
10149
  # (Cloudflare, Route 53, Cloud DNS, DigitalOcean, Netlify, Azure DNS,
10150
10150
  # Vercel), with each record target classified against the rest of the
10151
- # workspace. No provider API calls are made and no DNS is resolved — results
10151
+ # workspace. No provider API calls are made and no DNS is resolved: results
10152
10152
  # reflect the last sync.
10153
10153
  #
10154
10154
  # A `dangling` target is a subdomain-takeover candidate: the record points
@@ -10223,8 +10223,8 @@ module Infrawrench
10223
10223
 
10224
10224
  # Compare two accounts' resource inventories
10225
10225
  #
10226
- # Compares two accounts of the same provider — typically staging against
10227
- # production — over already-synced state: which resource types exist in one
10226
+ # Compares two accounts of the same provider (typically staging against
10227
+ # production) over already-synced state: which resource types exist in one
10228
10228
  # and not the other, the per-type count deltas, and the fields on which two
10229
10229
  # corresponding resources disagree (instance class, engine version, feature
10230
10230
  # flags).
@@ -10232,8 +10232,8 @@ module Infrawrench
10232
10232
  # Resources are paired by resource type plus name with environment words
10233
10233
  # removed, so `api-staging` lines up with `api-prod` without any naming
10234
10234
  # convention to configure. By default the comparison hides divergences that
10235
- # are artefacts of being two different resources — ids, links, network
10236
- # addresses and timestamps — because every resource has different ones; pass
10235
+ # are artefacts of being two different resources (ids, links, network
10236
+ # addresses and timestamps) because every resource has different ones; pass
10237
10237
  # `includeIdentityFields=true` to see them.
10238
10238
  #
10239
10239
  # Read-only and cheap: no provider API calls are made, so results reflect
@@ -10249,7 +10249,7 @@ module Infrawrench
10249
10249
  #
10250
10250
  # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
10251
10251
  # constructed with.
10252
- # @param a [String] Baseline account id — by convention the environment that works.
10252
+ # @param a [String] Baseline account id; by convention the environment that works.
10253
10253
  # @param b [String] Compared account id. Must differ from `a` and use the same provider.
10254
10254
  # @param resource_type_id [String, nil] Compare one resource type only.
10255
10255
  # @param include_identity_fields [String, nil] Compare identity and timestamp fields too,
@@ -10291,7 +10291,7 @@ module Infrawrench
10291
10291
 
10292
10292
  # Forget a torn-down environment
10293
10293
  #
10294
- # Removes the record. Refuses while the instance still owns resources — the
10294
+ # Removes the record. Refuses while the instance still owns resources; the
10295
10295
  # row is the only thing that knows they exist. Audit-logged.
10296
10296
  #
10297
10297
  # _Requires permission: `resources:write`._
@@ -10300,7 +10300,7 @@ module Infrawrench
10300
10300
  #
10301
10301
  # Raises on 404: Not found
10302
10302
  #
10303
- # Raises on 409: The environment is still live — tear it down first
10303
+ # Raises on 409: The environment is still live; tear it down first
10304
10304
  #
10305
10305
  # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
10306
10306
  # constructed with.
@@ -10441,8 +10441,8 @@ module Infrawrench
10441
10441
 
10442
10442
  # Set the organization's environment TTL rails
10443
10443
  #
10444
- # `org:settings:write`, not `resources:write` — this is a governance
10445
- # decision about how long the organization is willing to pay for a throwaway
10444
+ # `org:settings:write`, not `resources:write`: this is a governance decision
10445
+ # about how long the organization is willing to pay for a throwaway
10446
10446
  # environment. Clamped to a 720-hour ceiling; the default is clamped to the
10447
10447
  # maximum. Audit-logged.
10448
10448
  #
@@ -10480,7 +10480,7 @@ module Infrawrench
10480
10480
  #
10481
10481
  # Save a capture draft as a template. Member keys must be unique, every
10482
10482
  # parameter and member reference must resolve, and the members must be
10483
- # orderable — a dependency cycle is rejected here rather than half-way
10483
+ # orderable; a dependency cycle is rejected here rather than half-way
10484
10484
  # through an apply. Audit-logged.
10485
10485
  #
10486
10486
  # _Requires permission: `resources:write`._
@@ -10510,7 +10510,7 @@ module Infrawrench
10510
10510
 
10511
10511
  # Delete an environment template
10512
10512
  #
10513
- # Live instances keep running and keep their TTL — they own real resources,
10513
+ # Live instances keep running and keep their TTL; they own real resources,
10514
10514
  # and the template is only where they came from. Their `templateId` becomes
10515
10515
  # null; the denormalized `templateName` is what the surface reads.
10516
10516
  # Audit-logged.
@@ -10541,7 +10541,7 @@ module Infrawrench
10541
10541
  #
10542
10542
  # Runs each member's create fields through the plugin's own `estimateCost`.
10543
10543
  # A member the plugin cannot price is counted in `unpricedCount` and makes
10544
- # the total `partial` — `null` is never rounded to zero.
10544
+ # the total `partial`: `null` is never rounded to zero.
10545
10545
  #
10546
10546
  # _Requires permission: `resources:read`._
10547
10547
  #
@@ -10715,7 +10715,7 @@ module Infrawrench
10715
10715
  # Preview a template capture
10716
10716
  #
10717
10717
  # Turn a selection of live resources into a draft template. **Persists
10718
- # nothing** — the editor shows the draft so the user can choose which fields
10718
+ # nothing**: the editor shows the draft so the user can choose which fields
10719
10719
  # to vary before saving. The shape of every member comes from the plugin's
10720
10720
  # own `getCreateConfig`: a captured value with no matching create field is
10721
10721
  # dropped, and a resource type the plugin cannot create is reported in
@@ -11343,7 +11343,7 @@ module Infrawrench
11343
11343
  # List uploaded Terraform state documents
11344
11344
  #
11345
11345
  # Every state document the organization has uploaded, newest first. The
11346
- # documents themselves are never stored — only the parsed, redacted
11346
+ # documents themselves are never stored; only the parsed, redacted
11347
11347
  # projection.
11348
11348
  #
11349
11349
  # GET /api/org/{orgId}/iac/states
@@ -11440,7 +11440,7 @@ module Infrawrench
11440
11440
  #
11441
11441
  # The managed/unmanaged badge for a resource detail page, computed against
11442
11442
  # the newest state document. `status` is null when the organization has
11443
- # uploaded none — absence of a state is not evidence of ClickOps. A query
11443
+ # uploaded none; absence of a state is not evidence of ClickOps. A query
11444
11444
  # parameter rather than a path segment because composite resource ids
11445
11445
  # contain slashes.
11446
11446
  #
@@ -11477,7 +11477,7 @@ module Infrawrench
11477
11477
  # List declared incidents
11478
11478
  #
11479
11479
  # Every incident the organization has declared, newest first, each with the
11480
- # artefacts its declaration created — including the ones that failed.
11480
+ # artefacts its declaration created: including the ones that failed.
11481
11481
  #
11482
11482
  # _Requires permission: `incidents:read`._
11483
11483
  #
@@ -11638,7 +11638,7 @@ module Infrawrench
11638
11638
  # Delete an incident
11639
11639
  #
11640
11640
  # Removes the incident, its notes and its artefact records. It does not lift
11641
- # a freeze or close a status-page update — resolve for that; deleting is for
11641
+ # a freeze or close a status-page update, resolve for that; deleting is for
11642
11642
  # a mis-declaration. Audit-logged.
11643
11643
  #
11644
11644
  # _Requires permission: `incidents:write`._
@@ -11666,8 +11666,8 @@ module Infrawrench
11666
11666
  # Export a pre-filled postmortem
11667
11667
  #
11668
11668
  # Markdown with the timeline, the affected resources, the duration, the time
11669
- # to mitigate and the notes already filled in. The analysis headings —
11670
- # impact, root cause, action items — are deliberately left blank: a
11669
+ # to mitigate and the notes already filled in. The analysis headings
11670
+ # (impact, root cause, action items) are deliberately left blank: a
11671
11671
  # generated document that guesses at a root cause is worse than one that
11672
11672
  # leaves a heading.
11673
11673
  #
@@ -11697,9 +11697,9 @@ module Infrawrench
11697
11697
  #
11698
11698
  # Re-runs only the side effects whose artefact is in a failure state,
11699
11699
  # replacing each failure rather than queueing a second attempt beside it. A
11700
- # `failed` artefact is **re-created**; a `close_failed` one is **re-closed**
11701
- # — re-creating the latter would open a second change freeze or post a
11702
- # duplicate public notice. A status-page retry reuses the components
11700
+ # `failed` artefact is **re-created**; a `close_failed` one is
11701
+ # **re-closed**; re-creating the latter would open a second change freeze or
11702
+ # post a duplicate public notice. A status-page retry reuses the components
11703
11703
  # recorded on the artefact's `request`, so the announcement keeps its
11704
11704
  # original scope. Its own endpoint rather than a flag on PATCH, because it
11705
11705
  # writes into three external systems. Audit-logged.
@@ -11732,8 +11732,8 @@ module Infrawrench
11732
11732
  # provider status incidents, audit entries, change freezes and workflow runs
11733
11733
  # (all via the same union the Moment screen uses), plus probe state
11734
11734
  # transitions, metric-alert firings, the incident's own life events, its
11735
- # artefacts and its operator notes. Nothing is copied — a correction
11736
- # upstream shows up here on the next read.
11735
+ # artefacts and its operator notes. Nothing is copied; a correction upstream
11736
+ # shows up here on the next read.
11737
11737
  #
11738
11738
  # Probe transitions are an approximation: `synthetic_probes` keeps only a
11739
11739
  # single `lastStateChangeAt`, so a probe that flapped twice inside the
@@ -11763,7 +11763,7 @@ module Infrawrench
11763
11763
  # Edit or transition an incident
11764
11764
  #
11765
11765
  # Omitted fields keep their value. Setting `status` stamps the matching
11766
- # timestamp, and resolving undoes exactly what this incident created — the
11766
+ # timestamp, and resolving undoes exactly what this incident created; the
11767
11767
  # freeze whose id is on its own artefact, not whatever freeze happens to be
11768
11768
  # in effect. Resolving an incident that was never marked mitigated
11769
11769
  # back-fills `mitigatedAt` from `resolvedAt`. Audit-logged.
@@ -11865,7 +11865,7 @@ module Infrawrench
11865
11865
  @transport = transport
11866
11866
  end
11867
11867
 
11868
- # Approve an invoice — freeze its figures
11868
+ # Approve an invoice; freeze its figures
11869
11869
  #
11870
11870
  # Computes the figures one last time and writes them onto the invoice
11871
11871
  # together with the exchange rates, the day they were read, the billing
@@ -11880,7 +11880,7 @@ module Infrawrench
11880
11880
  # customer's currency.
11881
11881
  #
11882
11882
  # Refused with 409, too, when the draft or its customer changed while the
11883
- # figures were being computed — a different period, scope, currency, cost
11883
+ # figures were being computed: a different period, scope, currency, cost
11884
11884
  # basis or billing-rules setting. Nothing is approved in that case: freezing
11885
11885
  # figures that describe a different question would be worse than making the
11886
11886
  # caller look again.
@@ -11971,9 +11971,9 @@ module Infrawrench
11971
11971
  # Download an invoice as CSV
11972
11972
  #
11973
11973
  # The derivation, not a rendered document: what was collected, what the
11974
- # rules added, the rate and the day it was read, and the final figure —
11975
- # every column an accounts-payable clerk needs to check the arithmetic. Same
11976
- # RFC 4180 quoting as the scheduled cost exports.
11974
+ # rules added, the rate and the day it was read, and the final figure; every
11975
+ # column an accounts-payable clerk needs to check the arithmetic. Same RFC
11976
+ # 4180 quoting as the scheduled cost exports.
11977
11977
  #
11978
11978
  # _Requires permission: `invoices:read`._
11979
11979
  #
@@ -12027,7 +12027,7 @@ module Infrawrench
12027
12027
  # List invoices
12028
12028
  #
12029
12029
  # Summaries, newest period first. A draft's `totals` is null here rather
12030
- # than recomputed — recomputing every draft would make opening the list one
12030
+ # than recomputed; recomputing every draft would make opening the list one
12031
12031
  # cost-data scan per draft, and zero would be a lie the reader cannot
12032
12032
  # detect.
12033
12033
  #
@@ -12057,7 +12057,7 @@ module Infrawrench
12057
12057
 
12058
12058
  # Send an invoice to its customer
12059
12059
  #
12060
- # Changes no figure — the document was frozen at approval. It records the
12060
+ # Changes no figure; the document was frozen at approval. It records the
12061
12061
  # **release** (this may go to the customer, and this person said so), then
12062
12062
  # emails the invoice to the customer's contact addresses with the CSV
12063
12063
  # attached.
@@ -12068,8 +12068,8 @@ module Infrawrench
12068
12068
  # delivery is visible, and re-sending retries it.
12069
12069
  #
12070
12070
  # Sending again needs `resend: true` only when the last attempt reached
12071
- # somebody — see `InvoiceSendRequest`. The body may be omitted entirely for
12072
- # a first send.
12071
+ # somebody, see `InvoiceSendRequest`. The body may be omitted entirely for a
12072
+ # first send.
12073
12073
  #
12074
12074
  # _Requires permission: `invoices:issue`._
12075
12075
  #
@@ -12101,7 +12101,7 @@ module Infrawrench
12101
12101
  # Edit a draft invoice
12102
12102
  #
12103
12103
  # Draft only. An approved, sent or void invoice is refused with 409 by the
12104
- # service, not merely hidden by the UI — an issued invoice that silently
12104
+ # service, not merely hidden by the UI; an issued invoice that silently
12105
12105
  # changed after the customer received it is the worst outcome this feature
12106
12106
  # could produce.
12107
12107
  #
@@ -12135,7 +12135,7 @@ module Infrawrench
12135
12135
  # Void an issued invoice
12136
12136
  #
12137
12137
  # The only correction there is. The original keeps every figure it was sent
12138
- # with — “we billed you this, it was wrong, here is the corrected one” is a
12138
+ # with: “we billed you this, it was wrong, here is the corrected one” is a
12139
12139
  # story a customer can follow, and “we changed the invoice” is not.
12140
12140
  #
12141
12141
  # With `supersede`, the void, the corrective draft and both directions of
@@ -12336,7 +12336,7 @@ module Infrawrench
12336
12336
  # constructed with.
12337
12337
  # @param source_kind [String, nil]
12338
12338
  # @param source_id [Array<String>, nil] Repeat to narrow to specific findings. Omit to
12339
- # return every link of the kind — this is the batch lookup a list view makes once instead of
12339
+ # return every link of the kind; this is the batch lookup a list view makes once instead of
12340
12340
  # one request per row.
12341
12341
  # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12342
12342
  # @return [Array<Hash>] Parsed JSON, shaped as `Array<JiraIssueLink>` — see
@@ -12453,7 +12453,7 @@ module Infrawrench
12453
12453
 
12454
12454
  # Cancel a lease
12455
12455
  #
12456
- # Stop the countdown — the resource stays, the lease goes `canceled` and
12456
+ # Stop the countdown; the resource stays, the lease goes `canceled` and
12457
12457
  # leaves the expiry radar. Audit-logged.
12458
12458
  #
12459
12459
  # _Requires permission: `resources:write`._
@@ -12481,9 +12481,9 @@ module Infrawrench
12481
12481
 
12482
12482
  # Create a resource lease
12483
12483
  #
12484
- # Attach an expiry to a resource — 'give me a test cluster for 3 days'. One
12484
+ # Attach an expiry to a resource; 'give me a test cluster for 3 days'. One
12485
12485
  # lease per resource (an active lease conflicts; a terminal one is
12486
- # replaced). `autoDelete: true` opts into deletion at expiry — the poller
12486
+ # replaced). `autoDelete: true` opts into deletion at expiry; the poller
12487
12487
  # announces it twice first, defers during change freezes, and requires the
12488
12488
  # caller to hold `resources:delete`. Audit-logged.
12489
12489
  #
@@ -12721,7 +12721,7 @@ module Infrawrench
12721
12721
  # constructed with.
12722
12722
  # @param source_kind [String, nil]
12723
12723
  # @param source_id [Array<String>, nil] Repeat to narrow to specific findings. Omit to
12724
- # return every link of the kind — this is the batch lookup a list view makes once instead of
12724
+ # return every link of the kind; this is the batch lookup a list view makes once instead of
12725
12725
  # one request per row.
12726
12726
  # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12727
12727
  # @return [Array<Hash>] Parsed JSON, shaped as `Array<LinearIssueLink>` — see
@@ -12739,7 +12739,7 @@ module Infrawrench
12739
12739
 
12740
12740
  # List Linear teams
12741
12741
  #
12742
- # Backs the team picker, so nobody has to know a team id by hand —
12742
+ # Backs the team picker, so nobody has to know a team id by hand;
12743
12743
  # issueCreate requires one, and every issue belongs to exactly one team.
12744
12744
  #
12745
12745
  # _Requires permission: `linear:read`._
@@ -12917,8 +12917,8 @@ module Infrawrench
12917
12917
 
12918
12918
  # List log-capable resources
12919
12919
  #
12920
- # Synced resources whose rendered detail declares the logs capability — the
12921
- # candidates a log workspace can tail — plus sidecar streams reached through
12920
+ # Synced resources whose rendered detail declares the logs capability (the
12921
+ # candidates a log workspace can tail) plus sidecar streams reached through
12922
12922
  # a peer integration (pods and workloads inside a managed cluster, listed
12923
12923
  # live from the provider and marked with `parentResourceId`). Discovered
12924
12924
  # from the plugin contract (never a hardcoded provider list), capped at 500
@@ -13020,8 +13020,8 @@ module Infrawrench
13020
13020
  #
13021
13021
  # A soft delete: an issued invoice names its customer, and an invoice whose
13022
13022
  # customer stopped resolving is exactly the unreconcilable document this
13023
- # feature exists to prevent. Draft invoices are removed with it — a draft
13024
- # was never issued.
13023
+ # feature exists to prevent. Draft invoices are removed with it; a draft was
13024
+ # never issued.
13025
13025
  #
13026
13026
  # _Requires permission: `invoices:write`._
13027
13027
  #
@@ -13252,7 +13252,7 @@ module Infrawrench
13252
13252
  # List metric series that actually exist
13253
13253
  #
13254
13254
  # The series labels resources reported in the last 7 days, optionally
13255
- # narrowed to one plugin and resource type — what the rule builder's metric
13255
+ # narrowed to one plugin and resource type; what the rule builder's metric
13256
13256
  # picker is fed from.
13257
13257
  #
13258
13258
  # GET /api/org/{orgId}/metric-alerts/metric-keys
@@ -13368,7 +13368,7 @@ module Infrawrench
13368
13368
 
13369
13369
  # Everything that happened around a timestamp
13370
13370
  #
13371
- # "What changed around 03:14?" — one merged, chronological narrative of
13371
+ # "What changed around 03:14?"; one merged, chronological narrative of
13372
13372
  # everything the platform knows happened in a window: resource changes
13373
13373
  # (including sleep/wake schedule attribution), provider status incidents
13374
13374
  # that started/resolved in or overlap the window, cost anomalies, workflow
@@ -13414,7 +13414,7 @@ module Infrawrench
13414
13414
  # Connect a Teams channel as an alert destination
13415
13415
  #
13416
13416
  # Adds a channel by webhook URL, or updates the one already holding that
13417
- # URL. Which alerts reach it is decided by /alert-rules — connecting a
13417
+ # URL. Which alerts reach it is decided by /alert-rules; connecting a
13418
13418
  # channel routes nothing to it on its own. Responds 400 when the URL is not
13419
13419
  # https or its host is not Microsoft-operated.
13420
13420
  #
@@ -13461,7 +13461,7 @@ module Infrawrench
13461
13461
 
13462
13462
  # Rename a Teams channel
13463
13463
  #
13464
- # The webhook URL is immutable — remove the channel and re-add it to change
13464
+ # The webhook URL is immutable; remove the channel and re-add it to change
13465
13465
  # it.
13466
13466
  #
13467
13467
  # PATCH /api/org/{orgId}/msteams/webhooks/{id}
@@ -13523,7 +13523,7 @@ module Infrawrench
13523
13523
 
13524
13524
  # Post a test card to every configured Teams channel
13525
13525
  #
13526
- # Ignores routing rules — every channel gets the test. Fails with the error
13526
+ # Ignores routing rules; every channel gets the test. Fails with the error
13527
13527
  # Microsoft returned when nothing could be delivered (HTTP 404 usually means
13528
13528
  # the Workflow was deleted or turned off).
13529
13529
  #
@@ -13696,7 +13696,7 @@ module Infrawrench
13696
13696
  # Turn network flow collection on or off
13697
13697
  #
13698
13698
  # Collection is **off by default**. Enabling it authorizes Infrawrench to
13699
- # run daily queries against the provider's log store — and on AWS those
13699
+ # run daily queries against the provider's log store; and on AWS those
13700
13700
  # queries are billed to your own cloud account per GB of log data scanned,
13701
13701
  # every day, until you turn them off. That is why the write is governed by
13702
13702
  # `org:settings:write` rather than `costs:write`, and why it is
@@ -13758,7 +13758,7 @@ module Infrawrench
13758
13758
  # line.
13759
13759
  #
13760
13760
  # Accounts whose provider has no readable flow source appear in `accounts`
13761
- # with `supportsFlows: false` and contribute nothing to the totals — never
13761
+ # with `supportsFlows: false` and contribute nothing to the totals; never
13762
13762
  # zero bytes.
13763
13763
  #
13764
13764
  # _Requires permission: `costs:read`._
@@ -13901,7 +13901,7 @@ module Infrawrench
13901
13901
  # Shift boundaries are calendar-day arithmetic in the rotation's own zone,
13902
13902
  # not 24-hour arithmetic: a rotation stepped in fixed milliseconds drifts an
13903
13903
  # hour at each daylight-saving change until the 09:00 Monday handover
13904
- # happens at 08:00 — or until two people each think the other is on call.
13904
+ # happens at 08:00; or until two people each think the other is on call.
13905
13905
  #
13906
13906
  # Writing takes `org:settings:write`: a rotation decides who gets woken up.
13907
13907
  #
@@ -14003,7 +14003,7 @@ module Infrawrench
14003
14003
  # Edit an on-call rotation
14004
14004
  #
14005
14005
  # Omitted fields are left alone, and the result is validated after merging.
14006
- # Sending `participantUserIds` replaces the list wholesale — position is
14006
+ # Sending `participantUserIds` replaces the list wholesale; position is
14007
14007
  # rotation order, so reordering re-plans the future.
14008
14008
  #
14009
14009
  # PATCH /api/org/{orgId}/on-call/schedules/{scheduleId}
@@ -14050,7 +14050,7 @@ module Infrawrench
14050
14050
  # Who is on call right now
14051
14051
  #
14052
14052
  # One entry per rotation: the shift in effect, and the next person in the
14053
- # rotation. Takes `team:read` — knowing who is on call is something every
14053
+ # rotation. Takes `team:read`: knowing who is on call is something every
14054
14054
  # member needs and nobody should have to ask an admin for.
14055
14055
  #
14056
14056
  # GET /api/org/{orgId}/on-call/now
@@ -14113,8 +14113,8 @@ module Infrawrench
14113
14113
  # List likely-orphaned and idle resources
14114
14114
  #
14115
14115
  # Scans the organization's already-synced resources against each plugin's
14116
- # declarative orphan heuristics — unattached volumes, unassigned
14117
- # floating/elastic IPs, reserved-but-unused static IPs — and returns the
14116
+ # declarative orphan heuristics (unattached volumes, unassigned
14117
+ # floating/elastic IPs, reserved-but-unused static IPs) and returns the
14118
14118
  # matches grouped by account, each with the plugin's reason. Purely a read
14119
14119
  # over stored state: no provider API calls are made, so results reflect the
14120
14120
  # last sync. Where the org's collected cost data has per-resource rows,
@@ -14179,9 +14179,9 @@ module Infrawrench
14179
14179
 
14180
14180
  # List resource ownership records
14181
14181
  #
14182
- # Every ownership record in the organization — owner, purpose and
14183
- # authorizing ticket, per resource. Only resources somebody has recorded
14184
- # something about appear; an absent record means the resource is unowned.
14182
+ # Every ownership record in the organization; owner, purpose and authorizing
14183
+ # ticket, per resource. Only resources somebody has recorded something about
14184
+ # appear; an absent record means the resource is unowned.
14185
14185
  #
14186
14186
  # _Requires permission: `resources:read`._
14187
14187
  #
@@ -14257,7 +14257,7 @@ module Infrawrench
14257
14257
 
14258
14258
  # Set a resource's ownership
14259
14259
  #
14260
- # Upsert keyed by `resourceId` — ownership is a property of the resource, so
14260
+ # Upsert keyed by `resourceId`: ownership is a property of the resource, so
14261
14261
  # there is no separate create and update. Omitted fields keep their value
14262
14262
  # and `null` clears one. Clearing every field removes the record entirely
14263
14263
  # and the response is `null`, which is the new truth rather than an empty
@@ -14300,9 +14300,9 @@ module Infrawrench
14300
14300
 
14301
14301
  # Raise an alert to the organization's on-call transports
14302
14302
  #
14303
- # Fans an alert out over whatever the org has configured — Twilio SMS (and
14303
+ # Fans an alert out over whatever the org has configured (Twilio SMS (and
14304
14304
  # voice on request), mobile push, Slack channels, and Microsoft Teams
14305
- # webhooks — honouring each recipient's opt-ins. This is the same alert a
14305
+ # webhooks) honouring each recipient's opt-ins. This is the same alert a
14306
14306
  # workflow raises with `infra.page(...)`, for code that runs somewhere
14307
14307
  # Infrawrench does not: a health check, a deploy script, a cron on a box.
14308
14308
  #
@@ -14340,7 +14340,7 @@ module Infrawrench
14340
14340
  # Clear a page key's cooldown
14341
14341
  #
14342
14342
  # Drops the cooldown for one `(source, key)` so the next page under it
14343
- # delivers immediately. Call it when the condition you alerted on recovers —
14343
+ # delivers immediately. Call it when the condition you alerted on recovers;
14344
14344
  # the workflow equivalent is `infra.page.clear(key)`. Clearing a key that
14345
14345
  # was never paged is not an error.
14346
14346
  #
@@ -14353,7 +14353,7 @@ module Infrawrench
14353
14353
  # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
14354
14354
  # constructed with.
14355
14355
  # @param source [String] Stable name for the system raising the page: letters, digits, `.`,
14356
- # `_` and `-`. It is the notification's sender, and it scopes the cooldown — two services
14356
+ # `_` and `-`. It is the notification's sender, and it scopes the cooldown; two services
14357
14357
  # paging under the same key never throttle each other.
14358
14358
  # @param key [String, nil] Defaults to `default`.
14359
14359
  # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
@@ -14370,6 +14370,459 @@ module Infrawrench
14370
14370
  end
14371
14371
  end
14372
14372
 
14373
+ # `client.paging_incidents`
14374
+ class PagingIncidentsNamespace
14375
+ # @api private
14376
+ # @param transport [Transport]
14377
+ def initialize(transport)
14378
+ @transport = transport
14379
+ end
14380
+
14381
+ # Acknowledge a provider incident
14382
+ #
14383
+ # Written to the provider as the acting member where the provider records
14384
+ # who acted (PagerDuty's `From` header), falling back to the account's
14385
+ # default user. The returned state is the provider's answer, not an
14386
+ # assumption.
14387
+ #
14388
+ # POST /api/org/{orgId}/paging-incidents/{id}/acknowledge
14389
+ #
14390
+ # Raises on 400: Bad request
14391
+ #
14392
+ # Raises on 401: Unauthenticated
14393
+ #
14394
+ # Raises on 402: Payment required: the organization's plan does not include
14395
+ # this
14396
+ #
14397
+ # Raises on 403: Forbidden
14398
+ #
14399
+ # Raises on 404: Not found
14400
+ #
14401
+ # Raises on 409: Conflict
14402
+ #
14403
+ # Raises on 500: Server error
14404
+ #
14405
+ # Raises on 503: A backing service this endpoint depends on is not available
14406
+ #
14407
+ # Raises on reauth: Recent sign-in required. Send the user through sign-in
14408
+ # again and retry; the request itself was well-formed.
14409
+ #
14410
+ # @param org_id [String, nil] Defaults to the `org_id` the client was constructed with.
14411
+ # @param id [String]
14412
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
14413
+ # @return [Hash] Parsed JSON, shaped as `PagerIncident` — see `sig/infrawrench/sdk.rbs`.
14414
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
14415
+ def acknowledge(id:, org_id: nil, request_options: nil)
14416
+ @transport.request(
14417
+ http_method: "POST",
14418
+ path: "/api/org/{orgId}/paging-incidents/{id}/acknowledge",
14419
+ path_params: { "orgId" => org_id, "id" => id },
14420
+ request_options: request_options
14421
+ )
14422
+ end
14423
+
14424
+ # List incidents mirrored from paging providers
14425
+ #
14426
+ # Only accounts with inbound mirroring turned on contribute. Open incidents
14427
+ # by default; `status=all` includes resolved ones. These are a provider's
14428
+ # pages, distinct from incidents declared in Infrawrench (`/incidents`).
14429
+ #
14430
+ # GET /api/org/{orgId}/paging-incidents
14431
+ #
14432
+ # Raises on 400: Bad request
14433
+ #
14434
+ # Raises on 401: Unauthenticated
14435
+ #
14436
+ # Raises on 402: Payment required: the organization's plan does not include
14437
+ # this
14438
+ #
14439
+ # Raises on 403: Forbidden
14440
+ #
14441
+ # Raises on 404: Not found
14442
+ #
14443
+ # Raises on 409: Conflict
14444
+ #
14445
+ # Raises on 500: Server error
14446
+ #
14447
+ # Raises on 503: A backing service this endpoint depends on is not available
14448
+ #
14449
+ # Raises on reauth: Recent sign-in required. Send the user through sign-in
14450
+ # again and retry; the request itself was well-formed.
14451
+ #
14452
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
14453
+ # constructed with.
14454
+ # @param status [String, nil]
14455
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
14456
+ # @return [Hash] Parsed JSON, shaped as `PagerIncidentsResponse` — see
14457
+ # `sig/infrawrench/sdk.rbs`.
14458
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
14459
+ def get(org_id: nil, status: nil, request_options: nil)
14460
+ @transport.request(
14461
+ http_method: "GET",
14462
+ path: "/api/org/{orgId}/paging-incidents",
14463
+ path_params: { "orgId" => org_id },
14464
+ query: { "status" => status },
14465
+ request_options: request_options
14466
+ )
14467
+ end
14468
+
14469
+ # Resolve a provider incident
14470
+ #
14471
+ # Written to the provider as the acting member where the provider records
14472
+ # who acted (PagerDuty's `From` header), falling back to the account's
14473
+ # default user. The returned state is the provider's answer, not an
14474
+ # assumption.
14475
+ #
14476
+ # POST /api/org/{orgId}/paging-incidents/{id}/resolve
14477
+ #
14478
+ # Raises on 400: Bad request
14479
+ #
14480
+ # Raises on 401: Unauthenticated
14481
+ #
14482
+ # Raises on 402: Payment required: the organization's plan does not include
14483
+ # this
14484
+ #
14485
+ # Raises on 403: Forbidden
14486
+ #
14487
+ # Raises on 404: Not found
14488
+ #
14489
+ # Raises on 409: Conflict
14490
+ #
14491
+ # Raises on 500: Server error
14492
+ #
14493
+ # Raises on 503: A backing service this endpoint depends on is not available
14494
+ #
14495
+ # Raises on reauth: Recent sign-in required. Send the user through sign-in
14496
+ # again and retry; the request itself was well-formed.
14497
+ #
14498
+ # @param org_id [String, nil] Defaults to the `org_id` the client was constructed with.
14499
+ # @param id [String]
14500
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
14501
+ # @return [Hash] Parsed JSON, shaped as `PagerIncident` — see `sig/infrawrench/sdk.rbs`.
14502
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
14503
+ def resolve(id:, org_id: nil, request_options: nil)
14504
+ @transport.request(
14505
+ http_method: "POST",
14506
+ path: "/api/org/{orgId}/paging-incidents/{id}/resolve",
14507
+ path_params: { "orgId" => org_id, "id" => id },
14508
+ request_options: request_options
14509
+ )
14510
+ end
14511
+ end
14512
+
14513
+ # `client.paging_providers.on_call`
14514
+ class PagingProvidersOnCallNamespace
14515
+ # @api private
14516
+ # @param transport [Transport]
14517
+ def initialize(transport)
14518
+ @transport = transport
14519
+ end
14520
+
14521
+ # Who is on call on a provider schedule or escalation policy
14522
+ #
14523
+ # Takes `team:read`, like the rotation preview. Each person is matched to an
14524
+ # organization member by email; `memberUserId` is null for somebody who is
14525
+ # on call upstream but not a member here.
14526
+ #
14527
+ # GET /api/org/{orgId}/paging-providers/{accountId}/on-call/{sourceId}
14528
+ #
14529
+ # Raises on 400: Bad request
14530
+ #
14531
+ # Raises on 401: Unauthenticated
14532
+ #
14533
+ # Raises on 402: Payment required: the organization's plan does not include
14534
+ # this
14535
+ #
14536
+ # Raises on 403: Forbidden
14537
+ #
14538
+ # Raises on 404: Not found
14539
+ #
14540
+ # Raises on 409: Conflict
14541
+ #
14542
+ # Raises on 500: Server error
14543
+ #
14544
+ # Raises on 503: A backing service this endpoint depends on is not available
14545
+ #
14546
+ # Raises on reauth: Recent sign-in required. Send the user through sign-in
14547
+ # again and retry; the request itself was well-formed.
14548
+ #
14549
+ # @param org_id [String, nil] Defaults to the `org_id` the client was constructed with.
14550
+ # @param account_id [String] A connected account whose plugin can page
14551
+ # @param source_id [String]
14552
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
14553
+ # @return [Hash] Parsed JSON, shaped as `PagingOnCallNowResponse` — see
14554
+ # `sig/infrawrench/sdk.rbs`.
14555
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
14556
+ def get(account_id:, source_id:, org_id: nil, request_options: nil)
14557
+ @transport.request(
14558
+ http_method: "GET",
14559
+ path: "/api/org/{orgId}/paging-providers/{accountId}/on-call/{sourceId}",
14560
+ path_params: { "orgId" => org_id, "accountId" => account_id, "sourceId" => source_id },
14561
+ request_options: request_options
14562
+ )
14563
+ end
14564
+ end
14565
+
14566
+ # `client.paging_providers`
14567
+ class PagingProvidersNamespace
14568
+ # @return [PagingProvidersOnCallNamespace] `client.paging_providers.on_call`
14569
+ attr_reader :on_call
14570
+
14571
+ # @api private
14572
+ # @param transport [Transport]
14573
+ def initialize(transport)
14574
+ @transport = transport
14575
+ @on_call = PagingProvidersOnCallNamespace.new(@transport)
14576
+ end
14577
+
14578
+ # List the targets and on-call sources a routing rule can name
14579
+ #
14580
+ # Listed live from each provider, so a destination is picked by name. A
14581
+ # failure is reported per account in `error` rather than failing the
14582
+ # response.
14583
+ #
14584
+ # GET /api/org/{orgId}/paging-providers/destinations
14585
+ #
14586
+ # Raises on 400: Bad request
14587
+ #
14588
+ # Raises on 401: Unauthenticated
14589
+ #
14590
+ # Raises on 402: Payment required: the organization's plan does not include
14591
+ # this
14592
+ #
14593
+ # Raises on 403: Forbidden
14594
+ #
14595
+ # Raises on 404: Not found
14596
+ #
14597
+ # Raises on 409: Conflict
14598
+ #
14599
+ # Raises on 500: Server error
14600
+ #
14601
+ # Raises on 503: A backing service this endpoint depends on is not available
14602
+ #
14603
+ # Raises on reauth: Recent sign-in required. Send the user through sign-in
14604
+ # again and retry; the request itself was well-formed.
14605
+ #
14606
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
14607
+ # constructed with.
14608
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
14609
+ # @return [Hash] Parsed JSON, shaped as `PagingDestinationsResponse` — see
14610
+ # `sig/infrawrench/sdk.rbs`.
14611
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
14612
+ def destinations(org_id: nil, request_options: nil)
14613
+ @transport.request(
14614
+ http_method: "GET",
14615
+ path: "/api/org/{orgId}/paging-providers/destinations",
14616
+ path_params: { "orgId" => org_id },
14617
+ request_options: request_options
14618
+ )
14619
+ end
14620
+
14621
+ # List upstream alerts Infrawrench opened
14622
+ #
14623
+ # One row per (account, target, dedup key): a trigger, its acknowledgement
14624
+ # and its resolution are one alert upstream. `pendingAction` is set while a
14625
+ # send is queued or being retried.
14626
+ #
14627
+ # GET /api/org/{orgId}/paging-providers/events
14628
+ #
14629
+ # Raises on 400: Bad request
14630
+ #
14631
+ # Raises on 401: Unauthenticated
14632
+ #
14633
+ # Raises on 402: Payment required: the organization's plan does not include
14634
+ # this
14635
+ #
14636
+ # Raises on 403: Forbidden
14637
+ #
14638
+ # Raises on 404: Not found
14639
+ #
14640
+ # Raises on 409: Conflict
14641
+ #
14642
+ # Raises on 500: Server error
14643
+ #
14644
+ # Raises on 503: A backing service this endpoint depends on is not available
14645
+ #
14646
+ # Raises on reauth: Recent sign-in required. Send the user through sign-in
14647
+ # again and retry; the request itself was well-formed.
14648
+ #
14649
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
14650
+ # constructed with.
14651
+ # @param limit [Integer, nil]
14652
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
14653
+ # @return [Hash] Parsed JSON, shaped as `PagingEventsResponse` — see
14654
+ # `sig/infrawrench/sdk.rbs`.
14655
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
14656
+ def events(org_id: nil, limit: nil, request_options: nil)
14657
+ @transport.request(
14658
+ http_method: "GET",
14659
+ path: "/api/org/{orgId}/paging-providers/events",
14660
+ path_params: { "orgId" => org_id },
14661
+ query: { "limit" => limit },
14662
+ request_options: request_options
14663
+ )
14664
+ end
14665
+
14666
+ # List paging provider accounts and their settings
14667
+ #
14668
+ # GET /api/org/{orgId}/paging-providers
14669
+ #
14670
+ # Raises on 400: Bad request
14671
+ #
14672
+ # Raises on 401: Unauthenticated
14673
+ #
14674
+ # Raises on 402: Payment required: the organization's plan does not include
14675
+ # this
14676
+ #
14677
+ # Raises on 403: Forbidden
14678
+ #
14679
+ # Raises on 404: Not found
14680
+ #
14681
+ # Raises on 409: Conflict
14682
+ #
14683
+ # Raises on 500: Server error
14684
+ #
14685
+ # Raises on 503: A backing service this endpoint depends on is not available
14686
+ #
14687
+ # Raises on reauth: Recent sign-in required. Send the user through sign-in
14688
+ # again and retry; the request itself was well-formed.
14689
+ #
14690
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
14691
+ # constructed with.
14692
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
14693
+ # @return [Hash] Parsed JSON, shaped as `PagingProvidersResponse` — see
14694
+ # `sig/infrawrench/sdk.rbs`.
14695
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
14696
+ def get(org_id: nil, request_options: nil)
14697
+ @transport.request(
14698
+ http_method: "GET",
14699
+ path: "/api/org/{orgId}/paging-providers",
14700
+ path_params: { "orgId" => org_id },
14701
+ request_options: request_options
14702
+ )
14703
+ end
14704
+
14705
+ # Configure incident mirroring for a paging provider account
14706
+ #
14707
+ # Turning inbound on with a `managed` webhook subscribes one through the
14708
+ # provider's API; turning it off removes the subscription and forgets the
14709
+ # mirrored incidents. A webhook that cannot be subscribed is reported in
14710
+ # `warning` and mirroring falls back to reconciling on a timer.
14711
+ #
14712
+ # PUT /api/org/{orgId}/paging-providers/{accountId}/settings
14713
+ #
14714
+ # Raises on 400: Bad request
14715
+ #
14716
+ # Raises on 401: Unauthenticated
14717
+ #
14718
+ # Raises on 402: Payment required: the organization's plan does not include
14719
+ # this
14720
+ #
14721
+ # Raises on 403: Forbidden
14722
+ #
14723
+ # Raises on 404: Not found
14724
+ #
14725
+ # Raises on 409: Conflict
14726
+ #
14727
+ # Raises on 500: Server error
14728
+ #
14729
+ # Raises on 503: A backing service this endpoint depends on is not available
14730
+ #
14731
+ # Raises on reauth: Recent sign-in required. Send the user through sign-in
14732
+ # again and retry; the request itself was well-formed.
14733
+ #
14734
+ # @param org_id [String, nil] Defaults to the `org_id` the client was constructed with.
14735
+ # @param account_id [String] A connected account whose plugin can page
14736
+ # @param body [Hash, nil] Request body, shaped as `PagingProviderSettingsInput`.
14737
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
14738
+ # @return [Hash] Parsed JSON, shaped as `PagingProviderSettingsResult` — see
14739
+ # `sig/infrawrench/sdk.rbs`.
14740
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
14741
+ def settings(account_id:, org_id: nil, body: nil, request_options: nil)
14742
+ @transport.request(
14743
+ http_method: "PUT",
14744
+ path: "/api/org/{orgId}/paging-providers/{accountId}/settings",
14745
+ path_params: { "orgId" => org_id, "accountId" => account_id },
14746
+ body: body,
14747
+ request_options: request_options
14748
+ )
14749
+ end
14750
+
14751
+ # Reconcile an account's incidents now
14752
+ #
14753
+ # POST /api/org/{orgId}/paging-providers/{accountId}/sync
14754
+ #
14755
+ # Raises on 400: Bad request
14756
+ #
14757
+ # Raises on 401: Unauthenticated
14758
+ #
14759
+ # Raises on 402: Payment required: the organization's plan does not include
14760
+ # this
14761
+ #
14762
+ # Raises on 403: Forbidden
14763
+ #
14764
+ # Raises on 404: Not found
14765
+ #
14766
+ # Raises on 409: Conflict
14767
+ #
14768
+ # Raises on 500: Server error
14769
+ #
14770
+ # Raises on 503: A backing service this endpoint depends on is not available
14771
+ #
14772
+ # Raises on reauth: Recent sign-in required. Send the user through sign-in
14773
+ # again and retry; the request itself was well-formed.
14774
+ #
14775
+ # @param org_id [String, nil] Defaults to the `org_id` the client was constructed with.
14776
+ # @param account_id [String] A connected account whose plugin can page
14777
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
14778
+ # @return [Hash] Parsed JSON, shaped as `PagingSyncResult` — see `sig/infrawrench/sdk.rbs`.
14779
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
14780
+ def sync(account_id:, org_id: nil, request_options: nil)
14781
+ @transport.request(
14782
+ http_method: "POST",
14783
+ path: "/api/org/{orgId}/paging-providers/{accountId}/sync",
14784
+ path_params: { "orgId" => org_id, "accountId" => account_id },
14785
+ request_options: request_options
14786
+ )
14787
+ end
14788
+ end
14789
+
14790
+ # `client.paging_webhooks`
14791
+ class PagingWebhooksNamespace
14792
+ # @api private
14793
+ # @param transport [Transport]
14794
+ def initialize(transport)
14795
+ @transport = transport
14796
+ end
14797
+
14798
+ # Inbound paging provider webhook
14799
+ #
14800
+ # Called by the provider, not by clients. The token in the path picks the
14801
+ # account; the provider's signature, verified with the stored secret,
14802
+ # authenticates the delivery. The payload is treated as a nudge: each
14803
+ # incident it names is re-read from the provider's API.
14804
+ #
14805
+ # POST /api/paging-webhooks/{token}
14806
+ #
14807
+ # Raises on 401: The signature did not verify
14808
+ #
14809
+ # Raises on 404: Unknown token
14810
+ #
14811
+ # @param token [String]
14812
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
14813
+ # @return [nil] This endpoint returns no content.
14814
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
14815
+ def create(token:, request_options: nil)
14816
+ @transport.request(
14817
+ http_method: "POST",
14818
+ path: "/api/paging-webhooks/{token}",
14819
+ path_params: { "token" => token },
14820
+ accept: :empty,
14821
+ request_options: request_options
14822
+ )
14823
+ end
14824
+ end
14825
+
14373
14826
  # `client.posture.dismissals`
14374
14827
  class PostureDismissalsNamespace
14375
14828
  # @api private
@@ -14380,7 +14833,7 @@ module Infrawrench
14380
14833
 
14381
14834
  # Dismiss a posture finding
14382
14835
  #
14383
- # Accept a finding — the bucket really is meant to be public, the key really
14836
+ # Accept a finding; the bucket really is meant to be public, the key really
14384
14837
  # is rotated out of band. The finding leaves `findings` and stops feeding
14385
14838
  # the daily posture alerts, but the rule keeps being evaluated and the
14386
14839
  # finding is reported back under `dismissed` for as long as it still
@@ -14572,7 +15025,7 @@ module Infrawrench
14572
15025
  #
14573
15026
  # Raises on 401: Unauthenticated
14574
15027
  #
14575
- # Raises on 402: Payment required — the organization's plan does not include
15028
+ # Raises on 402: Payment required: the organization's plan does not include
14576
15029
  # this
14577
15030
  #
14578
15031
  # Raises on 403: Forbidden
@@ -14652,7 +15105,7 @@ module Infrawrench
14652
15105
  #
14653
15106
  # Raises on 401: Unauthenticated
14654
15107
  #
14655
- # Raises on 402: Payment required — the organization's plan does not include
15108
+ # Raises on 402: Payment required: the organization's plan does not include
14656
15109
  # this
14657
15110
  #
14658
15111
  # Raises on 403: Forbidden
@@ -14697,7 +15150,7 @@ module Infrawrench
14697
15150
  #
14698
15151
  # Raises on 401: Unauthenticated
14699
15152
  #
14700
- # Raises on 402: Payment required — the organization's plan does not include
15153
+ # Raises on 402: Payment required: the organization's plan does not include
14701
15154
  # this
14702
15155
  #
14703
15156
  # Raises on 403: Forbidden
@@ -14923,7 +15376,7 @@ module Infrawrench
14923
15376
  #
14924
15377
  # Endpoint candidates mined from the organization's synced resource outputs
14925
15378
  # and fields (keys like url, endpoint, host, domain, publicIp). A cheap read
14926
- # over stored state — no provider API calls. Deduplicated by URL.
15379
+ # over stored state; no provider API calls. Deduplicated by URL.
14927
15380
  #
14928
15381
  # _Requires permission: `resources:read`._
14929
15382
  #
@@ -14946,7 +15399,7 @@ module Infrawrench
14946
15399
  # Update or disable a probe
14947
15400
  #
14948
15401
  # Edit settings and/or toggle `enabled`. Changing the URL or method resets
14949
- # the probe's state to `unknown` — the history belongs to the old endpoint.
15402
+ # the probe's state to `unknown`: the history belongs to the old endpoint.
14950
15403
  # Audit-logged.
14951
15404
  #
14952
15405
  # _Requires permission: `resources:write`._
@@ -15118,7 +15571,7 @@ module Infrawrench
15118
15571
 
15119
15572
  # List enrolled authentication factors
15120
15573
  #
15121
- # Includes factors whose enrolment was never confirmed — WorkOS does not
15574
+ # Includes factors whose enrolment was never confirmed; WorkOS does not
15122
15575
  # expose a verified flag.
15123
15576
  #
15124
15577
  # GET /api/profile/mfa
@@ -15173,7 +15626,7 @@ module Infrawrench
15173
15626
 
15174
15627
  # Revoke one session
15175
15628
  #
15176
- # Refuses the session making the request — use sign-out for that.
15629
+ # Refuses the session making the request, use sign-out for that.
15177
15630
  #
15178
15631
  # DELETE /api/profile/sessions/{sessionId}
15179
15632
  #
@@ -15326,7 +15779,7 @@ module Infrawrench
15326
15779
 
15327
15780
  # Mint a password reset link for the signed-in user
15328
15781
  #
15329
- # Returns a one-time AuthKit-hosted reset URL rather than emailing it — the
15782
+ # Returns a one-time AuthKit-hosted reset URL rather than emailing it; the
15330
15783
  # caller already holds a valid session for the account. Also the way to set
15331
15784
  # a first password on an SSO or OAuth-only account.
15332
15785
  #
@@ -15512,11 +15965,11 @@ module Infrawrench
15512
15965
  # List what a monitor can run against
15513
15966
  #
15514
15967
  # The editor's target picker: each account with a SQL driver of its own,
15515
- # plus the SQL-capable resources inside it — a database that is a *resource*
15968
+ # plus the SQL-capable resources inside it; a database that is a *resource*
15516
15969
  # (a ClickHouse service, a D1 or Turso database, a Databricks SQL warehouse,
15517
15970
  # a BigQuery dataset) rather than the account's own connection. Accounts
15518
15971
  # with neither are omitted; a monitor pointed at one could only ever fail.
15519
- # Pass a resource's `id` (and optionally its `resourceTypeId` — the server
15972
+ # Pass a resource's `id` (and optionally its `resourceTypeId`: the server
15520
15973
  # fills it from the synced resource either way) when creating a monitor to
15521
15974
  # scope the query to that resource.
15522
15975
  #
@@ -15540,8 +15993,8 @@ module Infrawrench
15540
15993
  # Run a query once without saving it
15541
15994
  #
15542
15995
  # The editor's 'try it' button. Goes through the same read-only guard as a
15543
- # scheduled run — a query that could not be saved as a monitor must not be
15544
- # runnable through the monitor's own preview — and applies the threshold, so
15996
+ # scheduled run; a query that could not be saved as a monitor must not be
15997
+ # runnable through the monitor's own preview: and applies the threshold, so
15545
15998
  # the answer says whether it *would* be breaching rather than leaving the
15546
15999
  # reader to compare two numbers.
15547
16000
  #
@@ -15679,13 +16132,13 @@ module Infrawrench
15679
16132
  #
15680
16133
  # How close each account is to the limits its provider enforces, with the
15681
16134
  # trend fitted over the last 14 days of collected readings. Both halves of
15682
- # every row — the used figure and the limit — come from the provider;
15683
- # nothing is filled in from published defaults, so an account with an
15684
- # approved increase reads as having the headroom it has. This is a read over
16135
+ # every row (the used figure and the limit) come from the provider; nothing
16136
+ # is filled in from published defaults, so an account with an approved
16137
+ # increase reads as having the headroom it has. This is a read over
15685
16138
  # already-collected snapshots: no provider API calls are made here, and the
15686
16139
  # readings are as fresh as the last collection pass (roughly six hours). A
15687
16140
  # plugin that declares no quota capability contributes nothing rather than
15688
- # zero — see `unsupportedPluginIds`.
16141
+ # zero, see `unsupportedPluginIds`.
15689
16142
  #
15690
16143
  # _Requires permission: `resources:read`._
15691
16144
  #
@@ -16047,10 +16500,10 @@ module Infrawrench
16047
16500
  # Calls the plugin's `estimateCost` and returns a monthly total with the
16048
16501
  # line items behind it. Price a proposed resource by passing `fields`, an
16049
16502
  # existing one by passing `resourceId`, or a proposed change to an existing
16050
- # one by passing both — `fields` is merged over the resource's stored
16051
- # fields, so the caller only sends what changed. `estimate` is null when the
16052
- # plugin cannot price the configuration; that is not the same as an estimate
16053
- # of zero, and it should not be rendered as one.
16503
+ # one by passing both; `fields` is merged over the resource's stored fields,
16504
+ # so the caller only sends what changed. `estimate` is null when the plugin
16505
+ # cannot price the configuration; that is not the same as an estimate of
16506
+ # zero, and it should not be rendered as one.
16054
16507
  #
16055
16508
  # _Requires permission: `resources:read`._
16056
16509
  #
@@ -16109,7 +16562,7 @@ module Infrawrench
16109
16562
  # Get the dynamic create form for a resource type
16110
16563
  #
16111
16564
  # Calls the plugin's `getCreateConfig`. The returned `CreateResourceConfig`
16112
- # is plugin-shaped — see `JsonObject`.
16565
+ # is plugin-shaped, see `JsonObject`.
16113
16566
  #
16114
16567
  # _Requires permission: `resources:write`._
16115
16568
  #
@@ -16615,7 +17068,7 @@ module Infrawrench
16615
17068
  # create form's size options, live-priced). Each recommendation names the
16616
17069
  # cheapest smaller size that still clears a headroom margin and quotes the
16617
17070
  # monthly saving. Apply one by submitting `sizeFieldKey` with the
16618
- # recommended size id through the resource-update endpoint — which enforces
17071
+ # recommended size id through the resource-update endpoint; which enforces
16619
17072
  # change freezes and writes the audit trail. Results are cached for a few
16620
17073
  # minutes; pass `refresh=true` to recompute.
16621
17074
  #
@@ -16750,8 +17203,8 @@ module Infrawrench
16750
17203
  # Close a run out
16751
17204
  #
16752
17205
  # Closing does **not** settle outstanding steps. A run completed with three
16753
- # steps still pending is a true and useful record — it says the incident
16754
- # ended before the checklist did — and quietly marking them done would erase
17206
+ # steps still pending is a true and useful record (it says the incident
17207
+ # ended before the checklist did) and quietly marking them done would erase
16755
17208
  # the one thing a postmortem wants to know.
16756
17209
  #
16757
17210
  # POST /api/org/{orgId}/runbooks/runs/{runId}/close
@@ -16787,7 +17240,7 @@ module Infrawrench
16787
17240
  # Takes `resources:read`, like ticking a step: performing a checklist is not
16788
17241
  # an act of configuration, and requiring an admin mid-incident is how a team
16789
17242
  # stops using it. Deliberately not deduplicated against a run already in
16790
- # progress — performing the failover twice in one incident is a real thing,
17243
+ # progress; performing the failover twice in one incident is a real thing,
16791
17244
  # and refusing the second would mean it goes unrecorded rather than not
16792
17245
  # happening.
16793
17246
  #
@@ -16879,7 +17332,7 @@ module Infrawrench
16879
17332
 
16880
17333
  # Write a runbook
16881
17334
  #
16882
- # Editing takes `org:settings:write` — a procedure is an org-wide statement
17335
+ # Editing takes `org:settings:write`: a procedure is an org-wide statement
16883
17336
  # about how something is done, and it is read by strangers under pressure.
16884
17337
  # Names are unique within an organization: two runbooks called "Failover" is
16885
17338
  # how the wrong one gets run.
@@ -16974,7 +17427,7 @@ module Infrawrench
16974
17427
 
16975
17428
  # Create a saved cost filter
16976
17429
  #
16977
- # Names must be unique per organization (case-insensitively) — they are how
17430
+ # Names must be unique per organization (case-insensitively); they are how
16978
17431
  # the CLI's `--filter <name>` and humans address the filter. A name
16979
17432
  # collision is a 409.
16980
17433
  #
@@ -17004,7 +17457,7 @@ module Infrawrench
17004
17457
 
17005
17458
  # Delete a saved cost filter
17006
17459
  #
17007
- # Soft delete — **refused with a 409 while anything references the filter**,
17460
+ # Soft delete: **refused with a 409 while anything references the filter**,
17008
17461
  # with the referents in the body. Deleting a referenced filter would
17009
17462
  # silently widen every referent's scope to all spend; for a budget that can
17010
17463
  # fire or suppress alerts, so detaching the referents is a deliberate step,
@@ -17016,7 +17469,7 @@ module Infrawrench
17016
17469
  #
17017
17470
  # Raises on 404: Not found
17018
17471
  #
17019
- # Raises on 409: Still referenced — the body lists every referent.
17472
+ # Raises on 409: Still referenced: the body lists every referent.
17020
17473
  #
17021
17474
  # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
17022
17475
  # constructed with.
@@ -17060,7 +17513,7 @@ module Infrawrench
17060
17513
  #
17061
17514
  # Named, reusable cost filter sets. Graphs, reports and budgets reference
17062
17515
  # one **by id** (`savedFilterId` in their configs and in `POST
17063
- # /costs/query`), and the server resolves the reference at query time — so
17516
+ # /costs/query`), and the server resolves the reference at query time; so
17064
17517
  # editing a saved filter changes every referent at once, and nothing ever
17065
17518
  # holds a copy.
17066
17519
  #
@@ -17085,8 +17538,9 @@ module Infrawrench
17085
17538
 
17086
17539
  # List a saved filter's referents
17087
17540
  #
17088
- # Every budget, cost report and dashboard cost graph referencing this filter
17089
- # — what an edit will re-scope, and what a delete would be refused over.
17541
+ # Every budget, cost report and dashboard cost graph referencing this
17542
+ # filter; what an edit will re-scope, and what a delete would be refused
17543
+ # over.
17090
17544
  #
17091
17545
  # _Requires permission: `costs:read`._
17092
17546
  #
@@ -17113,7 +17567,7 @@ module Infrawrench
17113
17567
  #
17114
17568
  # Replaces the filter's name, description and terms. This is the
17115
17569
  # high-leverage write: every graph, report and budget referencing the filter
17116
- # runs the new terms on its next query — re-scoping a referenced budget can
17570
+ # runs the new terms on its next query: re-scoping a referenced budget can
17117
17571
  # change which alerts fire. `GET /{id}/referents` names what a change will
17118
17572
  # touch.
17119
17573
  #
@@ -17599,7 +18053,7 @@ module Infrawrench
17599
18053
 
17600
18054
  # Update the recording policy
17601
18055
  #
17602
- # Partial update — omitted fields keep their current value. Recording is
18056
+ # Partial update: omitted fields keep their current value. Recording is
17603
18057
  # opt-in and off by default. Audit-logged with the before/after policy.
17604
18058
  #
17605
18059
  # _Requires permission: `session-recordings:write`._
@@ -17643,7 +18097,7 @@ module Infrawrench
17643
18097
  # The session as an [asciicast
17644
18098
  # v2](https://docs.asciinema.org/manual/asciicast/v2/) document: a JSON
17645
18099
  # header line followed by one `[time, code, data]` event per line.
17646
- # Deliberately somebody else's format — the same bytes play in `asciinema
18100
+ # Deliberately somebody else's format; the same bytes play in `asciinema
17647
18101
  # play` and in the reference web player, so a recording is useful to an
17648
18102
  # auditor who has never seen this product. `?download=1` returns it as an
17649
18103
  # attachment. **Every fetch is audit-logged**, including this one: an
@@ -17724,7 +18178,7 @@ module Infrawrench
17724
18178
  # List recorded SSH sessions
17725
18179
  #
17726
18180
  # Recorded sessions, newest first. Only SSH opened through the cloud is
17727
- # recorded — those sessions are already proxied by the server, so recording
18181
+ # recorded; those sessions are already proxied by the server, so recording
17728
18182
  # tees a stream it holds rather than requiring an agent on the host. A
17729
18183
  # desktop session that dials a host directly never reaches the server and
17730
18184
  # cannot appear here.
@@ -17738,7 +18192,7 @@ module Infrawrench
17738
18192
  # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
17739
18193
  # constructed with.
17740
18194
  # @param status [String, nil] `recording` (live), `complete` (closed cleanly), `truncated`
17741
- # (hit the per-session capture ceiling — the tape is a genuine partial and says so), or
18195
+ # (hit the per-session capture ceiling: the tape is a genuine partial and says so), or
17742
18196
  # `abandoned` (the server handling the session went away before it could close the row).
17743
18197
  # @param user_id [String, nil]
17744
18198
  # @param resource_id [String, nil]
@@ -18014,7 +18468,7 @@ module Infrawrench
18014
18468
  #
18015
18469
  # What the join screen shows before anyone commits: which host, whose
18016
18470
  # session, and whether you may join it. Reachable with a valid token by a
18017
- # signed-in member who already holds `resources:execute` — the token says
18471
+ # signed-in member who already holds `resources:execute`: the token says
18018
18472
  # *which* session, never *whether*. Returns nothing from the session itself.
18019
18473
  #
18020
18474
  # _Requires permission: `resources:execute`._
@@ -18053,7 +18507,7 @@ module Infrawrench
18053
18507
  # Their socket is closed immediately on the replica holding the pty, and
18054
18508
  # within one two-second sweep on any other. They are marked `removed` rather
18055
18509
  # than `left`, so they cannot resume without a fresh invite. The sharer
18056
- # cannot be removed — revoke the share.
18510
+ # cannot be removed, revoke the share.
18057
18511
  #
18058
18512
  # DELETE
18059
18513
  # /api/org/{orgId}/shared-consoles/{consoleId}/participants/{participantId}
@@ -18107,12 +18561,12 @@ module Infrawrench
18107
18561
  # invite. You become the driver.
18108
18562
  #
18109
18563
  # Returns 409 `console_not_here` when the pty is held by a different server
18110
- # replica than the one answering this call — reopen the terminal and share
18564
+ # replica than the one answering this call; reopen the terminal and share
18111
18565
  # again. Writing the share anyway would produce a link that authorises
18112
18566
  # correctly and then finds nothing to attach to.
18113
18567
  #
18114
- # Requires `resources:execute` — the same permission as opening the
18115
- # terminal. Closed to API keys: sharing a shell is an act a person performs.
18568
+ # Requires `resources:execute`: the same permission as opening the terminal.
18569
+ # Closed to API keys: sharing a shell is an act a person performs.
18116
18570
  #
18117
18571
  # _Requires permission: `resources:execute`._
18118
18572
  #
@@ -18144,7 +18598,7 @@ module Infrawrench
18144
18598
  # Revoke a share
18145
18599
  #
18146
18600
  # Disconnects every guest and stops the fan-out. The sharer's own SSH
18147
- # session carries on — revoking a share is not killing a terminal.
18601
+ # session carries on : revoking a share is not killing a terminal.
18148
18602
  #
18149
18603
  # The sharer or a holder of `org:settings:write`. Deliberately does **not**
18150
18604
  # require `resources:execute`: ending access must never be gated on still
@@ -18175,7 +18629,7 @@ module Infrawrench
18175
18629
  # Get one shared console
18176
18630
  #
18177
18631
  # Visible to participants and to anyone who could revoke it (the sharer, or
18178
- # a holder of `org:settings:write`). Others get 404 — that a named colleague
18632
+ # a holder of `org:settings:write`). Others get 404: that a named colleague
18179
18633
  # has a root shell open on a named production host right now is operational
18180
18634
  # information.
18181
18635
  #
@@ -18206,7 +18660,7 @@ module Infrawrench
18206
18660
  # Authorised by the **current driver** (the keyboard is theirs to give) or
18207
18661
  # by the **sharer** (it is their box, and asking permission from somebody
18208
18662
  # who has stopped responding is not a control). An observer cannot promote
18209
- # themselves — that is `/request-driver`.
18663
+ # themselves; that is `/request-driver`.
18210
18664
  #
18211
18665
  # Two simultaneous grants cannot both win: the database's partial unique
18212
18666
  # index decides the order, and the loser gets 409 `driver-race-lost`.
@@ -18245,7 +18699,7 @@ module Infrawrench
18245
18699
 
18246
18700
  # Redeem an invite and join
18247
18701
  #
18248
- # Admission needs live org membership **and** `resources:execute` — the
18702
+ # Admission needs live org membership **and** `resources:execute`: the
18249
18703
  # invite is a locator, never a capability, so a leaked link admits nobody
18250
18704
  # who could not have opened the shell themselves.
18251
18705
  #
@@ -18343,8 +18797,8 @@ module Infrawrench
18343
18797
 
18344
18798
  # Ask for the keyboard
18345
18799
  #
18346
- # Raises a flag the driver and the sharer can see. Grants nothing on its own
18347
- # — that is the point.
18800
+ # Raises a flag the driver and the sharer can see. Grants nothing on its
18801
+ # own; that is the point.
18348
18802
  #
18349
18803
  # _Requires permission: `resources:execute`._
18350
18804
  #
@@ -18673,7 +19127,7 @@ module Infrawrench
18673
19127
 
18674
19128
  # Post a test message to every configured channel
18675
19129
  #
18676
- # Ignores routing rules — every channel gets the test. Fails with the Slack
19130
+ # Ignores routing rules; every channel gets the test. Fails with the Slack
18677
19131
  # error when nothing could be delivered (`not_in_channel` means the bot
18678
19132
  # needs inviting to a private channel).
18679
19133
  #
@@ -19073,7 +19527,7 @@ module Infrawrench
19073
19527
  #
19074
19528
  # Signs one publickey-authentication challenge with a server-generated org
19075
19529
  # key whose private half never leaves Infrawrench Cloud. Requires the
19076
- # `resources:execute` permission — producing an auth signature is the same
19530
+ # `resources:execute` permission: producing an auth signature is the same
19077
19531
  # authority as opening a shell. Imported keys cannot sign (only their public
19078
19532
  # half is stored). Every call is audited.
19079
19533
  #
@@ -19243,7 +19697,7 @@ module Infrawrench
19243
19697
  # Read a public status page
19244
19698
  #
19245
19699
  # **Unauthenticated.** The only endpoint in this API that takes no
19246
- # credentials — a status page exists for people with no account. The payload
19700
+ # credentials; a status page exists for people with no account. The payload
19247
19701
  # carries labels, states and uptime history only: probe URLs, resource and
19248
19702
  # account ids, the organization id and error detail are never included. An
19249
19703
  # unpublished page and an unknown slug both answer 404, so the endpoint
@@ -19278,7 +19732,7 @@ module Infrawrench
19278
19732
  # Provider incidents overlapping your resources
19279
19733
  #
19280
19734
  # The "is it me or is it them?" feed. The poller watches each provider
19281
- # plugin's public status feed (declared on its manifest — zero credentials,
19735
+ # plugin's public status feed (declared on its manifest; zero credentials,
19282
19736
  # zero rate-limit risk), caches active incidents, and this endpoint
19283
19737
  # correlates them against the resources the organization holds: an incident
19284
19738
  # matches a resource when it is provider-wide, names the resource's region,
@@ -19319,7 +19773,7 @@ module Infrawrench
19319
19773
  # Create a status page
19320
19774
  #
19321
19775
  # Creates a page with a freshly generated slug. `published` defaults to
19322
- # false, so creating a page never exposes anything — publish it as a
19776
+ # false, so creating a page never exposes anything; publish it as a
19323
19777
  # separate, deliberate step.
19324
19778
  #
19325
19779
  # _Requires permission: `resources:write`._
@@ -19398,9 +19852,8 @@ module Infrawrench
19398
19852
 
19399
19853
  # Issue a new public link
19400
19854
  #
19401
- # Replaces the slug, revoking the current public URL immediately — the
19402
- # reroll for a link that ended up somewhere unintended. The page stays
19403
- # published.
19855
+ # Replaces the slug, revoking the current public URL immediately; the reroll
19856
+ # for a link that ended up somewhere unintended. The page stays published.
19404
19857
  #
19405
19858
  # _Requires permission: `resources:write`._
19406
19859
  #
@@ -19426,7 +19879,7 @@ module Infrawrench
19426
19879
  # Update a status page
19427
19880
  #
19428
19881
  # Omitted fields keep their value. `components`, when present, replaces the
19429
- # whole ordered set — which is also how a reorder is expressed.
19882
+ # whole ordered set: which is also how a reorder is expressed.
19430
19883
  #
19431
19884
  # _Requires permission: `resources:write`._
19432
19885
  #
@@ -19796,7 +20249,7 @@ module Infrawrench
19796
20249
  #
19797
20250
  # POST /api/org/{orgId}/team/invitations
19798
20251
  #
19799
- # Raises on 402: Payment required — the organization's plan does not include
20252
+ # Raises on 402: Payment required: the organization's plan does not include
19800
20253
  # this
19801
20254
  #
19802
20255
  # Raises on 403: The role would grant permissions the caller does not hold,
@@ -20319,13 +20772,13 @@ module Infrawrench
20319
20772
  # A different reading of data the product already holds, built on one rule:
20320
20773
  # a wallboard may only show things that are true **right now** and that
20321
20774
  # somebody would cross a room to look at. There is deliberately no history,
20322
- # no trend and no breakdown — those belong on the page you open when you do
20775
+ # no trend and no breakdown; those belong on the page you open when you do
20323
20776
  # walk over.
20324
20777
  #
20325
- # Four sources — declared incidents, synthetic probes, query monitors and
20326
- # account sync health — each guarded independently, because a television
20327
- # that goes blank because one query threw is showing nothing to a room that
20328
- # was relying on it.
20778
+ # Four sources (declared incidents, synthetic probes, query monitors and
20779
+ # account sync health) each guarded independently, because a television that
20780
+ # goes blank because one query threw is showing nothing to a room that was
20781
+ # relying on it.
20329
20782
  #
20330
20783
  # Session-authenticated on purpose: unlike the calendar feed or a public
20331
20784
  # status page, this carries incident titles, probe names and account names,
@@ -20654,7 +21107,7 @@ module Infrawrench
20654
21107
  #
20655
21108
  # Sets the workflow's trigger to cron with the given expression and
20656
21109
  # timezone, validating both, and computes the next fire time. The workflow
20657
- # fires at the schedule's next occurrence — never immediately on save.
21110
+ # fires at the schedule's next occurrence; never immediately on save.
20658
21111
  #
20659
21112
  # Changing the schedule makes scheduled runs act with the permissions of the
20660
21113
  # caller from then on, the same as editing the workflow's code. When the
@@ -20772,7 +21225,7 @@ module Infrawrench
20772
21225
  # SSH key names, and the workflow's trigger + metrics. Default is the fast
20773
21226
  # static surface (`create` fields are `Record<string, string>`). Pass
20774
21227
  # `enrich=1` for a second pass that hits provider APIs for precise create()
20775
- # field unions and live sidecar capability flags — the editor loads static
21228
+ # field unions and live sidecar capability flags; the editor loads static
20776
21229
  # first and upgrades when that finishes.
20777
21230
  #
20778
21231
  # _Requires permission: `workflows:read`._
@@ -20967,6 +21420,12 @@ module Infrawrench
20967
21420
  attr_reader :ownership
20968
21421
  # @return [PagesNamespace] `client.pages`
20969
21422
  attr_reader :pages
21423
+ # @return [PagingIncidentsNamespace] `client.paging_incidents`
21424
+ attr_reader :paging_incidents
21425
+ # @return [PagingProvidersNamespace] `client.paging_providers`
21426
+ attr_reader :paging_providers
21427
+ # @return [PagingWebhooksNamespace] `client.paging_webhooks`
21428
+ attr_reader :paging_webhooks
20970
21429
  # @return [PostureNamespace] `client.posture`
20971
21430
  attr_reader :posture
20972
21431
  # @return [PriceCatalogNamespace] `client.price_catalog`
@@ -21118,6 +21577,9 @@ module Infrawrench
21118
21577
  @orphans = OrphansNamespace.new(@transport)
21119
21578
  @ownership = OwnershipNamespace.new(@transport)
21120
21579
  @pages = PagesNamespace.new(@transport)
21580
+ @paging_incidents = PagingIncidentsNamespace.new(@transport)
21581
+ @paging_providers = PagingProvidersNamespace.new(@transport)
21582
+ @paging_webhooks = PagingWebhooksNamespace.new(@transport)
21121
21583
  @posture = PostureNamespace.new(@transport)
21122
21584
  @price_catalog = PriceCatalogNamespace.new(@transport)
21123
21585
  @probes = ProbesNamespace.new(@transport)