infrawrench-sdk 1.74.0 → 1.75.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 +1 -1
- data/infrawrench-sdk.gemspec +4 -4
- data/lib/infrawrench/client.rb +266 -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 +54 -53
- 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.75.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.75.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`._
|
|
@@ -6326,6 +6326,8 @@ module Infrawrench
|
|
|
6326
6326
|
#
|
|
6327
6327
|
# Raises on 400: Bad request
|
|
6328
6328
|
#
|
|
6329
|
+
# Raises on 403: Forbidden
|
|
6330
|
+
#
|
|
6329
6331
|
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
6330
6332
|
# constructed with.
|
|
6331
6333
|
# @param body [Hash] Request body, shaped as `CostReportFolderInput`.
|
|
@@ -6371,7 +6373,7 @@ module Infrawrench
|
|
|
6371
6373
|
|
|
6372
6374
|
# List cost-report folders
|
|
6373
6375
|
#
|
|
6374
|
-
# The org's report folders as a flat list
|
|
6376
|
+
# The org's report folders as a flat list; build the tree from
|
|
6375
6377
|
# `parentFolderId`. Folders organize the Reports list and nothing else; a
|
|
6376
6378
|
# report's id, URL and dashboard cards are unchanged by where it is filed.
|
|
6377
6379
|
#
|
|
@@ -6396,7 +6398,7 @@ module Infrawrench
|
|
|
6396
6398
|
|
|
6397
6399
|
# Update a cost-report folder
|
|
6398
6400
|
#
|
|
6399
|
-
# Rename and/or reparent. Filing a *report* is not here
|
|
6401
|
+
# Rename and/or reparent. Filing a *report* is not here; that is `PUT
|
|
6400
6402
|
# /cost-reports/{id}` with a different `folderId`. Reparenting past the
|
|
6401
6403
|
# 3-level depth limit, or under the folder's own subtree, is a 400.
|
|
6402
6404
|
#
|
|
@@ -6406,6 +6408,8 @@ module Infrawrench
|
|
|
6406
6408
|
#
|
|
6407
6409
|
# Raises on 400: Bad request
|
|
6408
6410
|
#
|
|
6411
|
+
# Raises on 403: Forbidden
|
|
6412
|
+
#
|
|
6409
6413
|
# Raises on 404: Not found
|
|
6410
6414
|
#
|
|
6411
6415
|
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
@@ -6436,8 +6440,8 @@ module Infrawrench
|
|
|
6436
6440
|
|
|
6437
6441
|
# List every delivery schedule in the organization
|
|
6438
6442
|
#
|
|
6439
|
-
# All reports' schedules in one call
|
|
6440
|
-
#
|
|
6443
|
+
# All reports' schedules in one call; what the CLI's schedules column reads.
|
|
6444
|
+
# Schedules of deleted reports are excluded.
|
|
6441
6445
|
#
|
|
6442
6446
|
# _Requires permission: `costs:read`._
|
|
6443
6447
|
#
|
|
@@ -6470,7 +6474,7 @@ module Infrawrench
|
|
|
6470
6474
|
# Create a delivery schedule
|
|
6471
6475
|
#
|
|
6472
6476
|
# On its cadence the server runs the report and sends a composed text
|
|
6473
|
-
# summary
|
|
6477
|
+
# summary; period total (converted to the org's display currency where
|
|
6474
6478
|
# configured, with the conversion caveat), change vs the previous period,
|
|
6475
6479
|
# top groups, and a deep link. No chart images. An empty result still sends,
|
|
6476
6480
|
# saying so.
|
|
@@ -6554,7 +6558,7 @@ module Infrawrench
|
|
|
6554
6558
|
# Runs the report and delivers it to this schedule's destinations
|
|
6555
6559
|
# immediately, ignoring the schedule and its enabled flag. Fails with a 400
|
|
6556
6560
|
# naming the reason when nothing could be delivered. A successful manual
|
|
6557
|
-
# send clears a parked failure
|
|
6561
|
+
# send clears a parked failure; it is the documented recovery for a partial
|
|
6558
6562
|
# delivery.
|
|
6559
6563
|
#
|
|
6560
6564
|
# _Requires permission: `org:settings:write`._
|
|
@@ -6591,7 +6595,7 @@ module Infrawrench
|
|
|
6591
6595
|
# List the destinations a schedule can deliver to
|
|
6592
6596
|
#
|
|
6593
6597
|
# The org's live Slack channels and Teams webhooks, and whether this
|
|
6594
|
-
# deployment can send mail. Destinations are picked from here
|
|
6598
|
+
# deployment can send mail. Destinations are picked from here; a schedule
|
|
6595
6599
|
# can only point at surfaces the org already connected.
|
|
6596
6600
|
#
|
|
6597
6601
|
# _Requires permission: `org:settings:write`._
|
|
@@ -6698,6 +6702,8 @@ module Infrawrench
|
|
|
6698
6702
|
#
|
|
6699
6703
|
# Raises on 400: Bad request
|
|
6700
6704
|
#
|
|
6705
|
+
# Raises on 403: Forbidden
|
|
6706
|
+
#
|
|
6701
6707
|
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
6702
6708
|
# constructed with.
|
|
6703
6709
|
# @param body [Hash] Request body, shaped as `CostReportInput`.
|
|
@@ -6717,7 +6723,7 @@ module Infrawrench
|
|
|
6717
6723
|
# Delete a cost report
|
|
6718
6724
|
#
|
|
6719
6725
|
# Soft delete. Every dashboard card pointing at the report is removed with
|
|
6720
|
-
# it
|
|
6726
|
+
# it; a card whose report is gone could only ever render as an unavailable
|
|
6721
6727
|
# tile.
|
|
6722
6728
|
#
|
|
6723
6729
|
# _Requires permission: `costs:write`._
|
|
@@ -6854,7 +6860,7 @@ module Infrawrench
|
|
|
6854
6860
|
# Update a cost report
|
|
6855
6861
|
#
|
|
6856
6862
|
# Replaces the report's name, description, config and folder. Every
|
|
6857
|
-
# dashboard showing the report picks up the new config
|
|
6863
|
+
# dashboard showing the report picks up the new config; that is what
|
|
6858
6864
|
# referencing a report by id buys.
|
|
6859
6865
|
#
|
|
6860
6866
|
# _Requires permission: `costs:write`._
|
|
@@ -6863,6 +6869,8 @@ module Infrawrench
|
|
|
6863
6869
|
#
|
|
6864
6870
|
# Raises on 400: Bad request
|
|
6865
6871
|
#
|
|
6872
|
+
# Raises on 403: Forbidden
|
|
6873
|
+
#
|
|
6866
6874
|
# Raises on 404: Not found
|
|
6867
6875
|
#
|
|
6868
6876
|
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
@@ -6894,7 +6902,7 @@ module Infrawrench
|
|
|
6894
6902
|
# List scenario models
|
|
6895
6903
|
#
|
|
6896
6904
|
# Named, reusable sets of adjustments an organization overlays on a cost
|
|
6897
|
-
# forecast
|
|
6905
|
+
# forecast; the **known future cost a trend fit cannot see**. Pass an id as
|
|
6898
6906
|
# `POST /costs/query`'s `scenarioModelId` (alongside `forecast: true`) to
|
|
6899
6907
|
# get the adjusted projection back *beside* the unadjusted one, never
|
|
6900
6908
|
# instead of it.
|
|
@@ -6955,7 +6963,7 @@ module Infrawrench
|
|
|
6955
6963
|
|
|
6956
6964
|
# Create a scenario model
|
|
6957
6965
|
#
|
|
6958
|
-
# Names must be unique per organization (case-insensitively)
|
|
6966
|
+
# Names must be unique per organization (case-insensitively); the name is
|
|
6959
6967
|
# what a chart prints under its scenario line and what the CLI's `--scenario
|
|
6960
6968
|
# <name>` addresses, so two models sharing one would make both meaningless.
|
|
6961
6969
|
# A model needs at least one adjustment: an empty model changes nothing,
|
|
@@ -6987,7 +6995,7 @@ module Infrawrench
|
|
|
6987
6995
|
|
|
6988
6996
|
# Delete a scenario model
|
|
6989
6997
|
#
|
|
6990
|
-
# Soft delete
|
|
6998
|
+
# Soft delete: **refused with a 409 while anything references the model**,
|
|
6991
6999
|
# with the referents in the body. For a chart, deleting would silently drop
|
|
6992
7000
|
# the assumptions from a projection somebody is reading; for a budget it
|
|
6993
7001
|
# would move the forecast thresholds back to the bare trend, changing when
|
|
@@ -7000,7 +7008,7 @@ module Infrawrench
|
|
|
7000
7008
|
#
|
|
7001
7009
|
# Raises on 404: Not found
|
|
7002
7010
|
#
|
|
7003
|
-
# Raises on 409: Still referenced
|
|
7011
|
+
# Raises on 409: Still referenced: the body lists every referent.
|
|
7004
7012
|
#
|
|
7005
7013
|
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
7006
7014
|
# constructed with.
|
|
@@ -7019,9 +7027,9 @@ module Infrawrench
|
|
|
7019
7027
|
|
|
7020
7028
|
# List a scenario model's referents
|
|
7021
7029
|
#
|
|
7022
|
-
# Every budget, cost report and dashboard cost graph referencing this model
|
|
7023
|
-
#
|
|
7024
|
-
#
|
|
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.
|
|
7025
7033
|
#
|
|
7026
7034
|
# _Requires permission: `costs:read`._
|
|
7027
7035
|
#
|
|
@@ -7048,7 +7056,7 @@ module Infrawrench
|
|
|
7048
7056
|
#
|
|
7049
7057
|
# Replaces the whole model. This is the high-leverage write: every chart
|
|
7050
7058
|
# drawing it, and **every budget whose forecast thresholds are measured
|
|
7051
|
-
# against it**, uses the new numbers on its next evaluation
|
|
7059
|
+
# against it**, uses the new numbers on its next evaluation; which for a
|
|
7052
7060
|
# budget can change which alerts fire. `GET /{id}/referents` names what a
|
|
7053
7061
|
# change will touch.
|
|
7054
7062
|
#
|
|
@@ -7272,7 +7280,7 @@ module Infrawrench
|
|
|
7272
7280
|
# Explain a detected cost anomaly
|
|
7273
7281
|
#
|
|
7274
7282
|
# Record what a finding actually was, and publish that sentence as a cost
|
|
7275
|
-
# annotation on **every** chart covering the anomalous day
|
|
7283
|
+
# annotation on **every** chart covering the anomalous day; the point being
|
|
7276
7284
|
# that 'we migrated the fleet' is not a fact about whichever report somebody
|
|
7277
7285
|
# happened to open. The note's date (the anomalous day) and its org-wide
|
|
7278
7286
|
# scope are derived from the anomaly and are not the caller's to choose.
|
|
@@ -7319,7 +7327,7 @@ module Infrawrench
|
|
|
7319
7327
|
# trailing 28-day baseline by a statistical threshold (mean + N·stddev, with
|
|
7320
7328
|
# an absolute floor to ignore penny-scale noise), and a `new_source`, where
|
|
7321
7329
|
# a provider or service with no spend at all across that window suddenly
|
|
7322
|
-
# billed a material amount. Thresholds are per organization
|
|
7330
|
+
# billed a material amount. Thresholds are per organization: see GET
|
|
7323
7331
|
# /costs/anomaly-settings. Newest day first, capped at 200 rows.
|
|
7324
7332
|
#
|
|
7325
7333
|
# _Requires permission: `costs:read`._
|
|
@@ -7356,8 +7364,8 @@ module Infrawrench
|
|
|
7356
7364
|
# Get the organization's anomaly detection thresholds
|
|
7357
7365
|
#
|
|
7358
7366
|
# The tunable part of cost anomaly detection. Everything else about the
|
|
7359
|
-
# model
|
|
7360
|
-
# 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
|
|
7361
7369
|
# changed a threshold reads back the defaults. The response also carries the
|
|
7362
7370
|
# derived, read-only `smsConfigured`.
|
|
7363
7371
|
#
|
|
@@ -7384,11 +7392,11 @@ module Infrawrench
|
|
|
7384
7392
|
#
|
|
7385
7393
|
# Takes effect on the next detection pass (which runs after each cost
|
|
7386
7394
|
# collection). Anomalies already stored are not re-judged. The four
|
|
7387
|
-
# threshold fields are required
|
|
7388
|
-
#
|
|
7389
|
-
#
|
|
7390
|
-
#
|
|
7391
|
-
#
|
|
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.
|
|
7392
7400
|
#
|
|
7393
7401
|
# _Requires permission: `costs:write`._
|
|
7394
7402
|
#
|
|
@@ -7601,7 +7609,7 @@ module Infrawrench
|
|
|
7601
7609
|
#
|
|
7602
7610
|
# Takes effect on the next evaluation pass (which runs after each cost
|
|
7603
7611
|
# collection). Already-fired alerts are not re-judged, and horizons that
|
|
7604
|
-
# 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;
|
|
7605
7613
|
# widening the horizon list warns about future crossings, not past ones. A
|
|
7606
7614
|
# PUT of the whole object, not a patch.
|
|
7607
7615
|
#
|
|
@@ -7746,10 +7754,10 @@ module Infrawrench
|
|
|
7746
7754
|
#
|
|
7747
7755
|
# The three slow-lane cost alerts in one feed, newest first: commitments
|
|
7748
7756
|
# about to lapse, commitments that are not being used, and business metrics
|
|
7749
|
-
# whose cost per unit rose. Unlike budgets, anomalies and change alerts
|
|
7750
|
-
#
|
|
7751
|
-
#
|
|
7752
|
-
#
|
|
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.
|
|
7753
7761
|
#
|
|
7754
7762
|
# _Requires permission: `costs:read`._
|
|
7755
7763
|
#
|
|
@@ -7860,8 +7868,8 @@ module Infrawrench
|
|
|
7860
7868
|
|
|
7861
7869
|
# Push cost rows from your own systems
|
|
7862
7870
|
#
|
|
7863
|
-
# Reports spend Infrawrench has no provider plugin for
|
|
7864
|
-
# 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
|
|
7865
7873
|
# provider collectors write to, so it appears in cost graphs, dimension
|
|
7866
7874
|
# filters, and budgets alongside everything else.
|
|
7867
7875
|
#
|
|
@@ -7904,7 +7912,7 @@ module Infrawrench
|
|
|
7904
7912
|
#
|
|
7905
7913
|
# Cost centres nest, so the list is a depth-first tree. Each entry carries
|
|
7906
7914
|
# `totals` (spend allocated directly to it) and `subtreeTotals` (its own
|
|
7907
|
-
# plus every descendant's)
|
|
7915
|
+
# plus every descendant's). "Engineering, of which Platform" needs both.
|
|
7908
7916
|
# Rules still evaluate first-match-wins by ascending priority against a flat
|
|
7909
7917
|
# list, so a row is allocated exactly once even when a rule targets a parent
|
|
7910
7918
|
# and another targets its child; at equal priority the more deeply nested
|
|
@@ -7927,7 +7935,7 @@ module Infrawrench
|
|
|
7927
7935
|
# amount.
|
|
7928
7936
|
# @param adjusted [String, nil] Apply the organization's billing rules (see /billing-rules):
|
|
7929
7937
|
# markups multiply, and a reallocation moves a centre's spend onto another centre. Off by
|
|
7930
|
-
# default
|
|
7938
|
+
# default; a chargeback report that silently showed marked-up numbers is one the receiving
|
|
7931
7939
|
# team could not reconcile. On, the response carries `adjustment` with the collected totals
|
|
7932
7940
|
# beside the adjusted ones. Fixed-amount rules are booked onto the cost centre they name (or
|
|
7933
7941
|
# "Unallocated" when they name none), pro-rated across the period.
|
|
@@ -7971,7 +7979,7 @@ module Infrawrench
|
|
|
7971
7979
|
#
|
|
7972
7980
|
# Spend on cost rows missing at least one of the org's required tag keys,
|
|
7973
7981
|
# overall and per key, plus the largest untagged (account, service) buckets.
|
|
7974
|
-
# Empty when no tag policy is configured
|
|
7982
|
+
# Empty when no tag policy is configured: untagged is only meaningful
|
|
7975
7983
|
# against a policy.
|
|
7976
7984
|
#
|
|
7977
7985
|
# _Requires permission: `costs:read`._
|
|
@@ -8015,7 +8023,7 @@ module Infrawrench
|
|
|
8015
8023
|
# Credential hygiene report
|
|
8016
8024
|
#
|
|
8017
8025
|
# API keys nobody uses, SSH keys nothing references, and members holding
|
|
8018
|
-
# write permissions they have never exercised
|
|
8026
|
+
# write permissions they have never exercised; derived entirely from data
|
|
8019
8027
|
# the server already holds. No provider call and nothing to enable.
|
|
8020
8028
|
#
|
|
8021
8029
|
# **The audit log only witnesses writes.** Reading a resource list or a cost
|
|
@@ -8023,7 +8031,7 @@ module Infrawrench
|
|
|
8023
8031
|
# about read permissions: an absence of evidence about them proves nothing.
|
|
8024
8032
|
# `permissionFindingsWithheld` is set when the organization does not yet
|
|
8025
8033
|
# have enough audit history for the unused-permission finding to be
|
|
8026
|
-
# meaningful. Both are load-bearing
|
|
8034
|
+
# meaningful. Both are load-bearing; a governance report that overclaims is
|
|
8027
8035
|
# worse than none.
|
|
8028
8036
|
#
|
|
8029
8037
|
# Gated on `audit:read` rather than a permission of its own: every fact here
|
|
@@ -8065,7 +8073,7 @@ module Infrawrench
|
|
|
8065
8073
|
#
|
|
8066
8074
|
# Every prepaid pot the organization holds, most urgent first. A provider
|
|
8067
8075
|
# that bills in arrears sends an invoice you can argue with; a prepaid pot
|
|
8068
|
-
# that empties simply stops answering
|
|
8076
|
+
# that empties simply stops answering: so this is an availability number as
|
|
8069
8077
|
# much as a finance one.
|
|
8070
8078
|
#
|
|
8071
8079
|
# The burn rate is measured from the server's own series of readings rather
|
|
@@ -8619,7 +8627,7 @@ module Infrawrench
|
|
|
8619
8627
|
#
|
|
8620
8628
|
# Raises on 400: Bad request
|
|
8621
8629
|
#
|
|
8622
|
-
# Raises on 402: Payment required
|
|
8630
|
+
# Raises on 402: Payment required: the organization's plan does not include
|
|
8623
8631
|
# this
|
|
8624
8632
|
#
|
|
8625
8633
|
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
@@ -8713,7 +8721,7 @@ module Infrawrench
|
|
|
8713
8721
|
#
|
|
8714
8722
|
# Raises on 400: Bad request
|
|
8715
8723
|
#
|
|
8716
|
-
# Raises on 402: Payment required
|
|
8724
|
+
# Raises on 402: Payment required: the organization's plan does not include
|
|
8717
8725
|
# this
|
|
8718
8726
|
#
|
|
8719
8727
|
# Raises on 404: Not found
|
|
@@ -8765,7 +8773,7 @@ module Infrawrench
|
|
|
8765
8773
|
#
|
|
8766
8774
|
# Raises on 400: Bad request
|
|
8767
8775
|
#
|
|
8768
|
-
# Raises on 402: Payment required
|
|
8776
|
+
# Raises on 402: Payment required: the organization's plan does not include
|
|
8769
8777
|
# this
|
|
8770
8778
|
#
|
|
8771
8779
|
# Raises on 404: Not found
|
|
@@ -9569,8 +9577,8 @@ module Infrawrench
|
|
|
9569
9577
|
# (the default) is what the provider charged on the day it charged it; `amortized` spreads a
|
|
9570
9578
|
# commitment's up-front fee across the term it buys; `blended` also spreads each
|
|
9571
9579
|
# commitment's discount evenly over the usage it could cover. It is echoed on every response
|
|
9572
|
-
# because a delta whose basis is unstated is unreadable
|
|
9573
|
-
#
|
|
9580
|
+
# because a delta whose basis is unstated is unreadable: an amortized 'after' against a cash
|
|
9581
|
+
# 'before' looks exactly like a saving.
|
|
9574
9582
|
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
9575
9583
|
# @return [Hash] Parsed JSON, shaped as `DeploymentCostImpact` — see
|
|
9576
9584
|
# `sig/infrawrench/sdk.rbs`.
|
|
@@ -9674,11 +9682,11 @@ module Infrawrench
|
|
|
9674
9682
|
# Roll back to a previous deployment
|
|
9675
9683
|
#
|
|
9676
9684
|
# Re-runs that run's `deploy()` with the image and plan it recorded,
|
|
9677
|
-
# building nothing
|
|
9685
|
+
# building nothing; the exact artifact that was known good ships again. The
|
|
9678
9686
|
# Infrafile is read at the commit that run deployed, not at the branch head.
|
|
9679
9687
|
# Only a successful run that produced an image can be rolled back to. With
|
|
9680
9688
|
# `deleteCreated`, resources that runs after the target created through
|
|
9681
|
-
# `infra.accounts` are deleted once the rollback has succeeded
|
|
9689
|
+
# `infra.accounts` are deleted once the rollback has succeeded; undoing the
|
|
9682
9690
|
# provisioning, not just the shipping. Deletions are best-effort and
|
|
9683
9691
|
# reported in the result's notes.
|
|
9684
9692
|
#
|
|
@@ -9690,7 +9698,7 @@ module Infrawrench
|
|
|
9690
9698
|
#
|
|
9691
9699
|
# Raises on 401: Unauthenticated
|
|
9692
9700
|
#
|
|
9693
|
-
# Raises on 402: Payment required
|
|
9701
|
+
# Raises on 402: Payment required: the organization's plan does not include
|
|
9694
9702
|
# this
|
|
9695
9703
|
#
|
|
9696
9704
|
# Raises on 403: Forbidden
|
|
@@ -9731,10 +9739,10 @@ module Infrawrench
|
|
|
9731
9739
|
|
|
9732
9740
|
# Deploy an environment whenever a branch moves
|
|
9733
9741
|
#
|
|
9734
|
-
# Arming a trigger records the branch's current commit WITHOUT deploying it
|
|
9735
|
-
#
|
|
9736
|
-
#
|
|
9737
|
-
#
|
|
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.
|
|
9738
9746
|
#
|
|
9739
9747
|
# _Requires permission: `deployments:write`._
|
|
9740
9748
|
#
|
|
@@ -10013,8 +10021,8 @@ module Infrawrench
|
|
|
10013
10021
|
#
|
|
10014
10022
|
# Email is a digest-only transport, so its destinations are an
|
|
10015
10023
|
# organization-level address list rather than a per-channel trigger.
|
|
10016
|
-
# Addresses need not belong to Infrawrench users
|
|
10017
|
-
#
|
|
10024
|
+
# Addresses need not belong to Infrawrench users; a finance alias is a valid
|
|
10025
|
+
# recipient.
|
|
10018
10026
|
#
|
|
10019
10027
|
# GET /api/org/{orgId}/digest/recipients
|
|
10020
10028
|
#
|
|
@@ -10073,7 +10081,7 @@ module Infrawrench
|
|
|
10073
10081
|
|
|
10074
10082
|
# Compose and send last week's digest now
|
|
10075
10083
|
#
|
|
10076
|
-
# Ignores the schedule and the enabled flag
|
|
10084
|
+
# Ignores the schedule and the enabled flag; composes the digest for the
|
|
10077
10085
|
# last complete week and sends it to every opted-in channel and email
|
|
10078
10086
|
# recipient. This is also the manual recovery for a partial delivery, which
|
|
10079
10087
|
# is never retried automatically. Fails when nothing is routed to receive
|
|
@@ -10100,7 +10108,7 @@ module Infrawrench
|
|
|
10100
10108
|
# Update the weekly digest settings
|
|
10101
10109
|
#
|
|
10102
10110
|
# Every field is optional. Enabling schedules the first digest for the next
|
|
10103
|
-
# configured send time rather than sending immediately
|
|
10111
|
+
# configured send time rather than sending immediately; use POST
|
|
10104
10112
|
# /digest/send for an immediate one. The week boundary follows `timezone`,
|
|
10105
10113
|
# so the reported window is always the organization's own local
|
|
10106
10114
|
# Monday-to-Sunday week. Changing the schedule clears any parked failure
|
|
@@ -10140,7 +10148,7 @@ module Infrawrench
|
|
|
10140
10148
|
# One view over every zone and record across the connected DNS providers
|
|
10141
10149
|
# (Cloudflare, Route 53, Cloud DNS, DigitalOcean, Netlify, Azure DNS,
|
|
10142
10150
|
# Vercel), with each record target classified against the rest of the
|
|
10143
|
-
# 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
|
|
10144
10152
|
# reflect the last sync.
|
|
10145
10153
|
#
|
|
10146
10154
|
# A `dangling` target is a subdomain-takeover candidate: the record points
|
|
@@ -10215,8 +10223,8 @@ module Infrawrench
|
|
|
10215
10223
|
|
|
10216
10224
|
# Compare two accounts' resource inventories
|
|
10217
10225
|
#
|
|
10218
|
-
# Compares two accounts of the same provider
|
|
10219
|
-
# production
|
|
10226
|
+
# Compares two accounts of the same provider (typically staging against
|
|
10227
|
+
# production) over already-synced state: which resource types exist in one
|
|
10220
10228
|
# and not the other, the per-type count deltas, and the fields on which two
|
|
10221
10229
|
# corresponding resources disagree (instance class, engine version, feature
|
|
10222
10230
|
# flags).
|
|
@@ -10224,8 +10232,8 @@ module Infrawrench
|
|
|
10224
10232
|
# Resources are paired by resource type plus name with environment words
|
|
10225
10233
|
# removed, so `api-staging` lines up with `api-prod` without any naming
|
|
10226
10234
|
# convention to configure. By default the comparison hides divergences that
|
|
10227
|
-
# are artefacts of being two different resources
|
|
10228
|
-
# 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
|
|
10229
10237
|
# `includeIdentityFields=true` to see them.
|
|
10230
10238
|
#
|
|
10231
10239
|
# Read-only and cheap: no provider API calls are made, so results reflect
|
|
@@ -10241,7 +10249,7 @@ module Infrawrench
|
|
|
10241
10249
|
#
|
|
10242
10250
|
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
10243
10251
|
# constructed with.
|
|
10244
|
-
# @param a [String] Baseline account id
|
|
10252
|
+
# @param a [String] Baseline account id; by convention the environment that works.
|
|
10245
10253
|
# @param b [String] Compared account id. Must differ from `a` and use the same provider.
|
|
10246
10254
|
# @param resource_type_id [String, nil] Compare one resource type only.
|
|
10247
10255
|
# @param include_identity_fields [String, nil] Compare identity and timestamp fields too,
|
|
@@ -10283,7 +10291,7 @@ module Infrawrench
|
|
|
10283
10291
|
|
|
10284
10292
|
# Forget a torn-down environment
|
|
10285
10293
|
#
|
|
10286
|
-
# Removes the record. Refuses while the instance still owns resources
|
|
10294
|
+
# Removes the record. Refuses while the instance still owns resources; the
|
|
10287
10295
|
# row is the only thing that knows they exist. Audit-logged.
|
|
10288
10296
|
#
|
|
10289
10297
|
# _Requires permission: `resources:write`._
|
|
@@ -10292,7 +10300,7 @@ module Infrawrench
|
|
|
10292
10300
|
#
|
|
10293
10301
|
# Raises on 404: Not found
|
|
10294
10302
|
#
|
|
10295
|
-
# Raises on 409: The environment is still live
|
|
10303
|
+
# Raises on 409: The environment is still live; tear it down first
|
|
10296
10304
|
#
|
|
10297
10305
|
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
10298
10306
|
# constructed with.
|
|
@@ -10433,8 +10441,8 @@ module Infrawrench
|
|
|
10433
10441
|
|
|
10434
10442
|
# Set the organization's environment TTL rails
|
|
10435
10443
|
#
|
|
10436
|
-
# `org:settings:write`, not `resources:write
|
|
10437
|
-
#
|
|
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
|
|
10438
10446
|
# environment. Clamped to a 720-hour ceiling; the default is clamped to the
|
|
10439
10447
|
# maximum. Audit-logged.
|
|
10440
10448
|
#
|
|
@@ -10472,7 +10480,7 @@ module Infrawrench
|
|
|
10472
10480
|
#
|
|
10473
10481
|
# Save a capture draft as a template. Member keys must be unique, every
|
|
10474
10482
|
# parameter and member reference must resolve, and the members must be
|
|
10475
|
-
# orderable
|
|
10483
|
+
# orderable; a dependency cycle is rejected here rather than half-way
|
|
10476
10484
|
# through an apply. Audit-logged.
|
|
10477
10485
|
#
|
|
10478
10486
|
# _Requires permission: `resources:write`._
|
|
@@ -10502,7 +10510,7 @@ module Infrawrench
|
|
|
10502
10510
|
|
|
10503
10511
|
# Delete an environment template
|
|
10504
10512
|
#
|
|
10505
|
-
# Live instances keep running and keep their TTL
|
|
10513
|
+
# Live instances keep running and keep their TTL; they own real resources,
|
|
10506
10514
|
# and the template is only where they came from. Their `templateId` becomes
|
|
10507
10515
|
# null; the denormalized `templateName` is what the surface reads.
|
|
10508
10516
|
# Audit-logged.
|
|
@@ -10533,7 +10541,7 @@ module Infrawrench
|
|
|
10533
10541
|
#
|
|
10534
10542
|
# Runs each member's create fields through the plugin's own `estimateCost`.
|
|
10535
10543
|
# A member the plugin cannot price is counted in `unpricedCount` and makes
|
|
10536
|
-
# the total `partial
|
|
10544
|
+
# the total `partial`: `null` is never rounded to zero.
|
|
10537
10545
|
#
|
|
10538
10546
|
# _Requires permission: `resources:read`._
|
|
10539
10547
|
#
|
|
@@ -10707,7 +10715,7 @@ module Infrawrench
|
|
|
10707
10715
|
# Preview a template capture
|
|
10708
10716
|
#
|
|
10709
10717
|
# Turn a selection of live resources into a draft template. **Persists
|
|
10710
|
-
# nothing
|
|
10718
|
+
# nothing**: the editor shows the draft so the user can choose which fields
|
|
10711
10719
|
# to vary before saving. The shape of every member comes from the plugin's
|
|
10712
10720
|
# own `getCreateConfig`: a captured value with no matching create field is
|
|
10713
10721
|
# dropped, and a resource type the plugin cannot create is reported in
|
|
@@ -11335,7 +11343,7 @@ module Infrawrench
|
|
|
11335
11343
|
# List uploaded Terraform state documents
|
|
11336
11344
|
#
|
|
11337
11345
|
# Every state document the organization has uploaded, newest first. The
|
|
11338
|
-
# documents themselves are never stored
|
|
11346
|
+
# documents themselves are never stored; only the parsed, redacted
|
|
11339
11347
|
# projection.
|
|
11340
11348
|
#
|
|
11341
11349
|
# GET /api/org/{orgId}/iac/states
|
|
@@ -11432,7 +11440,7 @@ module Infrawrench
|
|
|
11432
11440
|
#
|
|
11433
11441
|
# The managed/unmanaged badge for a resource detail page, computed against
|
|
11434
11442
|
# the newest state document. `status` is null when the organization has
|
|
11435
|
-
# uploaded none
|
|
11443
|
+
# uploaded none; absence of a state is not evidence of ClickOps. A query
|
|
11436
11444
|
# parameter rather than a path segment because composite resource ids
|
|
11437
11445
|
# contain slashes.
|
|
11438
11446
|
#
|
|
@@ -11469,7 +11477,7 @@ module Infrawrench
|
|
|
11469
11477
|
# List declared incidents
|
|
11470
11478
|
#
|
|
11471
11479
|
# Every incident the organization has declared, newest first, each with the
|
|
11472
|
-
# artefacts its declaration created
|
|
11480
|
+
# artefacts its declaration created: including the ones that failed.
|
|
11473
11481
|
#
|
|
11474
11482
|
# _Requires permission: `incidents:read`._
|
|
11475
11483
|
#
|
|
@@ -11630,7 +11638,7 @@ module Infrawrench
|
|
|
11630
11638
|
# Delete an incident
|
|
11631
11639
|
#
|
|
11632
11640
|
# Removes the incident, its notes and its artefact records. It does not lift
|
|
11633
|
-
# a freeze or close a status-page update
|
|
11641
|
+
# a freeze or close a status-page update, resolve for that; deleting is for
|
|
11634
11642
|
# a mis-declaration. Audit-logged.
|
|
11635
11643
|
#
|
|
11636
11644
|
# _Requires permission: `incidents:write`._
|
|
@@ -11658,8 +11666,8 @@ module Infrawrench
|
|
|
11658
11666
|
# Export a pre-filled postmortem
|
|
11659
11667
|
#
|
|
11660
11668
|
# Markdown with the timeline, the affected resources, the duration, the time
|
|
11661
|
-
# to mitigate and the notes already filled in. The analysis headings
|
|
11662
|
-
# 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
|
|
11663
11671
|
# generated document that guesses at a root cause is worse than one that
|
|
11664
11672
|
# leaves a heading.
|
|
11665
11673
|
#
|
|
@@ -11689,9 +11697,9 @@ module Infrawrench
|
|
|
11689
11697
|
#
|
|
11690
11698
|
# Re-runs only the side effects whose artefact is in a failure state,
|
|
11691
11699
|
# replacing each failure rather than queueing a second attempt beside it. A
|
|
11692
|
-
# `failed` artefact is **re-created**; a `close_failed` one is
|
|
11693
|
-
#
|
|
11694
|
-
# 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
|
|
11695
11703
|
# recorded on the artefact's `request`, so the announcement keeps its
|
|
11696
11704
|
# original scope. Its own endpoint rather than a flag on PATCH, because it
|
|
11697
11705
|
# writes into three external systems. Audit-logged.
|
|
@@ -11724,8 +11732,8 @@ module Infrawrench
|
|
|
11724
11732
|
# provider status incidents, audit entries, change freezes and workflow runs
|
|
11725
11733
|
# (all via the same union the Moment screen uses), plus probe state
|
|
11726
11734
|
# transitions, metric-alert firings, the incident's own life events, its
|
|
11727
|
-
# artefacts and its operator notes. Nothing is copied
|
|
11728
|
-
#
|
|
11735
|
+
# artefacts and its operator notes. Nothing is copied; a correction upstream
|
|
11736
|
+
# shows up here on the next read.
|
|
11729
11737
|
#
|
|
11730
11738
|
# Probe transitions are an approximation: `synthetic_probes` keeps only a
|
|
11731
11739
|
# single `lastStateChangeAt`, so a probe that flapped twice inside the
|
|
@@ -11755,7 +11763,7 @@ module Infrawrench
|
|
|
11755
11763
|
# Edit or transition an incident
|
|
11756
11764
|
#
|
|
11757
11765
|
# Omitted fields keep their value. Setting `status` stamps the matching
|
|
11758
|
-
# timestamp, and resolving undoes exactly what this incident created
|
|
11766
|
+
# timestamp, and resolving undoes exactly what this incident created; the
|
|
11759
11767
|
# freeze whose id is on its own artefact, not whatever freeze happens to be
|
|
11760
11768
|
# in effect. Resolving an incident that was never marked mitigated
|
|
11761
11769
|
# back-fills `mitigatedAt` from `resolvedAt`. Audit-logged.
|
|
@@ -11857,7 +11865,7 @@ module Infrawrench
|
|
|
11857
11865
|
@transport = transport
|
|
11858
11866
|
end
|
|
11859
11867
|
|
|
11860
|
-
# Approve an invoice
|
|
11868
|
+
# Approve an invoice; freeze its figures
|
|
11861
11869
|
#
|
|
11862
11870
|
# Computes the figures one last time and writes them onto the invoice
|
|
11863
11871
|
# together with the exchange rates, the day they were read, the billing
|
|
@@ -11872,7 +11880,7 @@ module Infrawrench
|
|
|
11872
11880
|
# customer's currency.
|
|
11873
11881
|
#
|
|
11874
11882
|
# Refused with 409, too, when the draft or its customer changed while the
|
|
11875
|
-
# figures were being computed
|
|
11883
|
+
# figures were being computed: a different period, scope, currency, cost
|
|
11876
11884
|
# basis or billing-rules setting. Nothing is approved in that case: freezing
|
|
11877
11885
|
# figures that describe a different question would be worse than making the
|
|
11878
11886
|
# caller look again.
|
|
@@ -11963,9 +11971,9 @@ module Infrawrench
|
|
|
11963
11971
|
# Download an invoice as CSV
|
|
11964
11972
|
#
|
|
11965
11973
|
# The derivation, not a rendered document: what was collected, what the
|
|
11966
|
-
# rules added, the rate and the day it was read, and the final figure
|
|
11967
|
-
#
|
|
11968
|
-
#
|
|
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.
|
|
11969
11977
|
#
|
|
11970
11978
|
# _Requires permission: `invoices:read`._
|
|
11971
11979
|
#
|
|
@@ -12019,7 +12027,7 @@ module Infrawrench
|
|
|
12019
12027
|
# List invoices
|
|
12020
12028
|
#
|
|
12021
12029
|
# Summaries, newest period first. A draft's `totals` is null here rather
|
|
12022
|
-
# than recomputed
|
|
12030
|
+
# than recomputed; recomputing every draft would make opening the list one
|
|
12023
12031
|
# cost-data scan per draft, and zero would be a lie the reader cannot
|
|
12024
12032
|
# detect.
|
|
12025
12033
|
#
|
|
@@ -12049,7 +12057,7 @@ module Infrawrench
|
|
|
12049
12057
|
|
|
12050
12058
|
# Send an invoice to its customer
|
|
12051
12059
|
#
|
|
12052
|
-
# Changes no figure
|
|
12060
|
+
# Changes no figure; the document was frozen at approval. It records the
|
|
12053
12061
|
# **release** (this may go to the customer, and this person said so), then
|
|
12054
12062
|
# emails the invoice to the customer's contact addresses with the CSV
|
|
12055
12063
|
# attached.
|
|
@@ -12060,8 +12068,8 @@ module Infrawrench
|
|
|
12060
12068
|
# delivery is visible, and re-sending retries it.
|
|
12061
12069
|
#
|
|
12062
12070
|
# Sending again needs `resend: true` only when the last attempt reached
|
|
12063
|
-
# somebody
|
|
12064
|
-
#
|
|
12071
|
+
# somebody, see `InvoiceSendRequest`. The body may be omitted entirely for a
|
|
12072
|
+
# first send.
|
|
12065
12073
|
#
|
|
12066
12074
|
# _Requires permission: `invoices:issue`._
|
|
12067
12075
|
#
|
|
@@ -12093,7 +12101,7 @@ module Infrawrench
|
|
|
12093
12101
|
# Edit a draft invoice
|
|
12094
12102
|
#
|
|
12095
12103
|
# Draft only. An approved, sent or void invoice is refused with 409 by the
|
|
12096
|
-
# service, not merely hidden by the UI
|
|
12104
|
+
# service, not merely hidden by the UI; an issued invoice that silently
|
|
12097
12105
|
# changed after the customer received it is the worst outcome this feature
|
|
12098
12106
|
# could produce.
|
|
12099
12107
|
#
|
|
@@ -12127,7 +12135,7 @@ module Infrawrench
|
|
|
12127
12135
|
# Void an issued invoice
|
|
12128
12136
|
#
|
|
12129
12137
|
# The only correction there is. The original keeps every figure it was sent
|
|
12130
|
-
# with
|
|
12138
|
+
# with: “we billed you this, it was wrong, here is the corrected one” is a
|
|
12131
12139
|
# story a customer can follow, and “we changed the invoice” is not.
|
|
12132
12140
|
#
|
|
12133
12141
|
# With `supersede`, the void, the corrective draft and both directions of
|
|
@@ -12328,7 +12336,7 @@ module Infrawrench
|
|
|
12328
12336
|
# constructed with.
|
|
12329
12337
|
# @param source_kind [String, nil]
|
|
12330
12338
|
# @param source_id [Array<String>, nil] Repeat to narrow to specific findings. Omit to
|
|
12331
|
-
# 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
|
|
12332
12340
|
# one request per row.
|
|
12333
12341
|
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
12334
12342
|
# @return [Array<Hash>] Parsed JSON, shaped as `Array<JiraIssueLink>` — see
|
|
@@ -12445,7 +12453,7 @@ module Infrawrench
|
|
|
12445
12453
|
|
|
12446
12454
|
# Cancel a lease
|
|
12447
12455
|
#
|
|
12448
|
-
# Stop the countdown
|
|
12456
|
+
# Stop the countdown; the resource stays, the lease goes `canceled` and
|
|
12449
12457
|
# leaves the expiry radar. Audit-logged.
|
|
12450
12458
|
#
|
|
12451
12459
|
# _Requires permission: `resources:write`._
|
|
@@ -12473,9 +12481,9 @@ module Infrawrench
|
|
|
12473
12481
|
|
|
12474
12482
|
# Create a resource lease
|
|
12475
12483
|
#
|
|
12476
|
-
# Attach an expiry to a resource
|
|
12484
|
+
# Attach an expiry to a resource; 'give me a test cluster for 3 days'. One
|
|
12477
12485
|
# lease per resource (an active lease conflicts; a terminal one is
|
|
12478
|
-
# replaced). `autoDelete: true` opts into deletion at expiry
|
|
12486
|
+
# replaced). `autoDelete: true` opts into deletion at expiry; the poller
|
|
12479
12487
|
# announces it twice first, defers during change freezes, and requires the
|
|
12480
12488
|
# caller to hold `resources:delete`. Audit-logged.
|
|
12481
12489
|
#
|
|
@@ -12713,7 +12721,7 @@ module Infrawrench
|
|
|
12713
12721
|
# constructed with.
|
|
12714
12722
|
# @param source_kind [String, nil]
|
|
12715
12723
|
# @param source_id [Array<String>, nil] Repeat to narrow to specific findings. Omit to
|
|
12716
|
-
# 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
|
|
12717
12725
|
# one request per row.
|
|
12718
12726
|
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
12719
12727
|
# @return [Array<Hash>] Parsed JSON, shaped as `Array<LinearIssueLink>` — see
|
|
@@ -12731,7 +12739,7 @@ module Infrawrench
|
|
|
12731
12739
|
|
|
12732
12740
|
# List Linear teams
|
|
12733
12741
|
#
|
|
12734
|
-
# 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;
|
|
12735
12743
|
# issueCreate requires one, and every issue belongs to exactly one team.
|
|
12736
12744
|
#
|
|
12737
12745
|
# _Requires permission: `linear:read`._
|
|
@@ -12909,8 +12917,8 @@ module Infrawrench
|
|
|
12909
12917
|
|
|
12910
12918
|
# List log-capable resources
|
|
12911
12919
|
#
|
|
12912
|
-
# Synced resources whose rendered detail declares the logs capability
|
|
12913
|
-
# 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
|
|
12914
12922
|
# a peer integration (pods and workloads inside a managed cluster, listed
|
|
12915
12923
|
# live from the provider and marked with `parentResourceId`). Discovered
|
|
12916
12924
|
# from the plugin contract (never a hardcoded provider list), capped at 500
|
|
@@ -13012,8 +13020,8 @@ module Infrawrench
|
|
|
13012
13020
|
#
|
|
13013
13021
|
# A soft delete: an issued invoice names its customer, and an invoice whose
|
|
13014
13022
|
# customer stopped resolving is exactly the unreconcilable document this
|
|
13015
|
-
# feature exists to prevent. Draft invoices are removed with it
|
|
13016
|
-
#
|
|
13023
|
+
# feature exists to prevent. Draft invoices are removed with it; a draft was
|
|
13024
|
+
# never issued.
|
|
13017
13025
|
#
|
|
13018
13026
|
# _Requires permission: `invoices:write`._
|
|
13019
13027
|
#
|
|
@@ -13244,7 +13252,7 @@ module Infrawrench
|
|
|
13244
13252
|
# List metric series that actually exist
|
|
13245
13253
|
#
|
|
13246
13254
|
# The series labels resources reported in the last 7 days, optionally
|
|
13247
|
-
# narrowed to one plugin and resource type
|
|
13255
|
+
# narrowed to one plugin and resource type; what the rule builder's metric
|
|
13248
13256
|
# picker is fed from.
|
|
13249
13257
|
#
|
|
13250
13258
|
# GET /api/org/{orgId}/metric-alerts/metric-keys
|
|
@@ -13360,7 +13368,7 @@ module Infrawrench
|
|
|
13360
13368
|
|
|
13361
13369
|
# Everything that happened around a timestamp
|
|
13362
13370
|
#
|
|
13363
|
-
# "What changed around 03:14?"
|
|
13371
|
+
# "What changed around 03:14?"; one merged, chronological narrative of
|
|
13364
13372
|
# everything the platform knows happened in a window: resource changes
|
|
13365
13373
|
# (including sleep/wake schedule attribution), provider status incidents
|
|
13366
13374
|
# that started/resolved in or overlap the window, cost anomalies, workflow
|
|
@@ -13406,7 +13414,7 @@ module Infrawrench
|
|
|
13406
13414
|
# Connect a Teams channel as an alert destination
|
|
13407
13415
|
#
|
|
13408
13416
|
# Adds a channel by webhook URL, or updates the one already holding that
|
|
13409
|
-
# URL. Which alerts reach it is decided by /alert-rules
|
|
13417
|
+
# URL. Which alerts reach it is decided by /alert-rules; connecting a
|
|
13410
13418
|
# channel routes nothing to it on its own. Responds 400 when the URL is not
|
|
13411
13419
|
# https or its host is not Microsoft-operated.
|
|
13412
13420
|
#
|
|
@@ -13453,7 +13461,7 @@ module Infrawrench
|
|
|
13453
13461
|
|
|
13454
13462
|
# Rename a Teams channel
|
|
13455
13463
|
#
|
|
13456
|
-
# The webhook URL is immutable
|
|
13464
|
+
# The webhook URL is immutable; remove the channel and re-add it to change
|
|
13457
13465
|
# it.
|
|
13458
13466
|
#
|
|
13459
13467
|
# PATCH /api/org/{orgId}/msteams/webhooks/{id}
|
|
@@ -13515,7 +13523,7 @@ module Infrawrench
|
|
|
13515
13523
|
|
|
13516
13524
|
# Post a test card to every configured Teams channel
|
|
13517
13525
|
#
|
|
13518
|
-
# Ignores routing rules
|
|
13526
|
+
# Ignores routing rules; every channel gets the test. Fails with the error
|
|
13519
13527
|
# Microsoft returned when nothing could be delivered (HTTP 404 usually means
|
|
13520
13528
|
# the Workflow was deleted or turned off).
|
|
13521
13529
|
#
|
|
@@ -13688,7 +13696,7 @@ module Infrawrench
|
|
|
13688
13696
|
# Turn network flow collection on or off
|
|
13689
13697
|
#
|
|
13690
13698
|
# Collection is **off by default**. Enabling it authorizes Infrawrench to
|
|
13691
|
-
# run daily queries against the provider's log store
|
|
13699
|
+
# run daily queries against the provider's log store; and on AWS those
|
|
13692
13700
|
# queries are billed to your own cloud account per GB of log data scanned,
|
|
13693
13701
|
# every day, until you turn them off. That is why the write is governed by
|
|
13694
13702
|
# `org:settings:write` rather than `costs:write`, and why it is
|
|
@@ -13750,7 +13758,7 @@ module Infrawrench
|
|
|
13750
13758
|
# line.
|
|
13751
13759
|
#
|
|
13752
13760
|
# Accounts whose provider has no readable flow source appear in `accounts`
|
|
13753
|
-
# with `supportsFlows: false` and contribute nothing to the totals
|
|
13761
|
+
# with `supportsFlows: false` and contribute nothing to the totals; never
|
|
13754
13762
|
# zero bytes.
|
|
13755
13763
|
#
|
|
13756
13764
|
# _Requires permission: `costs:read`._
|
|
@@ -13893,7 +13901,7 @@ module Infrawrench
|
|
|
13893
13901
|
# Shift boundaries are calendar-day arithmetic in the rotation's own zone,
|
|
13894
13902
|
# not 24-hour arithmetic: a rotation stepped in fixed milliseconds drifts an
|
|
13895
13903
|
# hour at each daylight-saving change until the 09:00 Monday handover
|
|
13896
|
-
# happens at 08:00
|
|
13904
|
+
# happens at 08:00; or until two people each think the other is on call.
|
|
13897
13905
|
#
|
|
13898
13906
|
# Writing takes `org:settings:write`: a rotation decides who gets woken up.
|
|
13899
13907
|
#
|
|
@@ -13995,7 +14003,7 @@ module Infrawrench
|
|
|
13995
14003
|
# Edit an on-call rotation
|
|
13996
14004
|
#
|
|
13997
14005
|
# Omitted fields are left alone, and the result is validated after merging.
|
|
13998
|
-
# Sending `participantUserIds` replaces the list wholesale
|
|
14006
|
+
# Sending `participantUserIds` replaces the list wholesale; position is
|
|
13999
14007
|
# rotation order, so reordering re-plans the future.
|
|
14000
14008
|
#
|
|
14001
14009
|
# PATCH /api/org/{orgId}/on-call/schedules/{scheduleId}
|
|
@@ -14042,7 +14050,7 @@ module Infrawrench
|
|
|
14042
14050
|
# Who is on call right now
|
|
14043
14051
|
#
|
|
14044
14052
|
# One entry per rotation: the shift in effect, and the next person in the
|
|
14045
|
-
# rotation. Takes `team:read
|
|
14053
|
+
# rotation. Takes `team:read`: knowing who is on call is something every
|
|
14046
14054
|
# member needs and nobody should have to ask an admin for.
|
|
14047
14055
|
#
|
|
14048
14056
|
# GET /api/org/{orgId}/on-call/now
|
|
@@ -14105,8 +14113,8 @@ module Infrawrench
|
|
|
14105
14113
|
# List likely-orphaned and idle resources
|
|
14106
14114
|
#
|
|
14107
14115
|
# Scans the organization's already-synced resources against each plugin's
|
|
14108
|
-
# declarative orphan heuristics
|
|
14109
|
-
# 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
|
|
14110
14118
|
# matches grouped by account, each with the plugin's reason. Purely a read
|
|
14111
14119
|
# over stored state: no provider API calls are made, so results reflect the
|
|
14112
14120
|
# last sync. Where the org's collected cost data has per-resource rows,
|
|
@@ -14171,9 +14179,9 @@ module Infrawrench
|
|
|
14171
14179
|
|
|
14172
14180
|
# List resource ownership records
|
|
14173
14181
|
#
|
|
14174
|
-
# Every ownership record in the organization
|
|
14175
|
-
#
|
|
14176
|
-
#
|
|
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.
|
|
14177
14185
|
#
|
|
14178
14186
|
# _Requires permission: `resources:read`._
|
|
14179
14187
|
#
|
|
@@ -14249,7 +14257,7 @@ module Infrawrench
|
|
|
14249
14257
|
|
|
14250
14258
|
# Set a resource's ownership
|
|
14251
14259
|
#
|
|
14252
|
-
# Upsert keyed by `resourceId
|
|
14260
|
+
# Upsert keyed by `resourceId`: ownership is a property of the resource, so
|
|
14253
14261
|
# there is no separate create and update. Omitted fields keep their value
|
|
14254
14262
|
# and `null` clears one. Clearing every field removes the record entirely
|
|
14255
14263
|
# and the response is `null`, which is the new truth rather than an empty
|
|
@@ -14292,9 +14300,9 @@ module Infrawrench
|
|
|
14292
14300
|
|
|
14293
14301
|
# Raise an alert to the organization's on-call transports
|
|
14294
14302
|
#
|
|
14295
|
-
# Fans an alert out over whatever the org has configured
|
|
14303
|
+
# Fans an alert out over whatever the org has configured (Twilio SMS (and
|
|
14296
14304
|
# voice on request), mobile push, Slack channels, and Microsoft Teams
|
|
14297
|
-
# webhooks
|
|
14305
|
+
# webhooks) honouring each recipient's opt-ins. This is the same alert a
|
|
14298
14306
|
# workflow raises with `infra.page(...)`, for code that runs somewhere
|
|
14299
14307
|
# Infrawrench does not: a health check, a deploy script, a cron on a box.
|
|
14300
14308
|
#
|
|
@@ -14332,7 +14340,7 @@ module Infrawrench
|
|
|
14332
14340
|
# Clear a page key's cooldown
|
|
14333
14341
|
#
|
|
14334
14342
|
# Drops the cooldown for one `(source, key)` so the next page under it
|
|
14335
|
-
# delivers immediately. Call it when the condition you alerted on recovers
|
|
14343
|
+
# delivers immediately. Call it when the condition you alerted on recovers;
|
|
14336
14344
|
# the workflow equivalent is `infra.page.clear(key)`. Clearing a key that
|
|
14337
14345
|
# was never paged is not an error.
|
|
14338
14346
|
#
|
|
@@ -14345,7 +14353,7 @@ module Infrawrench
|
|
|
14345
14353
|
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
14346
14354
|
# constructed with.
|
|
14347
14355
|
# @param source [String] Stable name for the system raising the page: letters, digits, `.`,
|
|
14348
|
-
# `_` 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
|
|
14349
14357
|
# paging under the same key never throttle each other.
|
|
14350
14358
|
# @param key [String, nil] Defaults to `default`.
|
|
14351
14359
|
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
@@ -14372,7 +14380,7 @@ module Infrawrench
|
|
|
14372
14380
|
|
|
14373
14381
|
# Dismiss a posture finding
|
|
14374
14382
|
#
|
|
14375
|
-
# Accept a finding
|
|
14383
|
+
# Accept a finding; the bucket really is meant to be public, the key really
|
|
14376
14384
|
# is rotated out of band. The finding leaves `findings` and stops feeding
|
|
14377
14385
|
# the daily posture alerts, but the rule keeps being evaluated and the
|
|
14378
14386
|
# finding is reported back under `dismissed` for as long as it still
|
|
@@ -14564,7 +14572,7 @@ module Infrawrench
|
|
|
14564
14572
|
#
|
|
14565
14573
|
# Raises on 401: Unauthenticated
|
|
14566
14574
|
#
|
|
14567
|
-
# Raises on 402: Payment required
|
|
14575
|
+
# Raises on 402: Payment required: the organization's plan does not include
|
|
14568
14576
|
# this
|
|
14569
14577
|
#
|
|
14570
14578
|
# Raises on 403: Forbidden
|
|
@@ -14644,7 +14652,7 @@ module Infrawrench
|
|
|
14644
14652
|
#
|
|
14645
14653
|
# Raises on 401: Unauthenticated
|
|
14646
14654
|
#
|
|
14647
|
-
# Raises on 402: Payment required
|
|
14655
|
+
# Raises on 402: Payment required: the organization's plan does not include
|
|
14648
14656
|
# this
|
|
14649
14657
|
#
|
|
14650
14658
|
# Raises on 403: Forbidden
|
|
@@ -14689,7 +14697,7 @@ module Infrawrench
|
|
|
14689
14697
|
#
|
|
14690
14698
|
# Raises on 401: Unauthenticated
|
|
14691
14699
|
#
|
|
14692
|
-
# Raises on 402: Payment required
|
|
14700
|
+
# Raises on 402: Payment required: the organization's plan does not include
|
|
14693
14701
|
# this
|
|
14694
14702
|
#
|
|
14695
14703
|
# Raises on 403: Forbidden
|
|
@@ -14915,7 +14923,7 @@ module Infrawrench
|
|
|
14915
14923
|
#
|
|
14916
14924
|
# Endpoint candidates mined from the organization's synced resource outputs
|
|
14917
14925
|
# and fields (keys like url, endpoint, host, domain, publicIp). A cheap read
|
|
14918
|
-
# over stored state
|
|
14926
|
+
# over stored state; no provider API calls. Deduplicated by URL.
|
|
14919
14927
|
#
|
|
14920
14928
|
# _Requires permission: `resources:read`._
|
|
14921
14929
|
#
|
|
@@ -14938,7 +14946,7 @@ module Infrawrench
|
|
|
14938
14946
|
# Update or disable a probe
|
|
14939
14947
|
#
|
|
14940
14948
|
# Edit settings and/or toggle `enabled`. Changing the URL or method resets
|
|
14941
|
-
# the probe's state to `unknown
|
|
14949
|
+
# the probe's state to `unknown`: the history belongs to the old endpoint.
|
|
14942
14950
|
# Audit-logged.
|
|
14943
14951
|
#
|
|
14944
14952
|
# _Requires permission: `resources:write`._
|
|
@@ -15110,7 +15118,7 @@ module Infrawrench
|
|
|
15110
15118
|
|
|
15111
15119
|
# List enrolled authentication factors
|
|
15112
15120
|
#
|
|
15113
|
-
# Includes factors whose enrolment was never confirmed
|
|
15121
|
+
# Includes factors whose enrolment was never confirmed; WorkOS does not
|
|
15114
15122
|
# expose a verified flag.
|
|
15115
15123
|
#
|
|
15116
15124
|
# GET /api/profile/mfa
|
|
@@ -15165,7 +15173,7 @@ module Infrawrench
|
|
|
15165
15173
|
|
|
15166
15174
|
# Revoke one session
|
|
15167
15175
|
#
|
|
15168
|
-
# Refuses the session making the request
|
|
15176
|
+
# Refuses the session making the request, use sign-out for that.
|
|
15169
15177
|
#
|
|
15170
15178
|
# DELETE /api/profile/sessions/{sessionId}
|
|
15171
15179
|
#
|
|
@@ -15318,7 +15326,7 @@ module Infrawrench
|
|
|
15318
15326
|
|
|
15319
15327
|
# Mint a password reset link for the signed-in user
|
|
15320
15328
|
#
|
|
15321
|
-
# Returns a one-time AuthKit-hosted reset URL rather than emailing it
|
|
15329
|
+
# Returns a one-time AuthKit-hosted reset URL rather than emailing it; the
|
|
15322
15330
|
# caller already holds a valid session for the account. Also the way to set
|
|
15323
15331
|
# a first password on an SSO or OAuth-only account.
|
|
15324
15332
|
#
|
|
@@ -15504,11 +15512,11 @@ module Infrawrench
|
|
|
15504
15512
|
# List what a monitor can run against
|
|
15505
15513
|
#
|
|
15506
15514
|
# The editor's target picker: each account with a SQL driver of its own,
|
|
15507
|
-
# plus the SQL-capable resources inside it
|
|
15515
|
+
# plus the SQL-capable resources inside it; a database that is a *resource*
|
|
15508
15516
|
# (a ClickHouse service, a D1 or Turso database, a Databricks SQL warehouse,
|
|
15509
15517
|
# a BigQuery dataset) rather than the account's own connection. Accounts
|
|
15510
15518
|
# with neither are omitted; a monitor pointed at one could only ever fail.
|
|
15511
|
-
# Pass a resource's `id` (and optionally its `resourceTypeId
|
|
15519
|
+
# Pass a resource's `id` (and optionally its `resourceTypeId`: the server
|
|
15512
15520
|
# fills it from the synced resource either way) when creating a monitor to
|
|
15513
15521
|
# scope the query to that resource.
|
|
15514
15522
|
#
|
|
@@ -15532,8 +15540,8 @@ module Infrawrench
|
|
|
15532
15540
|
# Run a query once without saving it
|
|
15533
15541
|
#
|
|
15534
15542
|
# The editor's 'try it' button. Goes through the same read-only guard as a
|
|
15535
|
-
# scheduled run
|
|
15536
|
-
# runnable through the monitor's own preview
|
|
15543
|
+
# scheduled run; a query that could not be saved as a monitor must not be
|
|
15544
|
+
# runnable through the monitor's own preview: and applies the threshold, so
|
|
15537
15545
|
# the answer says whether it *would* be breaching rather than leaving the
|
|
15538
15546
|
# reader to compare two numbers.
|
|
15539
15547
|
#
|
|
@@ -15671,13 +15679,13 @@ module Infrawrench
|
|
|
15671
15679
|
#
|
|
15672
15680
|
# How close each account is to the limits its provider enforces, with the
|
|
15673
15681
|
# trend fitted over the last 14 days of collected readings. Both halves of
|
|
15674
|
-
# every row
|
|
15675
|
-
#
|
|
15676
|
-
#
|
|
15682
|
+
# every row (the used figure and the limit) come from the provider; nothing
|
|
15683
|
+
# is filled in from published defaults, so an account with an approved
|
|
15684
|
+
# increase reads as having the headroom it has. This is a read over
|
|
15677
15685
|
# already-collected snapshots: no provider API calls are made here, and the
|
|
15678
15686
|
# readings are as fresh as the last collection pass (roughly six hours). A
|
|
15679
15687
|
# plugin that declares no quota capability contributes nothing rather than
|
|
15680
|
-
# zero
|
|
15688
|
+
# zero, see `unsupportedPluginIds`.
|
|
15681
15689
|
#
|
|
15682
15690
|
# _Requires permission: `resources:read`._
|
|
15683
15691
|
#
|
|
@@ -16039,10 +16047,10 @@ module Infrawrench
|
|
|
16039
16047
|
# Calls the plugin's `estimateCost` and returns a monthly total with the
|
|
16040
16048
|
# line items behind it. Price a proposed resource by passing `fields`, an
|
|
16041
16049
|
# existing one by passing `resourceId`, or a proposed change to an existing
|
|
16042
|
-
# one by passing both
|
|
16043
|
-
#
|
|
16044
|
-
#
|
|
16045
|
-
#
|
|
16050
|
+
# one by passing both; `fields` is merged over the resource's stored fields,
|
|
16051
|
+
# so the caller only sends what changed. `estimate` is null when the plugin
|
|
16052
|
+
# cannot price the configuration; that is not the same as an estimate of
|
|
16053
|
+
# zero, and it should not be rendered as one.
|
|
16046
16054
|
#
|
|
16047
16055
|
# _Requires permission: `resources:read`._
|
|
16048
16056
|
#
|
|
@@ -16101,7 +16109,7 @@ module Infrawrench
|
|
|
16101
16109
|
# Get the dynamic create form for a resource type
|
|
16102
16110
|
#
|
|
16103
16111
|
# Calls the plugin's `getCreateConfig`. The returned `CreateResourceConfig`
|
|
16104
|
-
# is plugin-shaped
|
|
16112
|
+
# is plugin-shaped, see `JsonObject`.
|
|
16105
16113
|
#
|
|
16106
16114
|
# _Requires permission: `resources:write`._
|
|
16107
16115
|
#
|
|
@@ -16607,7 +16615,7 @@ module Infrawrench
|
|
|
16607
16615
|
# create form's size options, live-priced). Each recommendation names the
|
|
16608
16616
|
# cheapest smaller size that still clears a headroom margin and quotes the
|
|
16609
16617
|
# monthly saving. Apply one by submitting `sizeFieldKey` with the
|
|
16610
|
-
# recommended size id through the resource-update endpoint
|
|
16618
|
+
# recommended size id through the resource-update endpoint; which enforces
|
|
16611
16619
|
# change freezes and writes the audit trail. Results are cached for a few
|
|
16612
16620
|
# minutes; pass `refresh=true` to recompute.
|
|
16613
16621
|
#
|
|
@@ -16742,8 +16750,8 @@ module Infrawrench
|
|
|
16742
16750
|
# Close a run out
|
|
16743
16751
|
#
|
|
16744
16752
|
# Closing does **not** settle outstanding steps. A run completed with three
|
|
16745
|
-
# steps still pending is a true and useful record
|
|
16746
|
-
# ended before the checklist did
|
|
16753
|
+
# steps still pending is a true and useful record (it says the incident
|
|
16754
|
+
# ended before the checklist did) and quietly marking them done would erase
|
|
16747
16755
|
# the one thing a postmortem wants to know.
|
|
16748
16756
|
#
|
|
16749
16757
|
# POST /api/org/{orgId}/runbooks/runs/{runId}/close
|
|
@@ -16779,7 +16787,7 @@ module Infrawrench
|
|
|
16779
16787
|
# Takes `resources:read`, like ticking a step: performing a checklist is not
|
|
16780
16788
|
# an act of configuration, and requiring an admin mid-incident is how a team
|
|
16781
16789
|
# stops using it. Deliberately not deduplicated against a run already in
|
|
16782
|
-
# progress
|
|
16790
|
+
# progress; performing the failover twice in one incident is a real thing,
|
|
16783
16791
|
# and refusing the second would mean it goes unrecorded rather than not
|
|
16784
16792
|
# happening.
|
|
16785
16793
|
#
|
|
@@ -16871,7 +16879,7 @@ module Infrawrench
|
|
|
16871
16879
|
|
|
16872
16880
|
# Write a runbook
|
|
16873
16881
|
#
|
|
16874
|
-
# Editing takes `org:settings:write
|
|
16882
|
+
# Editing takes `org:settings:write`: a procedure is an org-wide statement
|
|
16875
16883
|
# about how something is done, and it is read by strangers under pressure.
|
|
16876
16884
|
# Names are unique within an organization: two runbooks called "Failover" is
|
|
16877
16885
|
# how the wrong one gets run.
|
|
@@ -16966,7 +16974,7 @@ module Infrawrench
|
|
|
16966
16974
|
|
|
16967
16975
|
# Create a saved cost filter
|
|
16968
16976
|
#
|
|
16969
|
-
# Names must be unique per organization (case-insensitively)
|
|
16977
|
+
# Names must be unique per organization (case-insensitively); they are how
|
|
16970
16978
|
# the CLI's `--filter <name>` and humans address the filter. A name
|
|
16971
16979
|
# collision is a 409.
|
|
16972
16980
|
#
|
|
@@ -16996,7 +17004,7 @@ module Infrawrench
|
|
|
16996
17004
|
|
|
16997
17005
|
# Delete a saved cost filter
|
|
16998
17006
|
#
|
|
16999
|
-
# Soft delete
|
|
17007
|
+
# Soft delete: **refused with a 409 while anything references the filter**,
|
|
17000
17008
|
# with the referents in the body. Deleting a referenced filter would
|
|
17001
17009
|
# silently widen every referent's scope to all spend; for a budget that can
|
|
17002
17010
|
# fire or suppress alerts, so detaching the referents is a deliberate step,
|
|
@@ -17008,7 +17016,7 @@ module Infrawrench
|
|
|
17008
17016
|
#
|
|
17009
17017
|
# Raises on 404: Not found
|
|
17010
17018
|
#
|
|
17011
|
-
# Raises on 409: Still referenced
|
|
17019
|
+
# Raises on 409: Still referenced: the body lists every referent.
|
|
17012
17020
|
#
|
|
17013
17021
|
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
17014
17022
|
# constructed with.
|
|
@@ -17052,7 +17060,7 @@ module Infrawrench
|
|
|
17052
17060
|
#
|
|
17053
17061
|
# Named, reusable cost filter sets. Graphs, reports and budgets reference
|
|
17054
17062
|
# one **by id** (`savedFilterId` in their configs and in `POST
|
|
17055
|
-
# /costs/query`), and the server resolves the reference at query time
|
|
17063
|
+
# /costs/query`), and the server resolves the reference at query time; so
|
|
17056
17064
|
# editing a saved filter changes every referent at once, and nothing ever
|
|
17057
17065
|
# holds a copy.
|
|
17058
17066
|
#
|
|
@@ -17077,8 +17085,9 @@ module Infrawrench
|
|
|
17077
17085
|
|
|
17078
17086
|
# List a saved filter's referents
|
|
17079
17087
|
#
|
|
17080
|
-
# Every budget, cost report and dashboard cost graph referencing this
|
|
17081
|
-
#
|
|
17088
|
+
# Every budget, cost report and dashboard cost graph referencing this
|
|
17089
|
+
# filter; what an edit will re-scope, and what a delete would be refused
|
|
17090
|
+
# over.
|
|
17082
17091
|
#
|
|
17083
17092
|
# _Requires permission: `costs:read`._
|
|
17084
17093
|
#
|
|
@@ -17105,7 +17114,7 @@ module Infrawrench
|
|
|
17105
17114
|
#
|
|
17106
17115
|
# Replaces the filter's name, description and terms. This is the
|
|
17107
17116
|
# high-leverage write: every graph, report and budget referencing the filter
|
|
17108
|
-
# runs the new terms on its next query
|
|
17117
|
+
# runs the new terms on its next query: re-scoping a referenced budget can
|
|
17109
17118
|
# change which alerts fire. `GET /{id}/referents` names what a change will
|
|
17110
17119
|
# touch.
|
|
17111
17120
|
#
|
|
@@ -17591,7 +17600,7 @@ module Infrawrench
|
|
|
17591
17600
|
|
|
17592
17601
|
# Update the recording policy
|
|
17593
17602
|
#
|
|
17594
|
-
# Partial update
|
|
17603
|
+
# Partial update: omitted fields keep their current value. Recording is
|
|
17595
17604
|
# opt-in and off by default. Audit-logged with the before/after policy.
|
|
17596
17605
|
#
|
|
17597
17606
|
# _Requires permission: `session-recordings:write`._
|
|
@@ -17635,7 +17644,7 @@ module Infrawrench
|
|
|
17635
17644
|
# The session as an [asciicast
|
|
17636
17645
|
# v2](https://docs.asciinema.org/manual/asciicast/v2/) document: a JSON
|
|
17637
17646
|
# header line followed by one `[time, code, data]` event per line.
|
|
17638
|
-
# Deliberately somebody else's format
|
|
17647
|
+
# Deliberately somebody else's format; the same bytes play in `asciinema
|
|
17639
17648
|
# play` and in the reference web player, so a recording is useful to an
|
|
17640
17649
|
# auditor who has never seen this product. `?download=1` returns it as an
|
|
17641
17650
|
# attachment. **Every fetch is audit-logged**, including this one: an
|
|
@@ -17716,7 +17725,7 @@ module Infrawrench
|
|
|
17716
17725
|
# List recorded SSH sessions
|
|
17717
17726
|
#
|
|
17718
17727
|
# Recorded sessions, newest first. Only SSH opened through the cloud is
|
|
17719
|
-
# recorded
|
|
17728
|
+
# recorded; those sessions are already proxied by the server, so recording
|
|
17720
17729
|
# tees a stream it holds rather than requiring an agent on the host. A
|
|
17721
17730
|
# desktop session that dials a host directly never reaches the server and
|
|
17722
17731
|
# cannot appear here.
|
|
@@ -17730,7 +17739,7 @@ module Infrawrench
|
|
|
17730
17739
|
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
17731
17740
|
# constructed with.
|
|
17732
17741
|
# @param status [String, nil] `recording` (live), `complete` (closed cleanly), `truncated`
|
|
17733
|
-
# (hit the per-session capture ceiling
|
|
17742
|
+
# (hit the per-session capture ceiling: the tape is a genuine partial and says so), or
|
|
17734
17743
|
# `abandoned` (the server handling the session went away before it could close the row).
|
|
17735
17744
|
# @param user_id [String, nil]
|
|
17736
17745
|
# @param resource_id [String, nil]
|
|
@@ -18006,7 +18015,7 @@ module Infrawrench
|
|
|
18006
18015
|
#
|
|
18007
18016
|
# What the join screen shows before anyone commits: which host, whose
|
|
18008
18017
|
# session, and whether you may join it. Reachable with a valid token by a
|
|
18009
|
-
# signed-in member who already holds `resources:execute
|
|
18018
|
+
# signed-in member who already holds `resources:execute`: the token says
|
|
18010
18019
|
# *which* session, never *whether*. Returns nothing from the session itself.
|
|
18011
18020
|
#
|
|
18012
18021
|
# _Requires permission: `resources:execute`._
|
|
@@ -18045,7 +18054,7 @@ module Infrawrench
|
|
|
18045
18054
|
# Their socket is closed immediately on the replica holding the pty, and
|
|
18046
18055
|
# within one two-second sweep on any other. They are marked `removed` rather
|
|
18047
18056
|
# than `left`, so they cannot resume without a fresh invite. The sharer
|
|
18048
|
-
# cannot be removed
|
|
18057
|
+
# cannot be removed, revoke the share.
|
|
18049
18058
|
#
|
|
18050
18059
|
# DELETE
|
|
18051
18060
|
# /api/org/{orgId}/shared-consoles/{consoleId}/participants/{participantId}
|
|
@@ -18099,12 +18108,12 @@ module Infrawrench
|
|
|
18099
18108
|
# invite. You become the driver.
|
|
18100
18109
|
#
|
|
18101
18110
|
# Returns 409 `console_not_here` when the pty is held by a different server
|
|
18102
|
-
# replica than the one answering this call
|
|
18111
|
+
# replica than the one answering this call; reopen the terminal and share
|
|
18103
18112
|
# again. Writing the share anyway would produce a link that authorises
|
|
18104
18113
|
# correctly and then finds nothing to attach to.
|
|
18105
18114
|
#
|
|
18106
|
-
# Requires `resources:execute
|
|
18107
|
-
#
|
|
18115
|
+
# Requires `resources:execute`: the same permission as opening the terminal.
|
|
18116
|
+
# Closed to API keys: sharing a shell is an act a person performs.
|
|
18108
18117
|
#
|
|
18109
18118
|
# _Requires permission: `resources:execute`._
|
|
18110
18119
|
#
|
|
@@ -18136,7 +18145,7 @@ module Infrawrench
|
|
|
18136
18145
|
# Revoke a share
|
|
18137
18146
|
#
|
|
18138
18147
|
# Disconnects every guest and stops the fan-out. The sharer's own SSH
|
|
18139
|
-
# session carries on
|
|
18148
|
+
# session carries on : revoking a share is not killing a terminal.
|
|
18140
18149
|
#
|
|
18141
18150
|
# The sharer or a holder of `org:settings:write`. Deliberately does **not**
|
|
18142
18151
|
# require `resources:execute`: ending access must never be gated on still
|
|
@@ -18167,7 +18176,7 @@ module Infrawrench
|
|
|
18167
18176
|
# Get one shared console
|
|
18168
18177
|
#
|
|
18169
18178
|
# Visible to participants and to anyone who could revoke it (the sharer, or
|
|
18170
|
-
# a holder of `org:settings:write`). Others get 404
|
|
18179
|
+
# a holder of `org:settings:write`). Others get 404: that a named colleague
|
|
18171
18180
|
# has a root shell open on a named production host right now is operational
|
|
18172
18181
|
# information.
|
|
18173
18182
|
#
|
|
@@ -18198,7 +18207,7 @@ module Infrawrench
|
|
|
18198
18207
|
# Authorised by the **current driver** (the keyboard is theirs to give) or
|
|
18199
18208
|
# by the **sharer** (it is their box, and asking permission from somebody
|
|
18200
18209
|
# who has stopped responding is not a control). An observer cannot promote
|
|
18201
|
-
# themselves
|
|
18210
|
+
# themselves; that is `/request-driver`.
|
|
18202
18211
|
#
|
|
18203
18212
|
# Two simultaneous grants cannot both win: the database's partial unique
|
|
18204
18213
|
# index decides the order, and the loser gets 409 `driver-race-lost`.
|
|
@@ -18237,7 +18246,7 @@ module Infrawrench
|
|
|
18237
18246
|
|
|
18238
18247
|
# Redeem an invite and join
|
|
18239
18248
|
#
|
|
18240
|
-
# Admission needs live org membership **and** `resources:execute
|
|
18249
|
+
# Admission needs live org membership **and** `resources:execute`: the
|
|
18241
18250
|
# invite is a locator, never a capability, so a leaked link admits nobody
|
|
18242
18251
|
# who could not have opened the shell themselves.
|
|
18243
18252
|
#
|
|
@@ -18335,8 +18344,8 @@ module Infrawrench
|
|
|
18335
18344
|
|
|
18336
18345
|
# Ask for the keyboard
|
|
18337
18346
|
#
|
|
18338
|
-
# Raises a flag the driver and the sharer can see. Grants nothing on its
|
|
18339
|
-
#
|
|
18347
|
+
# Raises a flag the driver and the sharer can see. Grants nothing on its
|
|
18348
|
+
# own; that is the point.
|
|
18340
18349
|
#
|
|
18341
18350
|
# _Requires permission: `resources:execute`._
|
|
18342
18351
|
#
|
|
@@ -18665,7 +18674,7 @@ module Infrawrench
|
|
|
18665
18674
|
|
|
18666
18675
|
# Post a test message to every configured channel
|
|
18667
18676
|
#
|
|
18668
|
-
# Ignores routing rules
|
|
18677
|
+
# Ignores routing rules; every channel gets the test. Fails with the Slack
|
|
18669
18678
|
# error when nothing could be delivered (`not_in_channel` means the bot
|
|
18670
18679
|
# needs inviting to a private channel).
|
|
18671
18680
|
#
|
|
@@ -19065,7 +19074,7 @@ module Infrawrench
|
|
|
19065
19074
|
#
|
|
19066
19075
|
# Signs one publickey-authentication challenge with a server-generated org
|
|
19067
19076
|
# key whose private half never leaves Infrawrench Cloud. Requires the
|
|
19068
|
-
# `resources:execute` permission
|
|
19077
|
+
# `resources:execute` permission: producing an auth signature is the same
|
|
19069
19078
|
# authority as opening a shell. Imported keys cannot sign (only their public
|
|
19070
19079
|
# half is stored). Every call is audited.
|
|
19071
19080
|
#
|
|
@@ -19235,7 +19244,7 @@ module Infrawrench
|
|
|
19235
19244
|
# Read a public status page
|
|
19236
19245
|
#
|
|
19237
19246
|
# **Unauthenticated.** The only endpoint in this API that takes no
|
|
19238
|
-
# credentials
|
|
19247
|
+
# credentials; a status page exists for people with no account. The payload
|
|
19239
19248
|
# carries labels, states and uptime history only: probe URLs, resource and
|
|
19240
19249
|
# account ids, the organization id and error detail are never included. An
|
|
19241
19250
|
# unpublished page and an unknown slug both answer 404, so the endpoint
|
|
@@ -19270,7 +19279,7 @@ module Infrawrench
|
|
|
19270
19279
|
# Provider incidents overlapping your resources
|
|
19271
19280
|
#
|
|
19272
19281
|
# The "is it me or is it them?" feed. The poller watches each provider
|
|
19273
|
-
# plugin's public status feed (declared on its manifest
|
|
19282
|
+
# plugin's public status feed (declared on its manifest; zero credentials,
|
|
19274
19283
|
# zero rate-limit risk), caches active incidents, and this endpoint
|
|
19275
19284
|
# correlates them against the resources the organization holds: an incident
|
|
19276
19285
|
# matches a resource when it is provider-wide, names the resource's region,
|
|
@@ -19311,7 +19320,7 @@ module Infrawrench
|
|
|
19311
19320
|
# Create a status page
|
|
19312
19321
|
#
|
|
19313
19322
|
# Creates a page with a freshly generated slug. `published` defaults to
|
|
19314
|
-
# false, so creating a page never exposes anything
|
|
19323
|
+
# false, so creating a page never exposes anything; publish it as a
|
|
19315
19324
|
# separate, deliberate step.
|
|
19316
19325
|
#
|
|
19317
19326
|
# _Requires permission: `resources:write`._
|
|
@@ -19390,9 +19399,8 @@ module Infrawrench
|
|
|
19390
19399
|
|
|
19391
19400
|
# Issue a new public link
|
|
19392
19401
|
#
|
|
19393
|
-
# Replaces the slug, revoking the current public URL immediately
|
|
19394
|
-
#
|
|
19395
|
-
# published.
|
|
19402
|
+
# Replaces the slug, revoking the current public URL immediately; the reroll
|
|
19403
|
+
# for a link that ended up somewhere unintended. The page stays published.
|
|
19396
19404
|
#
|
|
19397
19405
|
# _Requires permission: `resources:write`._
|
|
19398
19406
|
#
|
|
@@ -19418,7 +19426,7 @@ module Infrawrench
|
|
|
19418
19426
|
# Update a status page
|
|
19419
19427
|
#
|
|
19420
19428
|
# Omitted fields keep their value. `components`, when present, replaces the
|
|
19421
|
-
# whole ordered set
|
|
19429
|
+
# whole ordered set: which is also how a reorder is expressed.
|
|
19422
19430
|
#
|
|
19423
19431
|
# _Requires permission: `resources:write`._
|
|
19424
19432
|
#
|
|
@@ -19788,7 +19796,7 @@ module Infrawrench
|
|
|
19788
19796
|
#
|
|
19789
19797
|
# POST /api/org/{orgId}/team/invitations
|
|
19790
19798
|
#
|
|
19791
|
-
# Raises on 402: Payment required
|
|
19799
|
+
# Raises on 402: Payment required: the organization's plan does not include
|
|
19792
19800
|
# this
|
|
19793
19801
|
#
|
|
19794
19802
|
# Raises on 403: The role would grant permissions the caller does not hold,
|
|
@@ -20311,13 +20319,13 @@ module Infrawrench
|
|
|
20311
20319
|
# A different reading of data the product already holds, built on one rule:
|
|
20312
20320
|
# a wallboard may only show things that are true **right now** and that
|
|
20313
20321
|
# somebody would cross a room to look at. There is deliberately no history,
|
|
20314
|
-
# no trend and no breakdown
|
|
20322
|
+
# no trend and no breakdown; those belong on the page you open when you do
|
|
20315
20323
|
# walk over.
|
|
20316
20324
|
#
|
|
20317
|
-
# Four sources
|
|
20318
|
-
# account sync health
|
|
20319
|
-
#
|
|
20320
|
-
#
|
|
20325
|
+
# Four sources (declared incidents, synthetic probes, query monitors and
|
|
20326
|
+
# account sync health) each guarded independently, because a television that
|
|
20327
|
+
# goes blank because one query threw is showing nothing to a room that was
|
|
20328
|
+
# relying on it.
|
|
20321
20329
|
#
|
|
20322
20330
|
# Session-authenticated on purpose: unlike the calendar feed or a public
|
|
20323
20331
|
# status page, this carries incident titles, probe names and account names,
|
|
@@ -20646,7 +20654,7 @@ module Infrawrench
|
|
|
20646
20654
|
#
|
|
20647
20655
|
# Sets the workflow's trigger to cron with the given expression and
|
|
20648
20656
|
# timezone, validating both, and computes the next fire time. The workflow
|
|
20649
|
-
# fires at the schedule's next occurrence
|
|
20657
|
+
# fires at the schedule's next occurrence; never immediately on save.
|
|
20650
20658
|
#
|
|
20651
20659
|
# Changing the schedule makes scheduled runs act with the permissions of the
|
|
20652
20660
|
# caller from then on, the same as editing the workflow's code. When the
|
|
@@ -20764,7 +20772,7 @@ module Infrawrench
|
|
|
20764
20772
|
# SSH key names, and the workflow's trigger + metrics. Default is the fast
|
|
20765
20773
|
# static surface (`create` fields are `Record<string, string>`). Pass
|
|
20766
20774
|
# `enrich=1` for a second pass that hits provider APIs for precise create()
|
|
20767
|
-
# field unions and live sidecar capability flags
|
|
20775
|
+
# field unions and live sidecar capability flags; the editor loads static
|
|
20768
20776
|
# first and upgrades when that finishes.
|
|
20769
20777
|
#
|
|
20770
20778
|
# _Requires permission: `workflows:read`._
|