infrawrench-sdk 1.12.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39542a8edbf1904101a15b6d9f9fad825ef507b1d3c3075cafc6d4c0b48d50fc
4
- data.tar.gz: 46ba3cf8a75d9ee4ded8b4f71151921f9bdedbef6057890fa9c352afdbf7d5ce
3
+ metadata.gz: c947d74d37069573fb9534ab1665a9ebcef67ad271943d690f1474ef27eb1913
4
+ data.tar.gz: 7b44c470da3df84fe8d0dbb39a253a0c30ab8a9bfb980bd2c4b1958c370b7b63
5
5
  SHA512:
6
- metadata.gz: 3639e5055ef2ce49922fb02460c4fe017de25bb7c6d31fecef47562519c5d24669c2d886d9d3b41142337291304539125e579b3481b1d2ed8e2f6cd3a3450b5e
7
- data.tar.gz: 0aa252cfdc4cf00c1fe5f98e22aee65282898ad40d20ac8fd2e6dac6fd736f4fcb1b81c3535c7bab536a62e11b20c51a81e62420d8706ccc20fb6c8b9b0e2b8b
6
+ metadata.gz: 2e314cc1ca73c8c0603ab5109e692215734058d3d5b412abe75e43debcc22952443e76820c0fdb90dcd9d66fe63a02c42e52496049b3d148a74e0d8161ad180c
7
+ data.tar.gz: '087ba4da5d3ab0ec9cf77f7aebdef7ee8af0dbc0911ea86b1ffbf0692e481107bf7061de81b627bd606ab56334470c6603e04fe4e6e3d0f0358f1eac8a8c3347'
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.12.0`).
3
+ Generated Ruby client for the Infrawrench API (API version `1.14.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
- 559 schemas, as RBS type aliases that steep and TypeProf can read.
44
+ 573 schemas, as RBS type aliases that steep and TypeProf can read.
45
45
 
46
46
  Non-2xx responses raise `Infrawrench::ApiError`, which carries `#status`,
47
47
  the parsed `#body`, and the machine-readable `#code` when the API sends one —
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.12.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.14.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.12.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.14.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.12.0)."
21
- spec.description = "Generated Ruby client for the Infrawrench API (v1.12.0). Covers the published API surface only — operations marked x-internal in the spec are not generated. No runtime dependencies."
20
+ spec.summary = "Generated Ruby client for the Infrawrench API (v1.14.0)."
21
+ spec.description = "Generated Ruby client for the Infrawrench API (v1.14.0). Covers the published API surface only — operations marked x-internal in the spec are not generated. No runtime dependencies."
22
22
  spec.authors = ["Infrawrench LLC", "Astrid Gealer"]
23
23
  spec.email = ["astrid@infrawrench.com"]
24
24
  spec.homepage = "https://infrawrench.com/docs/team-and-billing/client-sdks"
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.12.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.14.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.12.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.14.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -1724,6 +1724,48 @@ module Infrawrench
1724
1724
  end
1725
1725
  end
1726
1726
 
1727
+ # `client.blast_radius`
1728
+ class BlastRadiusNamespace
1729
+ # @api private
1730
+ # @param transport [Transport]
1731
+ def initialize(transport)
1732
+ @transport = transport
1733
+ end
1734
+
1735
+ # What breaks if this resource is deleted
1736
+ #
1737
+ # An impact report for one resource, assembled from the dependency graph
1738
+ # walked inbound, network flow attribution, and the org objects that name
1739
+ # the resource without depending on it (dashboards, custom graphs, probes,
1740
+ # status pages, metric alerts, leases, schedules, saved log queries,
1741
+ # workflows, and its recorded owner).
1742
+ #
1743
+ # The endpoint answers 200 with a partial report rather than failing when a
1744
+ # source is unavailable; `unchecked` says which, in prose.
1745
+ #
1746
+ # _Requires permission: `resources:read`._
1747
+ #
1748
+ # GET /api/org/{orgId}/blast-radius
1749
+ #
1750
+ # Raises on 400: Missing resourceId
1751
+ #
1752
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1753
+ # constructed with.
1754
+ # @param resource_id [Hash]
1755
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1756
+ # @return [Hash] Parsed JSON, shaped as `BlastRadiusReport` — see `sig/infrawrench/sdk.rbs`.
1757
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1758
+ def get(resource_id:, org_id: nil, request_options: nil)
1759
+ @transport.request(
1760
+ http_method: "GET",
1761
+ path: "/api/org/{orgId}/blast-radius",
1762
+ path_params: { "orgId" => org_id },
1763
+ query: { "resourceId" => resource_id },
1764
+ request_options: request_options
1765
+ )
1766
+ end
1767
+ end
1768
+
1727
1769
  # `client.budgets`
