infrawrench-sdk 1.15.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/infrawrench-sdk.gemspec +4 -4
- data/lib/infrawrench/client.rb +321 -2
- data/lib/infrawrench/sdk.rb +2 -2
- data/lib/infrawrench/transport.rb +2 -2
- data/lib/infrawrench/version.rb +3 -3
- data/lib/infrawrench-sdk.rb +2 -2
- data/sig/infrawrench/sdk.rbs +201 -3
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 359ea68464e3400d21793fcb623a2f4d3652d4438d0943d15d3a89ed08ba2d40
|
|
4
|
+
data.tar.gz: d85bcd64441a864f5cc4fa8433242a907fe169f89663e66dd8d81595d42fbe52
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e2ce4ad9fff0121b54795ee4185628084ae0d7832d9970633a3a0f82ca1f98787c098f17a326ca62b62f88452a4836555fe91abd77302be4ccf00ba45953e002
|
|
7
|
+
data.tar.gz: 8b216cbe55353f50c523ca02ed4e5c86db7a396f63313b629eed0a5747af7d8ec11640a018fab31a4a975537e38bdd5f6935ba3ad41b58aedf0342f62092ca77
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# infrawrench-sdk
|
|
2
2
|
|
|
3
|
-
Generated Ruby client for the Infrawrench API (API version `1.
|
|
3
|
+
Generated Ruby client for the Infrawrench API (API version `1.17.0`).
|
|
4
4
|
|
|
5
5
|
**Do not edit this gem by hand** — it is regenerated from `openapi.json` and is
|
|
6
6
|
not checked into the repository. Run
|
|
@@ -41,7 +41,7 @@ Every method takes an optional trailing `request_options:` hash (`:headers`,
|
|
|
41
41
|
Responses are the plain `Hash`/`Array` that `JSON.parse` returns, with String
|
|
42
42
|
keys spelled exactly as the wire spells them. There are no model classes — see
|
|
43
43
|
[`sig/infrawrench/sdk.rbs`](./sig/infrawrench/sdk.rbs) for the shape of every one of the
|
|
44
|
-
|
|
44
|
+
601 schemas, as RBS type aliases that steep and TypeProf can read.
|
|
45
45
|
|
|
46
46
|
Non-2xx responses raise `Infrawrench::ApiError`, which carries `#status`,
|
|
47
47
|
the parsed `#body`, and the machine-readable `#code` when the API sends one —
|
data/infrawrench-sdk.gemspec
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.17.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.17.0).
|
|
7
7
|
#
|
|
8
8
|
# DO NOT EDIT. Regenerate with:
|
|
9
9
|
# pnpm --filter @infrawrench/web generate:sdk
|
|
@@ -17,8 +17,8 @@ require_relative "lib/infrawrench/version"
|
|
|
17
17
|
Gem::Specification.new do |spec|
|
|
18
18
|
spec.name = "infrawrench-sdk"
|
|
19
19
|
spec.version = Infrawrench::VERSION
|
|
20
|
-
spec.summary = "Generated Ruby client for the Infrawrench API (v1.
|
|
21
|
-
spec.description = "Generated Ruby client for the Infrawrench API (v1.
|
|
20
|
+
spec.summary = "Generated Ruby client for the Infrawrench API (v1.17.0)."
|
|
21
|
+
spec.description = "Generated Ruby client for the Infrawrench API (v1.17.0). Covers the published API surface only — operations marked x-internal in the spec are not generated. No runtime dependencies."
|
|
22
22
|
spec.authors = ["Infrawrench LLC", "Astrid Gealer"]
|
|
23
23
|
spec.email = ["astrid@infrawrench.com"]
|
|
24
24
|
spec.homepage = "https://infrawrench.com/docs/team-and-billing/client-sdks"
|
data/lib/infrawrench/client.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.17.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.17.0).
|
|
7
7
|
#
|
|
8
8
|
# DO NOT EDIT. Regenerate with:
|
|
9
9
|
# pnpm --filter @infrawrench/web generate:sdk
|
|
@@ -246,6 +246,173 @@ module Infrawrench
|
|
|
246
246
|
end
|
|
247
247
|
end
|
|
248
248
|
|
|
249
|
+
# `client.access_review.dismissals`
|
|
250
|
+
class AccessReviewDismissalsNamespace
|
|
251
|
+
# @api private
|
|
252
|
+
# @param transport [Transport]
|
|
253
|
+
def initialize(transport)
|
|
254
|
+
@transport = transport
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
# Dismiss an access review finding
|
|
258
|
+
#
|
|
259
|
+
# Accept a finding — that break-glass role really is meant to be admin, that
|
|
260
|
+
# shared key really is rotated out of band. The finding leaves `findings`
|
|
261
|
+
# and stops feeding the security alerts, but the rule keeps being evaluated
|
|
262
|
+
# and the finding is reported back under `dismissed` for as long as it still
|
|
263
|
+
# matches. The principal itself stays in `principals` either way.
|
|
264
|
+
# Idempotent: dismissing an already-dismissed finding rewrites the note and
|
|
265
|
+
# the author.
|
|
266
|
+
#
|
|
267
|
+
# _Requires permission: `resources:write`._
|
|
268
|
+
#
|
|
269
|
+
# POST /api/org/{orgId}/access-review/dismissals
|
|
270
|
+
#
|
|
271
|
+
# Raises on 400: Bad request
|
|
272
|
+
#
|
|
273
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
274
|
+
# constructed with.
|
|
275
|
+
# @param body [Hash, nil] Request body, shaped as `AccessReviewDismissalCreate`.
|
|
276
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
277
|
+
# @return [Hash] Parsed JSON, shaped as `AccessReviewDismissal` — see
|
|
278
|
+
# `sig/infrawrench/sdk.rbs`.
|
|
279
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
280
|
+
def create(org_id: nil, body: nil, request_options: nil)
|
|
281
|
+
@transport.request(
|
|
282
|
+
http_method: "POST",
|
|
283
|
+
path: "/api/org/{orgId}/access-review/dismissals",
|
|
284
|
+
path_params: { "orgId" => org_id },
|
|
285
|
+
body: body,
|
|
286
|
+
request_options: request_options
|
|
287
|
+
)
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
# Restore a dismissed access review finding
|
|
291
|
+
#
|
|
292
|
+
# Undo a dismissal, putting the finding back on the list and back into the
|
|
293
|
+
# security alerts. The finding is identified by query parameters rather than
|
|
294
|
+
# path segments because resource ids are provider-native and routinely
|
|
295
|
+
# contain slashes.
|
|
296
|
+
#
|
|
297
|
+
# _Requires permission: `resources:write`._
|
|
298
|
+
#
|
|
299
|
+
# DELETE /api/org/{orgId}/access-review/dismissals
|
|
300
|
+
#
|
|
301
|
+
# Raises on 400: Bad request
|
|
302
|
+
#
|
|
303
|
+
# Raises on 404: Not found
|
|
304
|
+
#
|
|
305
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
306
|
+
# constructed with.
|
|
307
|
+
# @param resource_id [String] Infrawrench resource id the finding is on.
|
|
308
|
+
# @param rule_id [String] Which rule was raised. Half of a dismissal's key, alongside the
|
|
309
|
+
# resource id. The `access-review:` prefix is reserved so these can share the posture
|
|
310
|
+
# dismissal store without colliding with plugin-declared posture rule ids.
|
|
311
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
312
|
+
# @return [nil] This endpoint returns no content.
|
|
313
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
314
|
+
def delete(resource_id:, rule_id:, org_id: nil, request_options: nil)
|
|
315
|
+
@transport.request(
|
|
316
|
+
http_method: "DELETE",
|
|
317
|
+
path: "/api/org/{orgId}/access-review/dismissals",
|
|
318
|
+
path_params: { "orgId" => org_id },
|
|
319
|
+
query: { "resourceId" => resource_id, "ruleId" => rule_id },
|
|
320
|
+
accept: :empty,
|
|
321
|
+
request_options: request_options
|
|
322
|
+
)
|
|
323
|
+
end
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
# `client.access_review`
|
|
327
|
+
class AccessReviewNamespace
|
|
328
|
+
# @return [AccessReviewDismissalsNamespace] `client.access_review.dismissals`
|
|
329
|
+
attr_reader :dismissals
|
|
330
|
+
|
|
331
|
+
# @api private
|
|
332
|
+
# @param transport [Transport]
|
|
333
|
+
def initialize(transport)
|
|
334
|
+
@transport = transport
|
|
335
|
+
@dismissals = AccessReviewDismissalsNamespace.new(@transport)
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
# Export the access review as compliance evidence
|
|
339
|
+
#
|
|
340
|
+
# The same review as a downloadable file, one row per finding. `format=csv`
|
|
341
|
+
# (the default) returns RFC 4180 CSV with every cell quoted and spreadsheet
|
|
342
|
+
# formulas neutralised; `format=json` returns the full response body
|
|
343
|
+
# pretty-printed.
|
|
344
|
+
#
|
|
345
|
+
# Dismissed findings are included and labelled in both formats, with the
|
|
346
|
+
# note and the person who accepted them: an evidence pack answers what you
|
|
347
|
+
# found *and* what you decided. Exports are recorded in the audit log.
|
|
348
|
+
#
|
|
349
|
+
# _Requires permission: `resources:read`._
|
|
350
|
+
#
|
|
351
|
+
# GET /api/org/{orgId}/access-review/export
|
|
352
|
+
#
|
|
353
|
+
# Raises on 400: Bad request
|
|
354
|
+
#
|
|
355
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
356
|
+
# constructed with.
|
|
357
|
+
# @param format [String, nil] Defaults to "csv".
|
|
358
|
+
# @param stale_days [Integer, nil] Staleness window in days. Defaults to 90.
|
|
359
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
360
|
+
# @return [Hash] Parsed JSON, shaped as `AccessReviewResponse` — see
|
|
361
|
+
# `sig/infrawrench/sdk.rbs`.
|
|
362
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
363
|
+
def export(org_id: nil, format: nil, stale_days: nil, request_options: nil)
|
|
364
|
+
@transport.request(
|
|
365
|
+
http_method: "GET",
|
|
366
|
+
path: "/api/org/{orgId}/access-review/export",
|
|
367
|
+
path_params: { "orgId" => org_id },
|
|
368
|
+
query: { "format" => format, "staleDays" => stale_days },
|
|
369
|
+
request_options: request_options
|
|
370
|
+
)
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
# Review the principals inside your connected clouds
|
|
374
|
+
#
|
|
375
|
+
# Every IAM user and role, service account, app registration, group, role
|
|
376
|
+
# binding and long-lived API key your connected accounts have synced, with
|
|
377
|
+
# the findings that have evidence against them: unused beyond the staleness
|
|
378
|
+
# window, holding administrative or wildcard permissions, past the rotation
|
|
379
|
+
# budget their plugin declares, carrying no recorded owner, or signing in
|
|
380
|
+
# without a second factor.
|
|
381
|
+
#
|
|
382
|
+
# This is about principals in **your** clouds — it is neither your
|
|
383
|
+
# Infrawrench team's roles (`/team`) nor the credentials Infrawrench stores
|
|
384
|
+
# for you (`/credential-hygiene`).
|
|
385
|
+
#
|
|
386
|
+
# No provider API calls are made: everything is computed from already-synced
|
|
387
|
+
# fields, so a principal whose provider does not report last use is reported
|
|
388
|
+
# with `activity: "unknown"` and is never called stale. Findings the
|
|
389
|
+
# organization has dismissed are reported separately under `dismissed` and
|
|
390
|
+
# are excluded from `findings`, `counts`, `byRule` and the security alerts.
|
|
391
|
+
#
|
|
392
|
+
# _Requires permission: `resources:read`._
|
|
393
|
+
#
|
|
394
|
+
# GET /api/org/{orgId}/access-review
|
|
395
|
+
#
|
|
396
|
+
# Raises on 400: Bad request
|
|
397
|
+
#
|
|
398
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
399
|
+
# constructed with.
|
|
400
|
+
# @param stale_days [Integer, nil] Staleness window in days. Defaults to 90.
|
|
401
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
402
|
+
# @return [Hash] Parsed JSON, shaped as `AccessReviewResponse` — see
|
|
403
|
+
# `sig/infrawrench/sdk.rbs`.
|
|
404
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
405
|
+
def get(org_id: nil, stale_days: nil, request_options: nil)
|
|
406
|
+
@transport.request(
|
|
407
|
+
http_method: "GET",
|
|
408
|
+
path: "/api/org/{orgId}/access-review",
|
|
409
|
+
path_params: { "orgId" => org_id },
|
|
410
|
+
query: { "staleDays" => stale_days },
|
|
411
|
+
request_options: request_options
|
|
412
|
+
)
|
|
413
|
+
end
|
|
414
|
+
end
|
|
415
|
+
|
|
249
416
|
# `client.accounts.credentials`
|
|
250
417
|
class AccountsCredentialsNamespace
|
|
251
418
|
# @api private
|
|
@@ -2404,16 +2571,165 @@ module Infrawrench
|
|
|
2404
2571
|
end
|
|
2405
2572
|
end
|
|
2406
2573
|
|
|
2574
|
+
# `client.changes.revert`
|
|
2575
|
+
class ChangesRevertNamespace
|
|
2576
|
+
# @api private
|
|
2577
|
+
# @param transport [Transport]
|
|
2578
|
+
def initialize(transport)
|
|
2579
|
+
@transport = transport
|
|
2580
|
+
end
|
|
2581
|
+
|
|
2582
|
+
# Revert one change event
|
|
2583
|
+
#
|
|
2584
|
+
# Applies the inverse patch through the plugin's ordinary `updateResource`
|
|
2585
|
+
# path — the same call the Edit form makes — and only for the fields the dry
|
|
2586
|
+
# run marked `revertible`.
|
|
2587
|
+
#
|
|
2588
|
+
# The plan is rebuilt against a fresh live read immediately before the
|
|
2589
|
+
# write, so a field that moved between the preview and the apply becomes a
|
|
2590
|
+
# conflict and drops out of the patch.
|
|
2591
|
+
#
|
|
2592
|
+
# **This is a last-moment re-read, not an atomic compare-and-swap.** The gap
|
|
2593
|
+
# between reading a field and writing it is one provider round-trip wide,
|
|
2594
|
+
# and a third party writing inside that gap will be overwritten without
|
|
2595
|
+
# warning. It cannot be closed generically: the plugin update contract
|
|
2596
|
+
# carries no expected value, ETag or version token, so no conditional write
|
|
2597
|
+
# can be expressed for a provider that supports one. Treat the conflict
|
|
2598
|
+
# detection as a strong guard against stale plans, not as a mutual-exclusion
|
|
2599
|
+
# guarantee against other writers.
|
|
2600
|
+
#
|
|
2601
|
+
# Reverts of the *same event* are mutually exclusive: the event is claimed
|
|
2602
|
+
# with a conditional update under a five-minute lease, so two concurrent
|
|
2603
|
+
# reverts cannot both reach the provider and the loser gets `409`. A
|
|
2604
|
+
# provider failure releases the claim immediately; a process that dies
|
|
2605
|
+
# mid-write leaves a claim that expires, so an interrupted revert is
|
|
2606
|
+
# retryable rather than permanently stuck. `revertedAt` is only set once the
|
|
2607
|
+
# provider accepted the write.
|
|
2608
|
+
#
|
|
2609
|
+
# The claim carries an owner token, and every write that ends a revert is
|
|
2610
|
+
# fenced on it. An attempt whose provider call outlives the lease can
|
|
2611
|
+
# therefore neither release nor complete the claim that replaced it — it
|
|
2612
|
+
# gets `409` with `appliedFields` naming what it did write, so the caller
|
|
2613
|
+
# can reconcile rather than assume. Two attempts can overlap in that case,
|
|
2614
|
+
# but they cannot disagree: both invert the same recorded event to the same
|
|
2615
|
+
# values, so the second one's patch is a subset of the first's.
|
|
2616
|
+
#
|
|
2617
|
+
# If a write reaches the provider but recording it fails, the response is
|
|
2618
|
+
# `500` with `appliedFields` — the resource moved and the timeline has not
|
|
2619
|
+
# caught up. The claim is deliberately held in that case, and the next
|
|
2620
|
+
# attempt after the lease expires finds every field already back and records
|
|
2621
|
+
# the revert without touching the provider again, answering `200` with
|
|
2622
|
+
# `reconciled: true` and an empty `appliedFields`. A resource put back by
|
|
2623
|
+
# hand is not mistaken for this: reconciliation only happens on an event
|
|
2624
|
+
# whose claim was still outstanding, which is the only state in which an
|
|
2625
|
+
# unrecorded write is possible.
|
|
2626
|
+
#
|
|
2627
|
+
# Blocked with `423` while an org change freeze is in effect. Every attempt
|
|
2628
|
+
# whose write reached the provider is audit-logged as
|
|
2629
|
+
# `resource.change_revert`, including one that lost its claim or could not
|
|
2630
|
+
# record — the entry's `outcome` is `recorded`, `superseded`, `unrecorded`
|
|
2631
|
+
# or `reconciled`, so a contested outcome reads as one mutation rather than
|
|
2632
|
+
# as several reverts. An attempt that neither wrote nor recorded anything
|
|
2633
|
+
# logs nothing. Attribution is best-effort: no transaction spans a
|
|
2634
|
+
# third-party cloud API and Infrawrench's database, so if the audit insert
|
|
2635
|
+
# itself fails the response carries `auditRecorded: false` and the details
|
|
2636
|
+
# go to the server log rather than being silently dropped.
|
|
2637
|
+
#
|
|
2638
|
+
# The stored resource snapshot is deliberately left untouched, so the next
|
|
2639
|
+
# poll observes the reverted state and records it as an ordinary change
|
|
2640
|
+
# event.
|
|
2641
|
+
#
|
|
2642
|
+
# POST /api/org/{orgId}/changes/{changeId}/revert
|
|
2643
|
+
#
|
|
2644
|
+
# Raises on 400: Bad request
|
|
2645
|
+
#
|
|
2646
|
+
# Raises on 404: Not found
|
|
2647
|
+
#
|
|
2648
|
+
# Raises on 409: Already reverted, another revert holds the event, nothing
|
|
2649
|
+
# in the plan is writable, or this attempt was superseded mid-write (its
|
|
2650
|
+
# lease lapsed). The body carries `code: change_revert_conflict` for all but
|
|
2651
|
+
# the writability case, and `appliedFields` when the provider write had
|
|
2652
|
+
# already landed.
|
|
2653
|
+
#
|
|
2654
|
+
# Raises on 423: Blocked by an active change freeze. Retry with the
|
|
2655
|
+
# `x-change-freeze-override: true` header if you hold `freezes:override`;
|
|
2656
|
+
# both blocks and overrides are audit-logged.
|
|
2657
|
+
#
|
|
2658
|
+
# Raises on 500: The provider accepted the write but it could not be
|
|
2659
|
+
# recorded against the event. The resource *has* been put back;
|
|
2660
|
+
# `appliedFields` names what changed. A later retry reconciles the timeline.
|
|
2661
|
+
#
|
|
2662
|
+
# Raises on 502: The provider couldn't be read. Nothing was written.
|
|
2663
|
+
#
|
|
2664
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
2665
|
+
# constructed with.
|
|
2666
|
+
# @param change_id [String]
|
|
2667
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
2668
|
+
# @return [Hash] Parsed JSON, shaped as `RevertApplyResponse` — see
|
|
2669
|
+
# `sig/infrawrench/sdk.rbs`.
|
|
2670
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
2671
|
+
def create(change_id:, org_id: nil, request_options: nil)
|
|
2672
|
+
@transport.request(
|
|
2673
|
+
http_method: "POST",
|
|
2674
|
+
path: "/api/org/{orgId}/changes/{changeId}/revert",
|
|
2675
|
+
path_params: { "orgId" => org_id, "changeId" => change_id },
|
|
2676
|
+
request_options: request_options
|
|
2677
|
+
)
|
|
2678
|
+
end
|
|
2679
|
+
|
|
2680
|
+
# Dry-run a revert of one change event
|
|
2681
|
+
#
|
|
2682
|
+
# Inverts the recorded diff and reconciles it against the resource's
|
|
2683
|
+
# *current* live fields, which is the whole point: the poller may have
|
|
2684
|
+
# recorded this hours ago and the world may have moved on. Read-only — it
|
|
2685
|
+
# reads from the provider and writes nothing.
|
|
2686
|
+
#
|
|
2687
|
+
# Only `updated` events with a field diff can be reverted. `outputs.*`
|
|
2688
|
+
# entries are provider-derived and are never written back, and whether a
|
|
2689
|
+
# field is writable at all is the plugin's own edit-form rule (`editable`,
|
|
2690
|
+
# minus `secret` and `association` kinds), so a revert can never issue a
|
|
2691
|
+
# provider call an edit could not.
|
|
2692
|
+
#
|
|
2693
|
+
# Gated on `resources:write` rather than `resources:read`: the plan names
|
|
2694
|
+
# the write it is offering to make.
|
|
2695
|
+
#
|
|
2696
|
+
# GET /api/org/{orgId}/changes/{changeId}/revert
|
|
2697
|
+
#
|
|
2698
|
+
# Raises on 404: Not found
|
|
2699
|
+
#
|
|
2700
|
+
# Raises on 502: The provider couldn't be read, so no plan can be made
|
|
2701
|
+
# safely. Nothing was written.
|
|
2702
|
+
#
|
|
2703
|
+
# @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
|
|
2704
|
+
# constructed with.
|
|
2705
|
+
# @param change_id [String]
|
|
2706
|
+
# @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
|
|
2707
|
+
# @return [Hash] Parsed JSON, shaped as `RevertPreviewResponse` — see
|
|
2708
|
+
# `sig/infrawrench/sdk.rbs`.
|
|
2709
|
+
# @raise [Infrawrench::ApiError] On any non-2xx response.
|
|
2710
|
+
def get(change_id:, org_id: nil, request_options: nil)
|
|
2711
|
+
@transport.request(
|
|
2712
|
+
http_method: "GET",
|
|
2713
|
+
path: "/api/org/{orgId}/changes/{changeId}/revert",
|
|
2714
|
+
path_params: { "orgId" => org_id, "changeId" => change_id },
|
|
2715
|
+
request_options: request_options
|
|
2716
|
+
)
|
|
2717
|
+
end
|
|
2718
|
+
end
|
|
2719
|
+
|
|
2407
2720
|
# `client.changes`
|
|
2408
2721
|
class ChangesNamespace
|
|
2409
2722
|
# @return [ChangesAlertSettingsNamespace] `client.changes.alert_settings`
|
|
2410
2723
|
attr_reader :alert_settings
|
|
2724
|
+
# @return [ChangesRevertNamespace] `client.changes.revert`
|
|
2725
|
+
attr_reader :revert
|
|
2411
2726
|
|
|
2412
2727
|
# @api private
|
|
2413
2728
|
# @param transport [Transport]
|
|
2414
2729
|
def initialize(transport)
|
|
2415
2730
|
@transport = transport
|
|
2416
2731
|
@alert_settings = ChangesAlertSettingsNamespace.new(@transport)
|
|
2732
|
+
@revert = ChangesRevertNamespace.new(@transport)
|
|
2417
2733
|
end
|
|
2418
2734
|
|
|
2419
2735
|
# Org-wide change timeline (paginated, filterable)
|
|
@@ -13552,6 +13868,8 @@ module Infrawrench
|
|
|
13552
13868
|
attr_reader :transport
|
|
13553
13869
|
# @return [AccessRequestsNamespace] `client.access_requests`
|
|
13554
13870
|
attr_reader :access_requests
|
|
13871
|
+
# @return [AccessReviewNamespace] `client.access_review`
|
|
13872
|
+
attr_reader :access_review
|
|
13555
13873
|
# @return [AccountsNamespace] `client.accounts`
|
|
13556
13874
|
attr_reader :accounts
|
|
13557
13875
|
# @return [AgentsNamespace] `client.agents`
|
|
@@ -13723,6 +14041,7 @@ module Infrawrench
|
|
|
13723
14041
|
def initialize(**options)
|
|
13724
14042
|
@transport = Transport.new(**options)
|
|
13725
14043
|
@access_requests = AccessRequestsNamespace.new(@transport)
|
|
14044
|
+
@access_review = AccessReviewNamespace.new(@transport)
|
|
13726
14045
|
@accounts = AccountsNamespace.new(@transport)
|
|
13727
14046
|
@agents = AgentsNamespace.new(@transport)
|
|
13728
14047
|
@alert_rules = AlertRulesNamespace.new(@transport)
|
data/lib/infrawrench/sdk.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.17.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.17.0).
|
|
7
7
|
#
|
|
8
8
|
# DO NOT EDIT. Regenerate with:
|
|
9
9
|
# pnpm --filter @infrawrench/web generate:sdk
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.17.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.17.0).
|
|
7
7
|
#
|
|
8
8
|
# DO NOT EDIT. Regenerate with:
|
|
9
9
|
# pnpm --filter @infrawrench/web generate:sdk
|
data/lib/infrawrench/version.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.17.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.17.0).
|
|
7
7
|
#
|
|
8
8
|
# DO NOT EDIT. Regenerate with:
|
|
9
9
|
# pnpm --filter @infrawrench/web generate:sdk
|
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
# Kept in its own file so the gemspec can read the version without loading the
|
|
16
16
|
# client — a gemspec that pulls in net/http is a gemspec that can fail to parse.
|
|
17
17
|
module Infrawrench
|
|
18
|
-
VERSION = "1.
|
|
18
|
+
VERSION = "1.17.0"
|
|
19
19
|
end
|
data/lib/infrawrench-sdk.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# infrawrench-sdk v1.
|
|
3
|
+
# infrawrench-sdk v1.17.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.17.0).
|
|
7
7
|
#
|
|
8
8
|
# DO NOT EDIT. Regenerate with:
|
|
9
9
|
# pnpm --filter @infrawrench/web generate:sdk
|
data/sig/infrawrench/sdk.rbs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# infrawrench-sdk v1.
|
|
1
|
+
# infrawrench-sdk v1.17.0 | MIT | Copyright (c) 2026 Infrawrench LLC
|
|
2
2
|
# https://github.com/Infrawrench/Infrawrench
|
|
3
3
|
#
|
|
4
|
-
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.
|
|
4
|
+
# Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.17.0).
|
|
5
5
|
#
|
|
6
6
|
# DO NOT EDIT. Regenerate with:
|
|
7
7
|
# pnpm --filter @infrawrench/web generate:sdk
|
|
@@ -104,6 +104,57 @@ module Infrawrench
|
|
|
104
104
|
?"missing" => Array[String]
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
# Spec schema: `AccessFinding`.
|
|
108
|
+
type access_finding = {
|
|
109
|
+
"resourceId" => String,
|
|
110
|
+
"ruleId" => "access-review:stale-principal"
|
|
111
|
+
| "access-review:admin-principal"
|
|
112
|
+
| "access-review:key-past-rotation"
|
|
113
|
+
| "access-review:no-recorded-owner"
|
|
114
|
+
| "access-review:no-mfa",
|
|
115
|
+
"title" => String,
|
|
116
|
+
"severity" => "critical" | "high" | "medium" | "low",
|
|
117
|
+
"reason" => String,
|
|
118
|
+
"principal" => access_principal
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
# Spec schema: `AccessPrincipal`.
|
|
122
|
+
type access_principal = {
|
|
123
|
+
"resourceId" => String,
|
|
124
|
+
"pluginId" => plugin_id,
|
|
125
|
+
"pluginName" => String,
|
|
126
|
+
"resourceTypeId" => String,
|
|
127
|
+
"resourceTypeName" => String,
|
|
128
|
+
"accountId" => String,
|
|
129
|
+
"accountName" => String,
|
|
130
|
+
"displayName" => String,
|
|
131
|
+
"externalId" => String | nil,
|
|
132
|
+
"role" => "user" | "group" | "role" | "service-account" | "key" | "binding",
|
|
133
|
+
"lastUsedAt" => String | nil,
|
|
134
|
+
"daysSinceLastUsed" => Integer | nil,
|
|
135
|
+
"activity" => "active" | "stale" | "unknown",
|
|
136
|
+
"createdAt" => String | nil,
|
|
137
|
+
"ageDays" => Integer | nil,
|
|
138
|
+
"admin" => bool | nil,
|
|
139
|
+
"mfa" => bool | nil,
|
|
140
|
+
"parent" => String | nil,
|
|
141
|
+
"owner" => access_principal_owner,
|
|
142
|
+
"revokeActionId" => String | nil
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
# Who owns the resource, from the resource-ownership record. Null when nobody
|
|
146
|
+
# is named.
|
|
147
|
+
#
|
|
148
|
+
# Spec schema: `AccessPrincipalOwner`.
|
|
149
|
+
type access_principal_owner = {
|
|
150
|
+
"userId" => String | nil,
|
|
151
|
+
"displayName" => String,
|
|
152
|
+
"isLabel" => bool,
|
|
153
|
+
"ticketUrl" => String | nil,
|
|
154
|
+
"purpose" => String | nil
|
|
155
|
+
}
|
|
156
|
+
| nil
|
|
157
|
+
|
|
107
158
|
# Spec schema: `AccessRequest`.
|
|
108
159
|
type access_request = {
|
|
109
160
|
"id" => String,
|
|
@@ -137,6 +188,63 @@ module Infrawrench
|
|
|
137
188
|
# Spec schema: `AccessRequestCreate`.
|
|
138
189
|
type access_request_create = { "permissions" => Array[String], "reason" => String, "durationMinutes" => Integer }
|
|
139
190
|
|
|
191
|
+
# Spec schema: `AccessReviewDismissal`.
|
|
192
|
+
type access_review_dismissal = {
|
|
193
|
+
"resourceId" => String,
|
|
194
|
+
"ruleId" => String,
|
|
195
|
+
"dismissedAt" => String,
|
|
196
|
+
"dismissedBy" => String | nil,
|
|
197
|
+
"reason" => String | nil
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
# Spec schema: `AccessReviewDismissalCreate`.
|
|
201
|
+
type access_review_dismissal_create = {
|
|
202
|
+
"resourceId" => String,
|
|
203
|
+
"ruleId" => "access-review:stale-principal"
|
|
204
|
+
| "access-review:admin-principal"
|
|
205
|
+
| "access-review:key-past-rotation"
|
|
206
|
+
| "access-review:no-recorded-owner"
|
|
207
|
+
| "access-review:no-mfa",
|
|
208
|
+
?"reason" => String | nil
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
# Spec schema: `AccessReviewResponse`.
|
|
212
|
+
type access_review_response = {
|
|
213
|
+
"principals" => Array[access_principal],
|
|
214
|
+
"findings" => Array[access_finding],
|
|
215
|
+
"totalCount" => Integer,
|
|
216
|
+
"counts" => access_review_severity_counts,
|
|
217
|
+
"byRule" => access_review_rule_counts,
|
|
218
|
+
"byRole" => access_review_role_counts,
|
|
219
|
+
"dismissed" => Array[dismissed_access_finding],
|
|
220
|
+
"dismissedCount" => Integer,
|
|
221
|
+
"unknownActivityCount" => Integer,
|
|
222
|
+
"staleDays" => Integer,
|
|
223
|
+
"generatedAt" => String
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
# Spec schema: `AccessReviewRoleCounts`.
|
|
227
|
+
type access_review_role_counts = {
|
|
228
|
+
"user" => Integer,
|
|
229
|
+
"group" => Integer,
|
|
230
|
+
"role" => Integer,
|
|
231
|
+
"service-account" => Integer,
|
|
232
|
+
"key" => Integer,
|
|
233
|
+
"binding" => Integer
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
# Spec schema: `AccessReviewRuleCounts`.
|
|
237
|
+
type access_review_rule_counts = {
|
|
238
|
+
"access-review:stale-principal" => Integer,
|
|
239
|
+
"access-review:admin-principal" => Integer,
|
|
240
|
+
"access-review:key-past-rotation" => Integer,
|
|
241
|
+
"access-review:no-recorded-owner" => Integer,
|
|
242
|
+
"access-review:no-mfa" => Integer
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
# Spec schema: `AccessReviewSeverityCounts`.
|
|
246
|
+
type access_review_severity_counts = { "critical" => Integer, "high" => Integer, "medium" => Integer, "low" => Integer }
|
|
247
|
+
|
|
140
248
|
# Spec schema: `AccessRevokeConflict`.
|
|
141
249
|
type access_revoke_conflict = { "error" => String }
|
|
142
250
|
|
|
@@ -2178,6 +2286,21 @@ module Infrawrench
|
|
|
2178
2286
|
# Spec schema: `DigestTransportResult`.
|
|
2179
2287
|
type digest_transport_result = { "attempted" => Integer, "succeeded" => Integer }
|
|
2180
2288
|
|
|
2289
|
+
# Spec schema: `DismissedAccessFinding`.
|
|
2290
|
+
type dismissed_access_finding = {
|
|
2291
|
+
"resourceId" => String,
|
|
2292
|
+
"ruleId" => "access-review:stale-principal"
|
|
2293
|
+
| "access-review:admin-principal"
|
|
2294
|
+
| "access-review:key-past-rotation"
|
|
2295
|
+
| "access-review:no-recorded-owner"
|
|
2296
|
+
| "access-review:no-mfa",
|
|
2297
|
+
"title" => String,
|
|
2298
|
+
"severity" => "critical" | "high" | "medium" | "low",
|
|
2299
|
+
"reason" => String,
|
|
2300
|
+
"principal" => access_principal,
|
|
2301
|
+
"dismissal" => access_review_dismissal
|
|
2302
|
+
}
|
|
2303
|
+
|
|
2181
2304
|
# Spec schema: `DismissedPostureFinding`.
|
|
2182
2305
|
type dismissed_posture_finding = {
|
|
2183
2306
|
"resourceId" => String,
|
|
@@ -4479,7 +4602,8 @@ module Infrawrench
|
|
|
4479
4602
|
"changeKind" => resource_change_kind,
|
|
4480
4603
|
"diff" => Array[resource_field_change],
|
|
4481
4604
|
?"origin" => "schedule" | nil,
|
|
4482
|
-
"createdAt" => String
|
|
4605
|
+
"createdAt" => String,
|
|
4606
|
+
?"revertedAt" => String | nil
|
|
4483
4607
|
}
|
|
4484
4608
|
|
|
4485
4609
|
# Spec schema: `ResourceChangeFeedEntry`.
|
|
@@ -5043,6 +5167,58 @@ module Infrawrench
|
|
|
5043
5167
|
?"schedulable" => bool
|
|
5044
5168
|
}
|
|
5045
5169
|
|
|
5170
|
+
# Spec schema: `RevertApplyResponse`.
|
|
5171
|
+
type revert_apply_response = {
|
|
5172
|
+
"changeId" => String,
|
|
5173
|
+
"resourceId" => resource_id,
|
|
5174
|
+
"appliedFields" => Array[String],
|
|
5175
|
+
"plan" => revert_plan,
|
|
5176
|
+
"revertedAt" => String,
|
|
5177
|
+
?"reconciled" => bool,
|
|
5178
|
+
?"auditRecorded" => bool
|
|
5179
|
+
}
|
|
5180
|
+
|
|
5181
|
+
# Spec schema: `RevertFieldPlan`.
|
|
5182
|
+
type revert_field_plan = {
|
|
5183
|
+
"field" => String,
|
|
5184
|
+
?"revertTo" => untyped,
|
|
5185
|
+
?"changedTo" => untyped,
|
|
5186
|
+
?"current" => untyped,
|
|
5187
|
+
"status" => revert_field_status,
|
|
5188
|
+
"reason" => String
|
|
5189
|
+
}
|
|
5190
|
+
|
|
5191
|
+
# What a revert would do to one field. `revertible` — the field still holds
|
|
5192
|
+
# the value the change set, and the plugin's edit form can write the old one
|
|
5193
|
+
# back. `already-reverted` — it is already at the old value; nothing to do.
|
|
5194
|
+
# `conflict` — it changed again since, so reverting would discard the newer
|
|
5195
|
+
# value. `not-writable` — outside the plugin's editable surface, or the old
|
|
5196
|
+
# value is not something the edit form can submit. `provider-derived` — an
|
|
5197
|
+
# `outputs.*` entry, which the provider computes rather than accepts.
|
|
5198
|
+
#
|
|
5199
|
+
# Spec schema: `RevertFieldStatus`.
|
|
5200
|
+
type revert_field_status = "revertible" | "already-reverted" | "conflict" | "not-writable" | "provider-derived"
|
|
5201
|
+
|
|
5202
|
+
# Spec schema: `RevertPlan`.
|
|
5203
|
+
type revert_plan = {
|
|
5204
|
+
"fields" => Array[revert_field_plan],
|
|
5205
|
+
"revertibleFields" => Array[String],
|
|
5206
|
+
"revertible" => bool,
|
|
5207
|
+
"blockedReason" => String | nil
|
|
5208
|
+
}
|
|
5209
|
+
|
|
5210
|
+
# Spec schema: `RevertPreviewResponse`.
|
|
5211
|
+
type revert_preview_response = {
|
|
5212
|
+
"changeId" => String,
|
|
5213
|
+
"resourceId" => resource_id,
|
|
5214
|
+
"displayName" => String,
|
|
5215
|
+
"pluginId" => String,
|
|
5216
|
+
"resourceTypeId" => String,
|
|
5217
|
+
"accountId" => String,
|
|
5218
|
+
"plan" => revert_plan,
|
|
5219
|
+
"revertedAt" => String | nil
|
|
5220
|
+
}
|
|
5221
|
+
|
|
5046
5222
|
# Spec schema: `RightsizingListResponse`.
|
|
5047
5223
|
type rightsizing_list_response = {
|
|
5048
5224
|
"accounts" => Array[oversized_account_group],
|
|
@@ -5792,6 +5968,7 @@ module Infrawrench
|
|
|
5792
5968
|
| "changes"
|
|
5793
5969
|
| "expiring"
|
|
5794
5970
|
| "posture"
|
|
5971
|
+
| "access-review"
|
|
5795
5972
|
| "dns"
|
|
5796
5973
|
| "environment-diff"
|
|
5797
5974
|
| "ssh-fanout"
|
|
@@ -6038,6 +6215,19 @@ module Infrawrench
|
|
|
6038
6215
|
def withdraw: (request_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
|
|
6039
6216
|
end
|
|
6040
6217
|
|
|
6218
|
+
class AccessReviewDismissalsNamespace
|
|
6219
|
+
def initialize: (Transport) -> void
|
|
6220
|
+
def create: (?org_id: String?, ?body: access_review_dismissal_create?, ?request_options: Hash[Symbol, untyped]?) -> access_review_dismissal
|
|
6221
|
+
def delete: (resource_id: String, rule_id: "access-review:stale-principal" | "access-review:admin-principal" | "access-review:key-past-rotation" | "access-review:no-recorded-owner" | "access-review:no-mfa", ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> nil
|
|
6222
|
+
end
|
|
6223
|
+
|
|
6224
|
+
class AccessReviewNamespace
|
|
6225
|
+
attr_reader dismissals: AccessReviewDismissalsNamespace
|
|
6226
|
+
def initialize: (Transport) -> void
|
|
6227
|
+
def export: (?org_id: String?, ?format: "csv" | "json"?, ?stale_days: Integer?, ?request_options: Hash[Symbol, untyped]?) -> access_review_response
|
|
6228
|
+
def get: (?org_id: String?, ?stale_days: Integer?, ?request_options: Hash[Symbol, untyped]?) -> access_review_response
|
|
6229
|
+
end
|
|
6230
|
+
|
|
6041
6231
|
class AccountsCredentialsNamespace
|
|
6042
6232
|
def initialize: (Transport) -> void
|
|
6043
6233
|
def get: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Hash[String, String]
|
|
@@ -6226,8 +6416,15 @@ module Infrawrench
|
|
|
6226
6416
|
def update: (?org_id: String?, ?body: drift_alert_settings_update?, ?request_options: Hash[Symbol, untyped]?) -> drift_alert_settings
|
|
6227
6417
|
end
|
|
6228
6418
|
|
|
6419
|
+
class ChangesRevertNamespace
|
|
6420
|
+
def initialize: (Transport) -> void
|
|
6421
|
+
def create: (change_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> revert_apply_response
|
|
6422
|
+
def get: (change_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> revert_preview_response
|
|
6423
|
+
end
|
|
6424
|
+
|
|
6229
6425
|
class ChangesNamespace
|
|
6230
6426
|
attr_reader alert_settings: ChangesAlertSettingsNamespace
|
|
6427
|
+
attr_reader revert: ChangesRevertNamespace
|
|
6231
6428
|
def initialize: (Transport) -> void
|
|
6232
6429
|
def get: (?org_id: String?, ?page: Integer?, ?page_size: Integer?, ?account_id: String?, ?resource_id: String?, ?kind: resource_change_kind?, ?from: String?, ?to: String?, ?request_options: Hash[Symbol, untyped]?) -> resource_change_feed_response
|
|
6233
6430
|
def resource: (resource_id: String, ?org_id: String?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> resource_change_list_response
|
|
@@ -7049,6 +7246,7 @@ module Infrawrench
|
|
|
7049
7246
|
class APIV1Client
|
|
7050
7247
|
attr_reader transport: Transport
|
|
7051
7248
|
attr_reader access_requests: AccessRequestsNamespace
|
|
7249
|
+
attr_reader access_review: AccessReviewNamespace
|
|
7052
7250
|
attr_reader accounts: AccountsNamespace
|
|
7053
7251
|
attr_reader agents: AgentsNamespace
|
|
7054
7252
|
attr_reader alert_rules: AlertRulesNamespace
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: infrawrench-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.17.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Infrawrench LLC
|
|
@@ -11,7 +11,7 @@ bindir: bin
|
|
|
11
11
|
cert_chain: []
|
|
12
12
|
date: 2026-08-12 00:00:00.000000000 Z
|
|
13
13
|
dependencies: []
|
|
14
|
-
description: Generated Ruby client for the Infrawrench API (v1.
|
|
14
|
+
description: Generated Ruby client for the Infrawrench API (v1.17.0). Covers the published
|
|
15
15
|
API surface only — operations marked x-internal in the spec are not generated. No
|
|
16
16
|
runtime dependencies.
|
|
17
17
|
email:
|
|
@@ -58,5 +58,5 @@ requirements: []
|
|
|
58
58
|
rubygems_version: 3.5.22
|
|
59
59
|
signing_key:
|
|
60
60
|
specification_version: 4
|
|
61
|
-
summary: Generated Ruby client for the Infrawrench API (v1.
|
|
61
|
+
summary: Generated Ruby client for the Infrawrench API (v1.17.0).
|
|
62
62
|
test_files: []
|