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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/infrawrench-sdk.gemspec +4 -4
- data/lib/infrawrench/client.rb +720 -258
- data/lib/infrawrench/sdk.rb +2 -2
- data/lib/infrawrench/transport.rb +2 -2
- data/lib/infrawrench/version.rb +3 -3
- data/lib/infrawrench-sdk.rb +2 -2
- data/sig/infrawrench/sdk.rbs +877 -55
- metadata +4 -4
data/lib/infrawrench/client.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.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.
|
|
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`)
|
|
32
|
-
#
|
|
33
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
#
|
|
2039
|
-
#
|
|
2040
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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'
|
|
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
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
4413
|
-
#
|
|
4414
|
-
#
|
|
4415
|
-
#
|
|
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
|
|
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
|
|
4432
|
-
#
|
|
4433
|
-
#
|
|
4434
|
-
#
|
|
4435
|
-
#
|
|
4436
|
-
#
|
|
4437
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
4800
|
-
# plans, committed-use discounts
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
5315
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
6444
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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)
|
|
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
|
|
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
|
|
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
|
-
#
|
|
7032
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
7368
|
-
# history a baseline needs
|
|
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
|
|
7396
|
-
#
|
|
7397
|
-
#
|
|
7398
|
-
#
|
|
7399
|
-
#
|
|
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
|
-
#
|
|
7759
|
-
#
|
|
7760
|
-
#
|
|
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
|
|
7872
|
-
# invoice, an internal chargeback, a colo bill
|
|
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)
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
9581
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
-
#
|
|
9744
|
-
#
|
|
9745
|
-
#
|
|
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
|
|
10025
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
10227
|
-
# production
|
|
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
|
|
10236
|
-
# addresses and timestamps
|
|
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
|
|
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
|
|
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
|
|
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
|
|
10445
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
11701
|
-
#
|
|
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
|
|
11736
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
-
#
|
|
11976
|
-
#
|
|
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
|
|
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
|
|
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
|
|
12072
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
12921
|
-
# candidates a log workspace can tail
|
|
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
|
|
13024
|
-
#
|
|
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
|
|
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?"
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
14117
|
-
# floating/elastic IPs, reserved-but-unused static IPs
|
|
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
|
|
14183
|
-
#
|
|
14184
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
15544
|
-
# runnable through the monitor's own preview
|
|
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
|
|
15683
|
-
#
|
|
15684
|
-
#
|
|
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
|
|
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
|
|
16051
|
-
#
|
|
16052
|
-
#
|
|
16053
|
-
#
|
|
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
|
|
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
|
|
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
|
|
16754
|
-
# ended before the checklist did
|
|
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
|
|
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
|
|
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)
|
|
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
|
|
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
|
|
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
|
|
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
|
|
17089
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
18115
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
18347
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
19402
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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
|
|
20326
|
-
# account sync health
|
|
20327
|
-
#
|
|
20328
|
-
#
|
|
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
|
|
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
|
|
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)
|