1728
1770
  class BudgetsNamespace
1729
1771
  # @api private
@@ -11033,6 +11075,435 @@ module Infrawrench
11033
11075
  end
11034
11076
  end
11035
11077
 
11078
+ # `client.shared_consoles.invites`
11079
+ class SharedConsolesInvitesNamespace
11080
+ # @api private
11081
+ # @param transport [Transport]
11082
+ def initialize(transport)
11083
+ @transport = transport
11084
+ end
11085
+
11086
+ # Mint a replacement invite
11087
+ #
11088
+ # An invite is spent by the first person it admits, so inviting a second
11089
+ # guest means minting a second link. Replaces any outstanding one. Sharer or
11090
+ # `org:settings:write`.
11091
+ #
11092
+ # POST /api/org/{orgId}/shared-consoles/{consoleId}/invites
11093
+ #
11094
+ # Raises on 403: Forbidden
11095
+ #
11096
+ # Raises on 404: Not found
11097
+ #
11098
+ # Raises on 409: Conflict
11099
+ #
11100
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11101
+ # constructed with.
11102
+ # @param console_id [String]
11103
+ # @param body [Hash, nil] Request body, shaped as `Hash`.
11104
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11105
+ # @return [Hash] Parsed JSON, shaped as `SharedConsoleCreated` — see
11106
+ # `sig/infrawrench/sdk.rbs`.
11107
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11108
+ def create(console_id:, org_id: nil, body: nil, request_options: nil)
11109
+ @transport.request(
11110
+ http_method: "POST",
11111
+ path: "/api/org/{orgId}/shared-consoles/{consoleId}/invites",
11112
+ path_params: { "orgId" => org_id, "consoleId" => console_id },
11113
+ body: body,
11114
+ request_options: request_options
11115
+ )
11116
+ end
11117
+
11118
+ # Withdraw the outstanding invite
11119
+ #
11120
+ # Kills the link without touching the session or anyone already on it.
11121
+ #
11122
+ # DELETE /api/org/{orgId}/shared-consoles/{consoleId}/invites
11123
+ #
11124
+ # Raises on 403: Forbidden
11125
+ #
11126
+ # Raises on 404: Not found
11127
+ #
11128
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11129
+ # constructed with.
11130
+ # @param console_id [String]
11131
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11132
+ # @return [Hash] Parsed JSON, shaped as `SharedConsoleState` — see
11133
+ # `sig/infrawrench/sdk.rbs`.
11134
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11135
+ def delete(console_id:, org_id: nil, request_options: nil)
11136
+ @transport.request(
11137
+ http_method: "DELETE",
11138
+ path: "/api/org/{orgId}/shared-consoles/{consoleId}/invites",
11139
+ path_params: { "orgId" => org_id, "consoleId" => console_id },
11140
+ request_options: request_options
11141
+ )
11142
+ end
11143
+
11144
+ # Preview what an invite link points at
11145
+ #
11146
+ # What the join screen shows before anyone commits: which host, whose
11147
+ # session, and whether you may join it. Reachable with a valid token by a
11148
+ # signed-in member who already holds `resources:execute` — the token says
11149
+ # *which* session, never *whether*. Returns nothing from the session itself.
11150
+ #
11151
+ # _Requires permission: `resources:execute`._
11152
+ #
11153
+ # GET /api/org/{orgId}/shared-consoles/invites/{token}
11154
+ #
11155
+ # Raises on 404: Not found
11156
+ #
11157
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11158
+ # constructed with.
11159
+ # @param token [String]
11160
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11161
+ # @return [Hash] Parsed JSON, shaped as `SharedConsoleInvitePreview` — see
11162
+ # `sig/infrawrench/sdk.rbs`.
11163
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11164
+ def get(token:, org_id: nil, request_options: nil)
11165
+ @transport.request(
11166
+ http_method: "GET",
11167
+ path: "/api/org/{orgId}/shared-consoles/invites/{token}",
11168
+ path_params: { "orgId" => org_id, "token" => token },
11169
+ request_options: request_options
11170
+ )
11171
+ end
11172
+ end
11173
+
11174
+ # `client.shared_consoles.participants`
11175
+ class SharedConsolesParticipantsNamespace
11176
+ # @api private
11177
+ # @param transport [Transport]
11178
+ def initialize(transport)
11179
+ @transport = transport
11180
+ end
11181
+
11182
+ # Remove somebody from a shared console
11183
+ #
11184
+ # Their socket is closed immediately on the replica holding the pty, and
11185
+ # within one two-second sweep on any other. They are marked `removed` rather
11186
+ # than `left`, so they cannot resume without a fresh invite. The sharer
11187
+ # cannot be removed — revoke the share.
11188
+ #
11189
+ # DELETE
11190
+ # /api/org/{orgId}/shared-consoles/{consoleId}/participants/{participantId}
11191
+ #
11192
+ # Raises on 403: Forbidden
11193
+ #
11194
+ # Raises on 404: Not found
11195
+ #
11196
+ # Raises on 409: Conflict
11197
+ #
11198
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11199
+ # constructed with.
11200
+ # @param console_id [String]
11201
+ # @param participant_id [String]
11202
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11203
+ # @return [Hash] Parsed JSON, shaped as `SharedConsoleState` — see
11204
+ # `sig/infrawrench/sdk.rbs`.
11205
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11206
+ def delete(console_id:, participant_id:, org_id: nil, request_options: nil)
11207
+ @transport.request(
11208
+ http_method: "DELETE",
11209
+ path: "/api/org/{orgId}/shared-consoles/{consoleId}/participants/{participantId}",
11210
+ path_params: {
11211
+ "orgId" => org_id,
11212
+ "consoleId" => console_id,
11213
+ "participantId" => participant_id
11214
+ },
11215
+ request_options: request_options
11216
+ )
11217
+ end
11218
+ end
11219
+
11220
+ # `client.shared_consoles`
11221
+ class SharedConsolesNamespace
11222
+ # @return [SharedConsolesInvitesNamespace] `client.shared_consoles.invites`
11223
+ attr_reader :invites
11224
+ # @return [SharedConsolesParticipantsNamespace] `client.shared_consoles.participants`
11225
+ attr_reader :participants
11226
+
11227
+ # @api private
11228
+ # @param transport [Transport]
11229
+ def initialize(transport)
11230
+ @transport = transport
11231
+ @invites = SharedConsolesInvitesNamespace.new(@transport)
11232
+ @participants = SharedConsolesParticipantsNamespace.new(@transport)
11233
+ end
11234
+
11235
+ # Share a live SSH session
11236
+ #
11237
+ # Opens a share on a session you already have running and mints its first
11238
+ # invite. You become the driver.
11239
+ #
11240
+ # Returns 409 `console_not_here` when the pty is held by a different server
11241
+ # replica than the one answering this call — reopen the terminal and share
11242
+ # again. Writing the share anyway would produce a link that authorises
11243
+ # correctly and then finds nothing to attach to.
11244
+ #
11245
+ # Requires `resources:execute` — the same permission as opening the
11246
+ # terminal. Closed to API keys: sharing a shell is an act a person performs.
11247
+ #
11248
+ # _Requires permission: `resources:execute`._
11249
+ #
11250
+ # POST /api/org/{orgId}/shared-consoles
11251
+ #
11252
+ # Raises on 400: Bad request
11253
+ #
11254
+ # Raises on 404: Not found
11255
+ #
11256
+ # Raises on 409: Conflict
11257
+ #
11258
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11259
+ # constructed with.
11260
+ # @param body [Hash, nil] Request body, shaped as `CreateSharedConsole`.
11261
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11262
+ # @return [Hash] Parsed JSON, shaped as `SharedConsoleCreated` — see
11263
+ # `sig/infrawrench/sdk.rbs`.
11264
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11265
+ def create(org_id: nil, body: nil, request_options: nil)
11266
+ @transport.request(
11267
+ http_method: "POST",
11268
+ path: "/api/org/{orgId}/shared-consoles",
11269
+ path_params: { "orgId" => org_id },
11270
+ body: body,
11271
+ request_options: request_options
11272
+ )
11273
+ end
11274
+
11275
+ # Revoke a share
11276
+ #
11277
+ # Disconnects every guest and stops the fan-out. The sharer's own SSH
11278
+ # session carries on — revoking a share is not killing a terminal.
11279
+ #
11280
+ # The sharer or a holder of `org:settings:write`. Deliberately does **not**
11281
+ # require `resources:execute`: ending access must never be gated on still
11282
+ # holding the access, or an owner whose role was narrowed mid-incident could
11283
+ # not close the session they opened.
11284
+ #
11285
+ # DELETE /api/org/{orgId}/shared-consoles/{consoleId}
11286
+ #
11287
+ # Raises on 403: Forbidden
11288
+ #
11289
+ # Raises on 404: Not found
11290
+ #
11291
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11292
+ # constructed with.
11293
+ # @param console_id [String]
11294
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11295
+ # @return [Hash] Parsed JSON, shaped as `Ok` — see `sig/infrawrench/sdk.rbs`.
11296
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11297
+ def delete(console_id:, org_id: nil, request_options: nil)
11298
+ @transport.request(
11299
+ http_method: "DELETE",
11300
+ path: "/api/org/{orgId}/shared-consoles/{consoleId}",
11301
+ path_params: { "orgId" => org_id, "consoleId" => console_id },
11302
+ request_options: request_options
11303
+ )
11304
+ end
11305
+
11306
+ # Get one shared console
11307
+ #
11308
+ # Visible to participants and to anyone who could revoke it (the sharer, or
11309
+ # a holder of `org:settings:write`). Others get 404 — that a named colleague
11310
+ # has a root shell open on a named production host right now is operational
11311
+ # information.
11312
+ #
11313
+ # _Requires permission: `resources:execute`._
11314
+ #
11315
+ # GET /api/org/{orgId}/shared-consoles/{consoleId}
11316
+ #
11317
+ # Raises on 404: Not found
11318
+ #
11319
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11320
+ # constructed with.
11321
+ # @param console_id [String]
11322
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11323
+ # @return [Hash] Parsed JSON, shaped as `SharedConsoleState` — see
11324
+ # `sig/infrawrench/sdk.rbs`.
11325
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11326
+ def get(console_id:, org_id: nil, request_options: nil)
11327
+ @transport.request(
11328
+ http_method: "GET",
11329
+ path: "/api/org/{orgId}/shared-consoles/{consoleId}",
11330
+ path_params: { "orgId" => org_id, "consoleId" => console_id },
11331
+ request_options: request_options
11332
+ )
11333
+ end
11334
+
11335
+ # Move the keyboard to another participant
11336
+ #
11337
+ # Authorised by the **current driver** (the keyboard is theirs to give) or
11338
+ # by the **sharer** (it is their box, and asking permission from somebody
11339
+ # who has stopped responding is not a control). An observer cannot promote
11340
+ # themselves — that is `/request-driver`.
11341
+ #
11342
+ # Two simultaneous grants cannot both win: the database's partial unique
11343
+ # index decides the order, and the loser gets 409 `driver-race-lost`.
11344
+ #
11345
+ # The pty resizes to the new driver's viewport; everyone else letterboxes.
11346
+ #
11347
+ # _Requires permission: `resources:execute`._
11348
+ #
11349
+ # POST /api/org/{orgId}/shared-consoles/{consoleId}/handover
11350
+ #
11351
+ # Raises on 400: Bad request
11352
+ #
11353
+ # Raises on 403: Forbidden
11354
+ #
11355
+ # Raises on 404: Not found
11356
+ #
11357
+ # Raises on 409: Conflict
11358
+ #
11359
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11360
+ # constructed with.
11361
+ # @param console_id [String]
11362
+ # @param body [Hash, nil] Request body, shaped as `Hash`.
11363
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11364
+ # @return [Hash] Parsed JSON, shaped as `SharedConsoleState` — see
11365
+ # `sig/infrawrench/sdk.rbs`.
11366
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11367
+ def handover(console_id:, org_id: nil, body: nil, request_options: nil)
11368
+ @transport.request(
11369
+ http_method: "POST",
11370
+ path: "/api/org/{orgId}/shared-consoles/{consoleId}/handover",
11371
+ path_params: { "orgId" => org_id, "consoleId" => console_id },
11372
+ body: body,
11373
+ request_options: request_options
11374
+ )
11375
+ end
11376
+
11377
+ # Redeem an invite and join
11378
+ #
11379
+ # Admission needs live org membership **and** `resources:execute` — the
11380
+ # invite is a locator, never a capability, so a leaked link admits nobody
11381
+ # who could not have opened the shell themselves.
11382
+ #
11383
+ # The invite is consumed by the first person it admits. Somebody already on
11384
+ # the console resumes their own row without a token, so a reload costs them
11385
+ # nothing and obliges the sharer to mint nothing. New joiners always start
11386
+ # as observers whatever the link said.
11387
+ #
11388
+ # Audit-logged as `shared_console.join`, and written onto the recording's
11389
+ # timeline as an asciicast marker.
11390
+ #
11391
+ # _Requires permission: `resources:execute`._
11392
+ #
11393
+ # POST /api/org/{orgId}/shared-consoles/{consoleId}/join
11394
+ #
11395
+ # Raises on 400: Bad request
11396
+ #
11397
+ # Raises on 403: Forbidden
11398
+ #
11399
+ # Raises on 404: Not found
11400
+ #
11401
+ # Raises on 409: Conflict
11402
+ #
11403
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11404
+ # constructed with.
11405
+ # @param console_id [String]
11406
+ # @param body [Hash, nil] Request body, shaped as `Hash`.
11407
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11408
+ # @return [Hash] Parsed JSON, shaped as `SharedConsoleJoined` — see
11409
+ # `sig/infrawrench/sdk.rbs`.
11410
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11411
+ def join(console_id:, org_id: nil, body: nil, request_options: nil)
11412
+ @transport.request(
11413
+ http_method: "POST",
11414
+ path: "/api/org/{orgId}/shared-consoles/{consoleId}/join",
11415
+ path_params: { "orgId" => org_id, "consoleId" => console_id },
11416
+ body: body,
11417
+ request_options: request_options
11418
+ )
11419
+ end
11420
+
11421
+ # Leave a shared console
11422
+ #
11423
+ # Steps you off without ending the session. Your row survives, so the same
11424
+ # invite is not needed again. Deliberately does not require
11425
+ # `resources:execute`: giving access up must never be gated on still holding
11426
+ # it.
11427
+ #
11428
+ # POST /api/org/{orgId}/shared-consoles/{consoleId}/leave
11429
+ #
11430
+ # Raises on 404: Not found
11431
+ #
11432
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11433
+ # constructed with.
11434
+ # @param console_id [String]
11435
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11436
+ # @return [Hash] Parsed JSON, shaped as `SharedConsoleState` — see
11437
+ # `sig/infrawrench/sdk.rbs`.
11438
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11439
+ def leave(console_id:, org_id: nil, request_options: nil)
11440
+ @transport.request(
11441
+ http_method: "POST",
11442
+ path: "/api/org/{orgId}/shared-consoles/{consoleId}/leave",
11443
+ path_params: { "orgId" => org_id, "consoleId" => console_id },
11444
+ request_options: request_options
11445
+ )
11446
+ end
11447
+
11448
+ # List sessions currently shared
11449
+ #
11450
+ # Live shared SSH sessions in this organization, with who is on each. Only
11451
+ # cloud SSH can be shared: those sessions are already proxied by the server,
11452
+ # so fanning the pty out to a second socket is a consumer of a stream it
11453
+ # holds. A desktop session dialling a host directly never reaches the server
11454
+ # and cannot be shared.
11455
+ #
11456
+ # _Requires permission: `resources:execute`._
11457
+ #
11458
+ # GET /api/org/{orgId}/shared-consoles
11459
+ #
11460
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11461
+ # constructed with.
11462
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11463
+ # @return [Array<Hash>] Parsed JSON, shaped as `Array<SharedConsoleSummary>` — see
11464
+ # `sig/infrawrench/sdk.rbs`.
11465
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11466
+ def list(org_id: nil, request_options: nil)
11467
+ @transport.request(
11468
+ http_method: "GET",
11469
+ path: "/api/org/{orgId}/shared-consoles",
11470
+ path_params: { "orgId" => org_id },
11471
+ request_options: request_options
11472
+ )
11473
+ end
11474
+
11475
+ # Ask for the keyboard
11476
+ #
11477
+ # Raises a flag the driver and the sharer can see. Grants nothing on its own
11478
+ # — that is the point.
11479
+ #
11480
+ # _Requires permission: `resources:execute`._
11481
+ #
11482
+ # POST /api/org/{orgId}/shared-consoles/{consoleId}/request-driver
11483
+ #
11484
+ # Raises on 403: Forbidden
11485
+ #
11486
+ # Raises on 404: Not found
11487
+ #
11488
+ # Raises on 409: Conflict
11489
+ #
11490
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11491
+ # constructed with.
11492
+ # @param console_id [String]
11493
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11494
+ # @return [Hash] Parsed JSON, shaped as `SharedConsoleState` — see
11495
+ # `sig/infrawrench/sdk.rbs`.
11496
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11497
+ def request_driver(console_id:, org_id: nil, request_options: nil)
11498
+ @transport.request(
11499
+ http_method: "POST",
11500
+ path: "/api/org/{orgId}/shared-consoles/{consoleId}/request-driver",
11501
+ path_params: { "orgId" => org_id, "consoleId" => console_id },
11502
+ request_options: request_options
11503
+ )
11504
+ end
11505
+ end
11506
+
11036
11507
  # `client.slack.channels`
11037
11508
  class SlackChannelsNamespace
11038
11509
  # @api private
@@ -12775,6 +13246,8 @@ module Infrawrench
12775
13246
  attr_reader :billing
12776
13247
  # @return [BillingRulesNamespace] `client.billing_rules`
12777
13248
  attr_reader :billing_rules
13249
+ # @return [BlastRadiusNamespace] `client.blast_radius`
13250
+ attr_reader :blast_radius
12778
13251
  # @return [BudgetsNamespace] `client.budgets`
12779
13252
  attr_reader :budgets
12780
13253
  # @return [BusinessMetricsNamespace] `client.business_metrics`
@@ -12885,6 +13358,8 @@ module Infrawrench
12885
13358
  attr_reader :session_recordings
12886
13359
  # @return [SftpNamespace] `client.sftp`
12887
13360
  attr_reader :sftp
13361
+ # @return [SharedConsolesNamespace] `client.shared_consoles`
13362
+ attr_reader :shared_consoles
12888
13363
  # @return [SlackNamespace] `client.slack`
12889
13364
  attr_reader :slack
12890
13365
  # @return [SqlNamespace] `client.sql`
@@ -12929,6 +13404,7 @@ module Infrawrench
12929
13404
  @bastions = BastionsNamespace.new(@transport)
12930
13405
  @billing = BillingNamespace.new(@transport)
12931
13406
  @billing_rules = BillingRulesNamespace.new(@transport)
13407
+ @blast_radius = BlastRadiusNamespace.new(@transport)
12932
13408
  @budgets = BudgetsNamespace.new(@transport)
12933
13409
  @business_metrics = BusinessMetricsNamespace.new(@transport)
12934
13410
  @change_freezes = ChangeFreezesNamespace.new(@transport)
@@ -12984,6 +13460,7 @@ module Infrawrench
12984
13460
  @search = SearchNamespace.new(@transport)
12985
13461
  @session_recordings = SessionRecordingsNamespace.new(@transport)
12986
13462
  @sftp = SftpNamespace.new(@transport)
13463
+ @shared_consoles = SharedConsolesNamespace.new(@transport)
12987
13464
  @slack = SlackNamespace.new(@transport)
12988
13465
  @sql = SqlNamespace.new(@transport)
12989
13466
  @ssh_fanout = SshFanoutNamespace.new(@transport)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.12.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.14.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.12.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.14.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.12.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.14.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.12.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.14.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.12.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.14.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.12.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.14.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.12.0"
18
+ VERSION = "1.14.0"
19
19
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.12.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.14.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.12.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.14.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -1,7 +1,7 @@
1
- # infrawrench-sdk v1.12.0 | MIT | Copyright (c) 2026 Infrawrench LLC
1
+ # infrawrench-sdk v1.14.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.12.0).
4
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.14.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -514,6 +514,90 @@ module Infrawrench
514
514
  # Spec schema: `BillingStatus`.
515
515
  type billing_status = { "complimentary" => bool, "subscription" => subscription, "capacity" => capacity_status }
516
516
 
517
+ # Spec schema: `BlastRadiusDependant`.
518
+ type blast_radius_dependant = {
519
+ "node" => blast_radius_node & Hash[String, untyped],
520
+ "depth" => Integer,
521
+ ?"via" => {
522
+ "fieldKey" => String,
523
+ "outputKey" => String,
524
+ ?"kind" => "output-ref" | "declared" | "containment" | "field-match",
525
+ ?"label" => String
526
+ }
527
+ }
528
+
529
+ # Spec schema: `BlastRadiusFlowPeer`.
530
+ type blast_radius_flow_peer = {
531
+ "ref" => String,
532
+ "label" => String,
533
+ "direction" => "egress" | "ingress",
534
+ "scope" => String,
535
+ "bytes" => Numeric,
536
+ "estimatedCost" => Numeric,
537
+ "currency" => String,
538
+ "days" => Integer,
539
+ "resourceId" => resource_id & (String | nil)
540
+ }
541
+
542
+ # Spec schema: `BlastRadiusGap`.
543
+ type blast_radius_gap = {
544
+ "kind" => "network-flows"
545
+ | "dependency-graph"
546
+ | "references"
547
+ | "workflow-source"
548
+ | "custom-graph-source",
549
+ "reason" => String
550
+ }
551
+
552
+ # The resource itself, when it participates in the dependency graph.
553
+ #
554
+ # Spec schema: `BlastRadiusNode`.
555
+ type blast_radius_node = {
556
+ "id" => resource_id,
557
+ "displayName" => String,
558
+ "pluginId" => String,
559
+ "pluginDisplayName" => String,
560
+ "pluginLogoSvg" => String,
561
+ "resourceTypeId" => String,
562
+ "resourceTypeLabel" => String,
563
+ "accountId" => String,
564
+ "accountName" => String
565
+ }
566
+ | nil
567
+
568
+ # Spec schema: `BlastRadiusReference`.
569
+ type blast_radius_reference = {
570
+ "kind" => "dashboard"
571
+ | "custom-graph"
572
+ | "probe"
573
+ | "status-page"
574
+ | "metric-alert"
575
+ | "lease"
576
+ | "schedule"
577
+ | "workflow"
578
+ | "log-query"
579
+ | "owner",
580
+ "id" => String,
581
+ "name" => String,
582
+ ?"detail" => String,
583
+ ?"userFacing" => bool
584
+ }
585
+
586
+ # Spec schema: `BlastRadiusReport`.
587
+ type blast_radius_report = {
588
+ "resourceId" => resource_id,
589
+ "resource" => blast_radius_node,
590
+ "dependants" => Array[blast_radius_dependant],
591
+ "directCount" => Integer,
592
+ "transitiveCount" => Integer,
593
+ "references" => Array[blast_radius_reference],
594
+ "flowPeers" => Array[blast_radius_flow_peer],
595
+ "flowTotals" => { "bytes" => Numeric, "estimatedCost" => Numeric, "currency" => String } | nil,
596
+ "unchecked" => Array[blast_radius_gap],
597
+ "severity" => "none" | "low" | "medium" | "high" | "unknown",
598
+ "headline" => String
599
+ }
600
+
517
601
  # Spec schema: `BudgetAlertEvent`.
518
602
  type budget_alert_event = {
519
603
  "id" => String,
@@ -1643,6 +1727,14 @@ module Infrawrench
1643
1727
  # Spec schema: `CreateResourceResponse`.
1644
1728
  type create_resource_response = { "id" => resource_id, "displayName" => String, ?"warnings" => Array[String] }
1645
1729
 
1730
+ # Spec schema: `CreateSharedConsole`.
1731
+ type create_shared_console = {
1732
+ "liveConsoleId" => String,
1733
+ "routingKey" => String,
1734
+ ?"allowHandover" => bool,
1735
+ ?"inviteTtlMinutes" => Integer
1736
+ }
1737
+
1646
1738
  # Spec schema: `CreateWidgetRequest`.
1647
1739
  type create_widget_request = {
1648
1740
  "dashboardId" => String,
@@ -4977,6 +5069,15 @@ module Infrawrench
4977
5069
  "cols" => Integer,
4978
5070
  "rows" => Integer,
4979
5071
  "hasInput" => bool,
5072
+ ?"sharedConsoleId" => String | nil,
5073
+ ?"participants" => Array[{
5074
+ "userId" => String | nil,
5075
+ "userName" => String | nil,
5076
+ "role" => "observer" | "driver",
5077
+ "joinedAt" => String,
5078
+ "leftAt" => String | nil
5079
+ }]
5080
+ | nil,
4980
5081
  "status" => "recording" | "complete" | "truncated" | "abandoned",
4981
5082
  "outputBytes" => Integer,
4982
5083
  "eventCount" => Integer,
@@ -5045,6 +5146,69 @@ module Infrawrench
5045
5146
  ?"sshUsername" => String
5046
5147
  }
5047
5148
 
5149
+ # Spec schema: `SharedConsole`.
5150
+ type shared_console = {
5151
+ "id" => String,
5152
+ "routingKey" => String,
5153
+ "ownerUserId" => String | nil,
5154
+ "ownerName" => String | nil,
5155
+ "accountId" => String | nil,
5156
+ "resourceId" => String | nil,
5157
+ "host" => String,
5158
+ "port" => Integer,
5159
+ "username" => String,
5160
+ "allowHandover" => bool,
5161
+ "status" => "active" | "revoked" | "ended",
5162
+ "inviteTokenPrefix" => String | nil,
5163
+ "inviteExpiresAt" => String | nil,
5164
+ "inviteConsumedAt" => String | nil,
5165
+ "recordingId" => String | nil,
5166
+ "ptyCols" => Integer,
5167
+ "ptyRows" => Integer,
5168
+ "createdAt" => String
5169
+ }
5170
+
5171
+ # Spec schema: `SharedConsoleCreated`.
5172
+ type shared_console_created = {
5173
+ "share" => shared_console,
5174
+ "participants" => Array[shared_console_participant],
5175
+ "inviteToken" => String
5176
+ }
5177
+
5178
+ # Spec schema: `SharedConsoleInvitePreview`.
5179
+ type shared_console_invite_preview = {
5180
+ "share" => shared_console,
5181
+ "joinable" => bool,
5182
+ ?"rejoin" => bool,
5183
+ ?"error" => String,
5184
+ ?"code" => String
5185
+ }
5186
+
5187
+ # Spec schema: `SharedConsoleJoined`.
5188
+ type shared_console_joined = {
5189
+ "share" => shared_console,
5190
+ "participants" => Array[shared_console_participant],
5191
+ "you" => shared_console_participant,
5192
+ "routingKey" => String
5193
+ }
5194
+
5195
+ # Spec schema: `SharedConsoleParticipant`.
5196
+ type shared_console_participant = {
5197
+ "id" => String,
5198
+ "userId" => String,
5199
+ "userName" => String | nil,
5200
+ "role" => "observer" | "driver",
5201
+ "status" => "joined" | "left" | "removed",
5202
+ "driverRequestedAt" => String | nil,
5203
+ "joinedAt" => String
5204
+ }
5205
+
5206
+ # Spec schema: `SharedConsoleState`.
5207
+ type shared_console_state = { "share" => shared_console, "participants" => Array[shared_console_participant] }
5208
+
5209
+ # Spec schema: `SharedConsoleSummary`.
5210
+ type shared_console_summary = shared_console & { "participants" => Array[shared_console_participant] }
5211
+
5048
5212
  # Spec schema: `ShowbackReport`.
5049
5213
  type showback_report = {
5050
5214
  "from" => String,
@@ -5863,6 +6027,11 @@ module Infrawrench
5863
6027
  def update: (id: String, body: billing_rule_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> billing_rule
5864
6028
  end
5865
6029
 
6030
+ class BlastRadiusNamespace
6031
+ def initialize: (Transport) -> void
6032
+ def get: (resource_id: (resource_id & untyped), ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> blast_radius_report
6033
+ end
6034
+
5866
6035
  class BudgetsNamespace
5867
6036
  def initialize: (Transport) -> void
5868
6037
  def create: (body: budget_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> budget_full
@@ -6535,6 +6704,32 @@ module Infrawrench
6535
6704
  def upload: (body: sftp_upload_form, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
6536
6705
  end
6537
6706
 
6707
+ class SharedConsolesInvitesNamespace
6708
+ def initialize: (Transport) -> void
6709
+ def create: (console_id: String, ?org_id: String?, ?body: { ?"inviteTtlMinutes" => Integer }?, ?request_options: Hash[Symbol, untyped]?) -> shared_console_created
6710
+ def delete: (console_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> shared_console_state
6711
+ def get: (token: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> shared_console_invite_preview
6712
+ end
6713
+
6714
+ class SharedConsolesParticipantsNamespace
6715
+ def initialize: (Transport) -> void
6716
+ def delete: (console_id: String, participant_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> shared_console_state
6717
+ end
6718
+
6719
+ class SharedConsolesNamespace
6720
+ attr_reader invites: SharedConsolesInvitesNamespace
6721
+ attr_reader participants: SharedConsolesParticipantsNamespace
6722
+ def initialize: (Transport) -> void
6723
+ def create: (?org_id: String?, ?body: create_shared_console?, ?request_options: Hash[Symbol, untyped]?) -> shared_console_created
6724
+ def delete: (console_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
6725
+ def get: (console_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> shared_console_state
6726
+ def handover: (console_id: String, ?org_id: String?, ?body: { "participantId" => String }?, ?request_options: Hash[Symbol, untyped]?) -> shared_console_state
6727
+ def join: (console_id: String, ?org_id: String?, ?body: { "token" => String }?, ?request_options: Hash[Symbol, untyped]?) -> shared_console_joined
6728
+ def leave: (console_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> shared_console_state
6729
+ def list: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[shared_console_summary]
6730
+ def request_driver: (console_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> shared_console_state
6731
+ end
6732
+
6538
6733
  class SlackChannelsNamespace
6539
6734
  def initialize: (Transport) -> void
6540
6735
  def create: (?org_id: String?, ?body: slack_channel_create?, ?request_options: Hash[Symbol, untyped]?) -> slack_channel
@@ -6695,6 +6890,7 @@ module Infrawrench
6695
6890
  attr_reader bastions: BastionsNamespace
6696
6891
  attr_reader billing: BillingNamespace
6697
6892
  attr_reader billing_rules: BillingRulesNamespace
6893
+ attr_reader blast_radius: BlastRadiusNamespace
6698
6894
  attr_reader budgets: BudgetsNamespace
6699
6895
  attr_reader business_metrics: BusinessMetricsNamespace
6700
6896
  attr_reader change_freezes: ChangeFreezesNamespace
@@ -6750,6 +6946,7 @@ module Infrawrench
6750
6946
  attr_reader search: SearchNamespace
6751
6947
  attr_reader session_recordings: SessionRecordingsNamespace
6752
6948
  attr_reader sftp: SftpNamespace
6949
+ attr_reader shared_consoles: SharedConsolesNamespace
6753
6950
  attr_reader slack: SlackNamespace
6754
6951
  attr_reader sql: SqlNamespace
6755
6952
  attr_reader ssh_fanout: SshFanoutNamespace
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.12.0
4
+ version: 1.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Infrawrench LLC
@@ -9,9 +9,9 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2026-08-11 00:00:00.000000000 Z
12
+ date: 2026-08-12 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: Generated Ruby client for the Infrawrench API (v1.12.0). Covers the published
14
+ description: Generated Ruby client for the Infrawrench API (v1.14.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.12.0).
61
+ summary: Generated Ruby client for the Infrawrench API (v1.14.0).
62
62
  test_files: []