infrawrench-sdk 1.9.0 → 1.12.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: 89956653f66fe5f59bc6dd6c9afe86374308399948f74591b8625b2276d7c584
4
- data.tar.gz: e191b2de73f7d6934f6ade2be89f608704d4cad77abb251042a17f3e678e0bb4
3
+ metadata.gz: 39542a8edbf1904101a15b6d9f9fad825ef507b1d3c3075cafc6d4c0b48d50fc
4
+ data.tar.gz: 46ba3cf8a75d9ee4ded8b4f71151921f9bdedbef6057890fa9c352afdbf7d5ce
5
5
  SHA512:
6
- metadata.gz: c54752af40fecf58d791421d2235f0d227795c2e4a63eef0677cd96e28efd2d239b725ca4e95bd7d7489cccc9e2f6a09dbc907d1421d24e663eeffa3639ed98b
7
- data.tar.gz: 296eb9814558485cba0308d5a841cfb07759bcee1c0eff2233b41d297e95034e61eebb166d73377e1ebc557d914e4ad191b7cdef8ee9af2b53ca93ff57af3b1e
6
+ metadata.gz: 3639e5055ef2ce49922fb02460c4fe017de25bb7c6d31fecef47562519c5d24669c2d886d9d3b41142337291304539125e579b3481b1d2ed8e2f6cd3a3450b5e
7
+ data.tar.gz: 0aa252cfdc4cf00c1fe5f98e22aee65282898ad40d20ac8fd2e6dac6fd736f4fcb1b81c3535c7bab536a62e11b20c51a81e62420d8706ccc20fb6c8b9b0e2b8b
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.9.0`).
3
+ Generated Ruby client for the Infrawrench API (API version `1.12.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
- 545 schemas, as RBS type aliases that steep and TypeProf can read.
44
+ 559 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.9.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.12.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.9.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.12.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.9.0)."
21
- spec.description = "Generated Ruby client for the Infrawrench API (v1.9.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.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."
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.9.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.12.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.9.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.12.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -4129,6 +4129,90 @@ module Infrawrench
4129
4129
  end
4130
4130
  end
4131
4131
 
4132
+ # `client.costs.anomalies`
4133
+ class CostsAnomaliesNamespace
4134
+ # @api private
4135
+ # @param transport [Transport]
4136
+ def initialize(transport)
4137
+ @transport = transport
4138
+ end
4139
+
4140
+ # Explain a detected cost anomaly
4141
+ #
4142
+ # Record what a finding actually was, and publish that sentence as a cost
4143
+ # annotation on **every** chart covering the anomalous day — the point being
4144
+ # that 'we migrated the fleet' is not a fact about whichever report somebody
4145
+ # happened to open. The note's date (the anomalous day) and its org-wide
4146
+ # scope are derived from the anomaly and are not the caller's to choose.
4147
+ #
4148
+ # The reply is the updated anomaly, carrying `acknowledgement` with the id
4149
+ # of the note it created. Sending it again replaces the sentence and rewords
4150
+ # that note rather than filing a second one; it will not recreate a note
4151
+ # that has since been deleted, since deleting a note is a deliberate act and
4152
+ # the finding stays explained without it.
4153
+ #
4154
+ # This does not suppress detection. If the same provider or service spikes
4155
+ # again on a later day, that is a new anomaly and it is detected and alerted
4156
+ # on as normal.
4157
+ #
4158
+ # POST /api/org/{orgId}/costs/anomalies/{anomalyId}/acknowledge
4159
+ #
4160
+ # Raises on 400: Bad request
4161
+ #
4162
+ # Raises on 403: Forbidden
4163
+ #
4164
+ # Raises on 404: Not found
4165
+ #
4166
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
4167
+ # constructed with.
4168
+ # @param anomaly_id [String]
4169
+ # @param body [Hash, nil] Request body, shaped as `Hash`.
4170
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
4171
+ # @return [Hash] Parsed JSON, shaped as `CostAnomaly` — see `sig/infrawrench/sdk.rbs`.
4172
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
4173
+ def acknowledge(anomaly_id:, org_id: nil, body: nil, request_options: nil)
4174
+ @transport.request(
4175
+ http_method: "POST",
4176
+ path: "/api/org/{orgId}/costs/anomalies/{anomalyId}/acknowledge",
4177
+ path_params: { "orgId" => org_id, "anomalyId" => anomaly_id },
4178
+ body: body,
4179
+ request_options: request_options
4180
+ )
4181
+ end
4182
+
4183
+ # List recently detected cost anomalies
4184
+ #
4185
+ # Spend anomalies detected by the daily background pass. Two kinds share the
4186
+ # list: a `spike`, where a provider's or service's spend exceeded its
4187
+ # trailing 28-day baseline by a statistical threshold (mean + N·stddev, with
4188
+ # an absolute floor to ignore penny-scale noise), and a `new_source`, where
4189
+ # a provider or service with no spend at all across that window suddenly
4190
+ # billed a material amount. Thresholds are per organization — see GET
4191
+ # /costs/anomaly-settings. Newest day first, capped at 200 rows.
4192
+ #
4193
+ # _Requires permission: `costs:read`._
4194
+ #
4195
+ # GET /api/org/{orgId}/costs/anomalies
4196
+ #
4197
+ # Raises on 400: Bad request
4198
+ #
4199
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
4200
+ # constructed with.
4201
+ # @param days [String, nil] Window in days over anomalous days, 1-90. Defaults to 30.
4202
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
4203
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
4204
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
4205
+ def get(org_id: nil, days: nil, request_options: nil)
4206
+ @transport.request(
4207
+ http_method: "GET",
4208
+ path: "/api/org/{orgId}/costs/anomalies",
4209
+ path_params: { "orgId" => org_id },
4210
+ query: { "days" => days },
4211
+ request_options: request_options
4212
+ )
4213
+ end
4214
+ end
4215
+
4132
4216
  # `client.costs.anomaly_settings`
4133
4217
  class CostsAnomalySettingsNamespace
4134
4218
  # @api private
@@ -4264,6 +4348,8 @@ module Infrawrench
4264
4348
 
4265
4349
  # `client.costs`
4266
4350
  class CostsNamespace
4351
+ # @return [CostsAnomaliesNamespace] `client.costs.anomalies`
4352
+ attr_reader :anomalies
4267
4353
  # @return [CostsAnomalySettingsNamespace] `client.costs.anomaly_settings`
4268
4354
  attr_reader :anomaly_settings
4269
4355
  # @return [CostsEfficiencyAlertSettingsNamespace] `client.costs.efficiency_alert_settings`
@@ -4273,42 +4359,11 @@ module Infrawrench
4273
4359
  # @param transport [Transport]
4274
4360
  def initialize(transport)
4275
4361
  @transport = transport
4362
+ @anomalies = CostsAnomaliesNamespace.new(@transport)
4276
4363
  @anomaly_settings = CostsAnomalySettingsNamespace.new(@transport)
4277
4364
  @efficiency_alert_settings = CostsEfficiencyAlertSettingsNamespace.new(@transport)
4278
4365
  end
4279
4366
 
4280
- # List recently detected cost anomalies
4281
- #
4282
- # Spend anomalies detected by the daily background pass. Two kinds share the
4283
- # list: a `spike`, where a provider's or service's spend exceeded its
4284
- # trailing 28-day baseline by a statistical threshold (mean + N·stddev, with
4285
- # an absolute floor to ignore penny-scale noise), and a `new_source`, where
4286
- # a provider or service with no spend at all across that window suddenly
4287
- # billed a material amount. Thresholds are per organization — see GET
4288
- # /costs/anomaly-settings. Newest day first, capped at 200 rows.
4289
- #
4290
- # _Requires permission: `costs:read`._
4291
- #
4292
- # GET /api/org/{orgId}/costs/anomalies
4293
- #
4294
- # Raises on 400: Bad request
4295
- #
4296
- # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
4297
- # constructed with.
4298
- # @param days [String, nil] Window in days over anomalous days, 1-90. Defaults to 30.
4299
- # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
4300
- # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
4301
- # @raise [Infrawrench::ApiError] On any non-2xx response.
4302
- def anomalies(org_id: nil, days: nil, request_options: nil)
4303
- @transport.request(
4304
- http_method: "GET",
4305
- path: "/api/org/{orgId}/costs/anomalies",
4306
- path_params: { "orgId" => org_id },
4307
- query: { "days" => days },
4308
- request_options: request_options
4309
- )
4310
- end
4311
-
4312
4367
  # List distinct values for a cost dimension
4313
4368
  #
4314
4369
  # Feeds the filter and group-by pickers. Pass dimension=tag-keys for tag
@@ -8050,6 +8105,142 @@ module Infrawrench
8050
8105
  end
8051
8106
  end
8052
8107
 
8108
+ # `client.network_flows.settings`
8109
+ class NetworkFlowsSettingsNamespace
8110
+ # @api private
8111
+ # @param transport [Transport]
8112
+ def initialize(transport)
8113
+ @transport = transport
8114
+ end
8115
+
8116
+ # Read the network flow collection switch
8117
+ #
8118
+ # _Requires permission: `costs:read`._
8119
+ #
8120
+ # GET /api/org/{orgId}/network-flows/settings
8121
+ #
8122
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
8123
+ # constructed with.
8124
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
8125
+ # @return [Hash] Parsed JSON, shaped as `NetworkFlowSettings` — see
8126
+ # `sig/infrawrench/sdk.rbs`.
8127
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
8128
+ def get(org_id: nil, request_options: nil)
8129
+ @transport.request(
8130
+ http_method: "GET",
8131
+ path: "/api/org/{orgId}/network-flows/settings",
8132
+ path_params: { "orgId" => org_id },
8133
+ request_options: request_options
8134
+ )
8135
+ end
8136
+
8137
+ # Turn network flow collection on or off
8138
+ #
8139
+ # Collection is **off by default**. Enabling it authorizes Infrawrench to
8140
+ # run daily queries against the provider's log store — and on AWS those
8141
+ # queries are billed to your own cloud account per GB of log data scanned,
8142
+ # every day, until you turn them off. That is why the write is governed by
8143
+ # `org:settings:write` rather than `costs:write`, and why it is
8144
+ # audit-logged.
8145
+ #
8146
+ # _Requires permission: `org:settings:write`._
8147
+ #
8148
+ # PUT /api/org/{orgId}/network-flows/settings
8149
+ #
8150
+ # Raises on 400: Bad request
8151
+ #
8152
+ # Raises on 403: Forbidden
8153
+ #
8154
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
8155
+ # constructed with.
8156
+ # @param body [Hash] Request body, shaped as `NetworkFlowSettings`.
8157
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
8158
+ # @return [Hash] Parsed JSON, shaped as `NetworkFlowSettings` — see
8159
+ # `sig/infrawrench/sdk.rbs`.
8160
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
8161
+ def update(body:, org_id: nil, request_options: nil)
8162
+ @transport.request(
8163
+ http_method: "PUT",
8164
+ path: "/api/org/{orgId}/network-flows/settings",
8165
+ path_params: { "orgId" => org_id },
8166
+ body: body,
8167
+ request_options: request_options
8168
+ )
8169
+ end
8170
+ end
8171
+
8172
+ # `client.network_flows`
8173
+ class NetworkFlowsNamespace
8174
+ # @return [NetworkFlowsSettingsNamespace] `client.network_flows.settings`
8175
+ attr_reader :settings
8176
+
8177
+ # @api private
8178
+ # @param transport [Transport]
8179
+ def initialize(transport)
8180
+ @transport = transport
8181
+ @settings = NetworkFlowsSettingsNamespace.new(@transport)
8182
+ end
8183
+
8184
+ # Priced source→destination network flow attribution
8185
+ #
8186
+ # Which two things are talking, across which billing boundary, and what that
8187
+ # costs. Answers the question the cost dimensions structurally cannot: every
8188
+ # cost dimension is about one side of a transfer, and a network charge is
8189
+ # about a pair.
8190
+ #
8191
+ # All figures are **estimates** and the `estimated` field says so
8192
+ # unconditionally. Bytes come from the provider's flow logs (which sample,
8193
+ # or drop records under capacity pressure) and are priced at published list
8194
+ # rates with no free tier, no volume tier and no negotiated discount
8195
+ # applied. Use the ranking; do not reconcile the total against an invoice
8196
+ # line.
8197
+ #
8198
+ # Accounts whose provider has no readable flow source appear in `accounts`
8199
+ # with `supportsFlows: false` and contribute nothing to the totals — never
8200
+ # zero bytes.
8201
+ #
8202
+ # _Requires permission: `costs:read`._
8203
+ #
8204
+ # GET /api/org/{orgId}/network-flows
8205
+ #
8206
+ # Raises on 400: Bad request
8207
+ #
8208
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
8209
+ # constructed with.
8210
+ # @param from [String, nil] Inclusive start day. Defaults to 13 days ago.
8211
+ # @param to [String, nil] Inclusive end day. Defaults to today.
8212
+ # @param scope [String, nil] Narrow to one billing boundary.
8213
+ # @param account_id [String, nil] Narrow to one connected account.
8214
+ # @param limit [Integer, nil] Pairs to return in `topFlows`, largest cost first. Defaults to
8215
+ # 50.
8216
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
8217
+ # @return [Hash] Parsed JSON, shaped as `NetworkFlowFeed` — see `sig/infrawrench/sdk.rbs`.
8218
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
8219
+ def get(
8220
+ org_id: nil,
8221
+ from: nil,
8222
+ to: nil,
8223
+ scope: nil,
8224
+ account_id: nil,
8225
+ limit: nil,
8226
+ request_options: nil
8227
+ )
8228
+ @transport.request(
8229
+ http_method: "GET",
8230
+ path: "/api/org/{orgId}/network-flows",
8231
+ path_params: { "orgId" => org_id },
8232
+ query: {
8233
+ "from" => from,
8234
+ "to" => to,
8235
+ "scope" => scope,
8236
+ "accountId" => account_id,
8237
+ "limit" => limit
8238
+ },
8239
+ request_options: request_options
8240
+ )
8241
+ end
8242
+ end
8243
+
8053
8244
  # `client.orgs`
8054
8245
  class OrgsNamespace
8055
8246
  # @api private
@@ -9124,6 +9315,112 @@ module Infrawrench
9124
9315
  end
9125
9316
  end
9126
9317
 
9318
+ # `client.quotas.settings`
9319
+ class QuotasSettingsNamespace
9320
+ # @api private
9321
+ # @param transport [Transport]
9322
+ def initialize(transport)
9323
+ @transport = transport
9324
+ end
9325
+
9326
+ # Get the organization's quota alert settings
9327
+ #
9328
+ # The threshold feeds both the feed's severity buckets and the poller's
9329
+ # daily alert scan. An organization that never saved reads the shipped
9330
+ # defaults (enabled, 0.8).
9331
+ #
9332
+ # _Requires permission: `org:settings:write`._
9333
+ #
9334
+ # GET /api/org/{orgId}/quotas/settings
9335
+ #
9336
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
9337
+ # constructed with.
9338
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
9339
+ # @return [Hash] Parsed JSON, shaped as `QuotaAlertSettings` — see
9340
+ # `sig/infrawrench/sdk.rbs`.
9341
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
9342
+ def get(org_id: nil, request_options: nil)
9343
+ @transport.request(
9344
+ http_method: "GET",
9345
+ path: "/api/org/{orgId}/quotas/settings",
9346
+ path_params: { "orgId" => org_id },
9347
+ request_options: request_options
9348
+ )
9349
+ end
9350
+
9351
+ # Update the quota alert settings
9352
+ #
9353
+ # Every field is optional so a single toggle can be saved on its own.
9354
+ # `threshold` is a fraction from 0.5 to 0.99 and is rejected rather than
9355
+ # clamped when out of range. Saving never resets the alert cooldown.
9356
+ #
9357
+ # _Requires permission: `org:settings:write`._
9358
+ #
9359
+ # PUT /api/org/{orgId}/quotas/settings
9360
+ #
9361
+ # Raises on 400: Bad request
9362
+ #
9363
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
9364
+ # constructed with.
9365
+ # @param body [Hash, nil] Request body, shaped as `QuotaAlertSettingsUpdate`.
9366
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
9367
+ # @return [Hash] Parsed JSON, shaped as `QuotaAlertSettings` — see
9368
+ # `sig/infrawrench/sdk.rbs`.
9369
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
9370
+ def update(org_id: nil, body: nil, request_options: nil)
9371
+ @transport.request(
9372
+ http_method: "PUT",
9373
+ path: "/api/org/{orgId}/quotas/settings",
9374
+ path_params: { "orgId" => org_id },
9375
+ body: body,
9376
+ request_options: request_options
9377
+ )
9378
+ end
9379
+ end
9380
+
9381
+ # `client.quotas`
9382
+ class QuotasNamespace
9383
+ # @return [QuotasSettingsNamespace] `client.quotas.settings`
9384
+ attr_reader :settings
9385
+
9386
+ # @api private
9387
+ # @param transport [Transport]
9388
+ def initialize(transport)
9389
+ @transport = transport
9390
+ @settings = QuotasSettingsNamespace.new(@transport)
9391
+ end
9392
+
9393
+ # List provider quota utilisation across the organization
9394
+ #
9395
+ # How close each account is to the limits its provider enforces, with the
9396
+ # trend fitted over the last 14 days of collected readings. Both halves of
9397
+ # every row — the used figure and the limit — come from the provider;
9398
+ # nothing is filled in from published defaults, so an account with an
9399
+ # approved increase reads as having the headroom it has. This is a read over
9400
+ # already-collected snapshots: no provider API calls are made here, and the
9401
+ # readings are as fresh as the last collection pass (roughly six hours). A
9402
+ # plugin that declares no quota capability contributes nothing rather than
9403
+ # zero — see `unsupportedPluginIds`.
9404
+ #
9405
+ # _Requires permission: `resources:read`._
9406
+ #
9407
+ # GET /api/org/{orgId}/quotas
9408
+ #
9409
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
9410
+ # constructed with.
9411
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
9412
+ # @return [Hash] Parsed JSON, shaped as `QuotaListResponse` — see `sig/infrawrench/sdk.rbs`.
9413
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
9414
+ def get(org_id: nil, request_options: nil)
9415
+ @transport.request(
9416
+ http_method: "GET",
9417
+ path: "/api/org/{orgId}/quotas",
9418
+ path_params: { "orgId" => org_id },
9419
+ request_options: request_options
9420
+ )
9421
+ end
9422
+ end
9423
+
9127
9424
  # `client.resources.manifest`
9128
9425
  class ResourcesManifestNamespace
9129
9426
  # @api private
@@ -12556,6 +12853,8 @@ module Infrawrench
12556
12853
  attr_reader :moment
12557
12854
  # @return [MsteamsNamespace] `client.msteams`
12558
12855
  attr_reader :msteams
12856
+ # @return [NetworkFlowsNamespace] `client.network_flows`
12857
+ attr_reader :network_flows
12559
12858
  # @return [OrgsNamespace] `client.orgs`
12560
12859
  attr_reader :orgs
12561
12860
  # @return [OrphansNamespace] `client.orphans`
@@ -12570,6 +12869,8 @@ module Infrawrench
12570
12869
  attr_reader :probes
12571
12870
  # @return [ProfileNamespace] `client.profile`
12572
12871
  attr_reader :profile
12872
+ # @return [QuotasNamespace] `client.quotas`
12873
+ attr_reader :quotas
12573
12874
  # @return [ResourcesNamespace] `client.resources`
12574
12875
  attr_reader :resources
12575
12876
  # @return [RightsizingNamespace] `client.rightsizing`
@@ -12667,6 +12968,7 @@ module Infrawrench
12667
12968
  @metric_alerts = MetricAlertsNamespace.new(@transport)
12668
12969
  @moment = MomentNamespace.new(@transport)
12669
12970
  @msteams = MsteamsNamespace.new(@transport)
12971
+ @network_flows = NetworkFlowsNamespace.new(@transport)
12670
12972
  @orgs = OrgsNamespace.new(@transport)
12671
12973
  @orphans = OrphansNamespace.new(@transport)
12672
12974
  @ownership = OwnershipNamespace.new(@transport)
@@ -12674,6 +12976,7 @@ module Infrawrench
12674
12976
  @posture = PostureNamespace.new(@transport)
12675
12977
  @probes = ProbesNamespace.new(@transport)
12676
12978
  @profile = ProfileNamespace.new(@transport)
12979
+ @quotas = QuotasNamespace.new(@transport)
12677
12980
  @resources = ResourcesNamespace.new(@transport)
12678
12981
  @rightsizing = RightsizingNamespace.new(@transport)
12679
12982
  @saved_cost_filters = SavedCostFiltersNamespace.new(@transport)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.9.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.12.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.9.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.12.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.9.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.12.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.9.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.12.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.9.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.12.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.9.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.12.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.9.0"
18
+ VERSION = "1.12.0"
19
19
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.9.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.12.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.9.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.12.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.9.0 | MIT | Copyright (c) 2026 Infrawrench LLC
1
+ # infrawrench-sdk v1.12.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.9.0).
4
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.12.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -327,6 +327,7 @@ module Infrawrench
327
327
  | "logMatchAlerts"
328
328
  | "postureAlerts"
329
329
  | "probeAlerts"
330
+ | "quotaAlerts"
330
331
  | "weeklyDigest"
331
332
 
332
333
  # Spec schema: `AllocationRule`.
@@ -1043,7 +1044,8 @@ module Infrawrench
1043
1044
  "costReportId" => String | nil,
1044
1045
  "createdByUserId" => String | nil,
1045
1046
  "createdAt" => String,
1046
- "updatedAt" => String
1047
+ "updatedAt" => String,
1048
+ "costAnomalyId" => String | nil
1047
1049
  }
1048
1050
 
1049
1051
  # Spec schema: `CostAnnotationInput`.
@@ -1067,7 +1069,14 @@ module Infrawrench
1067
1069
  "thresholdCents" => Integer,
1068
1070
  "detectedAt" => String,
1069
1071
  "notifiedAt" => String | nil,
1070
- "hints" => Array[String]
1072
+ "hints" => Array[String],
1073
+ "acknowledgement" => {
1074
+ "explanation" => String,
1075
+ "acknowledgedAt" => String,
1076
+ "acknowledgedByUserId" => String | nil,
1077
+ "annotationId" => String | nil
1078
+ }
1079
+ | nil
1071
1080
  }
1072
1081
 
1073
1082
  # Spec schema: `CostAnomalySettings`.
@@ -3127,6 +3136,120 @@ module Infrawrench
3127
3136
  # Spec schema: `MsTeamsWebhookUpdate`.
3128
3137
  type ms_teams_webhook_update = { "label" => String }
3129
3138
 
3139
+ # Spec schema: `NetworkFlowAccountStatus`.
3140
+ type network_flow_account_status = {
3141
+ "accountId" => String,
3142
+ "pluginId" => String,
3143
+ "displayName" => String,
3144
+ "supportsFlows" => bool,
3145
+ "collectedThrough" => String | nil,
3146
+ "lastPolledAt" => String | nil,
3147
+ "failureCount" => Integer,
3148
+ "lastError" => String | nil,
3149
+ "lastErrorHelpUrl" => String | nil,
3150
+ "sources" => Array[network_flow_source],
3151
+ "lastQueryBytesScanned" => Numeric | nil
3152
+ }
3153
+
3154
+ # Spec schema: `NetworkFlowEndpoint`.
3155
+ type network_flow_endpoint = {
3156
+ "ref" => String,
3157
+ "label" => String,
3158
+ "zone" => String,
3159
+ "region" => String,
3160
+ "service" => String,
3161
+ "resourceTypeId" => String
3162
+ }
3163
+
3164
+ # Spec schema: `NetworkFlowFeed`.
3165
+ type network_flow_feed = {
3166
+ "enabled" => bool,
3167
+ "initialLookbackDays" => Integer,
3168
+ "estimated" => bool,
3169
+ "range" => { "from" => String, "to" => String },
3170
+ "scopes" => Array[network_flow_scope_summary],
3171
+ "topFlows" => Array[network_flow_pair],
3172
+ "accounts" => Array[network_flow_account_status],
3173
+ "rateCards" => Array[network_flow_rate_card],
3174
+ "totals" => {
3175
+ "bytes" => Numeric,
3176
+ "estimatedCost" => Numeric,
3177
+ "currency" => String,
3178
+ "unattributedBytes" => Numeric,
3179
+ "truncatedBytes" => Numeric
3180
+ }
3181
+ }
3182
+
3183
+ # Spec schema: `NetworkFlowPair`.
3184
+ type network_flow_pair = {
3185
+ "source" => network_flow_endpoint,
3186
+ "destination" => network_flow_endpoint,
3187
+ "scope" => "intra_zone"
3188
+ | "cross_zone"
3189
+ | "cross_region"
3190
+ | "internet_egress"
3191
+ | "internet_ingress"
3192
+ | "provider_service"
3193
+ | "nat_gateway"
3194
+ | "private_interconnect"
3195
+ | "unknown",
3196
+ "direction" => "egress" | "ingress",
3197
+ "attribution" => "resolved" | "unattributed",
3198
+ "bytes" => Numeric,
3199
+ "packets" => Numeric,
3200
+ "estimatedCost" => Numeric,
3201
+ "currency" => String,
3202
+ "accountId" => String,
3203
+ "pluginId" => String,
3204
+ "days" => Integer
3205
+ }
3206
+
3207
+ # Spec schema: `NetworkFlowRateCard`.
3208
+ type network_flow_rate_card = {
3209
+ "pluginId" => String,
3210
+ "currency" => String,
3211
+ "asOf" => String,
3212
+ "perGb" => Hash[String, Numeric],
3213
+ "queriesBillable" => bool,
3214
+ "sampled" => bool
3215
+ }
3216
+
3217
+ # Spec schema: `NetworkFlowScopeSummary`.
3218
+ type network_flow_scope_summary = {
3219
+ "scope" => "intra_zone"
3220
+ | "cross_zone"
3221
+ | "cross_region"
3222
+ | "internet_egress"
3223
+ | "internet_ingress"
3224
+ | "provider_service"
3225
+ | "nat_gateway"
3226
+ | "private_interconnect"
3227
+ | "unknown",
3228
+ "direction" => "egress" | "ingress",
3229
+ "bytes" => Numeric,
3230
+ "estimatedCost" => Numeric,
3231
+ "currency" => String,
3232
+ "crossedZone" => bool,
3233
+ "crossedRegion" => bool,
3234
+ "leftCloud" => bool,
3235
+ "unattributedBytes" => Numeric,
3236
+ "truncatedBytes" => Numeric
3237
+ }
3238
+
3239
+ # Spec schema: `NetworkFlowSettings`.
3240
+ type network_flow_settings = { "enabled" => bool, "initialLookbackDays" => Integer }
3241
+
3242
+ # Spec schema: `NetworkFlowSource`.
3243
+ type network_flow_source = {
3244
+ "id" => String,
3245
+ "target" => String,
3246
+ "region" => String | nil,
3247
+ "destinationType" => String,
3248
+ "usable" => bool,
3249
+ "unusableReason" => String | nil,
3250
+ "helpUrl" => String | nil
3251
+ }
3252
+
3130
3253
  # Spec schema: `NoSqlCommandRequest`.
3131
3254
  type no_sql_command_request = {
3132
3255
  "pluginId" => String,
@@ -3975,6 +4098,56 @@ module Infrawrench
3975
4098
  }
3976
4099
  | nil
3977
4100
 
4101
+ # Spec schema: `QuotaAccountStatus`.
4102
+ type quota_account_status = {
4103
+ "accountId" => String,
4104
+ "accountName" => String,
4105
+ "pluginId" => plugin_id,
4106
+ "quotaCount" => Integer,
4107
+ "lastPolledAt" => String | nil,
4108
+ "lastError" => String | nil,
4109
+ "lastErrorHelpLabel" => String | nil,
4110
+ "lastErrorHelpUrl" => String | nil,
4111
+ "partial" => bool
4112
+ }
4113
+
4114
+ # Spec schema: `QuotaAlertSettings`.
4115
+ type quota_alert_settings = { "enabled" => bool, "threshold" => Numeric, "lastNotifiedAt" => String | nil }
4116
+
4117
+ # Spec schema: `QuotaAlertSettingsUpdate`.
4118
+ type quota_alert_settings_update = { ?"enabled" => bool, ?"threshold" => Numeric }
4119
+
4120
+ # Spec schema: `QuotaListResponse`.
4121
+ type quota_list_response = {
4122
+ "rows" => Array[quota_row],
4123
+ "accounts" => Array[quota_account_status],
4124
+ "threshold" => Numeric,
4125
+ "unsupportedPluginIds" => Array[plugin_id]
4126
+ }
4127
+
4128
+ # Spec schema: `QuotaRow`.
4129
+ type quota_row = {
4130
+ "key" => String,
4131
+ "accountId" => String,
4132
+ "accountName" => String,
4133
+ "pluginId" => plugin_id,
4134
+ "service" => String,
4135
+ "name" => String,
4136
+ "region" => String | nil,
4137
+ "limit" => Numeric,
4138
+ "used" => Numeric,
4139
+ "utilization" => Numeric,
4140
+ "unit" => String | nil,
4141
+ "adjustable" => bool | nil,
4142
+ "docsUrl" => String | nil,
4143
+ "observedAt" => String,
4144
+ "severity" => "exhausted" | "critical" | "trending" | "ok",
4145
+ "trend" => quota_trend
4146
+ }
4147
+
4148
+ # Spec schema: `QuotaTrend`.
4149
+ type quota_trend = { "perDay" => Numeric | nil, "daysToExhaustion" => Numeric | nil, "points" => Integer }
4150
+
3978
4151
  # Spec schema: `ReauthenticationRequired`.
3979
4152
  type reauthentication_required = { "error" => String, "code" => "reauthentication_required" }
3980
4153
 
@@ -5315,6 +5488,7 @@ module Infrawrench
5315
5488
  | "ssh-fanout"
5316
5489
  | "metric-alerts"
5317
5490
  | "probes"
5491
+ | "quotas"
5318
5492
  | "workflows"
5319
5493
  | "deployments"
5320
5494
  | "settings"
@@ -5863,6 +6037,12 @@ module Infrawrench
5863
6037
  def update: (id: String, body: cost_scenario_model_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_scenario_model
5864
6038
  end
5865
6039
 
6040
+ class CostsAnomaliesNamespace
6041
+ def initialize: (Transport) -> void
6042
+ def acknowledge: (anomaly_id: String, ?org_id: String?, ?body: { "explanation" => String }?, ?request_options: Hash[Symbol, untyped]?) -> cost_anomaly
6043
+ def get: (?org_id: String?, ?days: String?, ?request_options: Hash[Symbol, untyped]?) -> { "anomalies" => Array[cost_anomaly] }
6044
+ end
6045
+
5866
6046
  class CostsAnomalySettingsNamespace
5867
6047
  def initialize: (Transport) -> void
5868
6048
  def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_anomaly_settings_view
@@ -5876,10 +6056,10 @@ module Infrawrench
5876
6056
  end
5877
6057
 
5878
6058
  class CostsNamespace
6059
+ attr_reader anomalies: CostsAnomaliesNamespace
5879
6060
  attr_reader anomaly_settings: CostsAnomalySettingsNamespace
5880
6061
  attr_reader efficiency_alert_settings: CostsEfficiencyAlertSettingsNamespace
5881
6062
  def initialize: (Transport) -> void
5882
- def anomalies: (?org_id: String?, ?days: String?, ?request_options: Hash[Symbol, untyped]?) -> { "anomalies" => Array[cost_anomaly] }
5883
6063
  def dimensions: (dimension: "provider" | "account" | "service" | "region" | "resource" | "tag" | "charge_type" | "commitment" | "tag-keys", ?org_id: String?, ?tag_key: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_dimension_values
5884
6064
  def efficiency_alerts: (?org_id: String?, ?kind: "commitment_expiry" | "commitment_idle" | "unit_cost_regression"?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> { "events" => Array[efficiency_alert_event] }
5885
6065
  def query: (body: cost_query_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_query_response
@@ -6150,6 +6330,18 @@ module Infrawrench
6150
6330
  def test: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "ok" => bool, "webhookCount" => Integer, "attempted" => Integer, "succeeded" => Integer }
6151
6331
  end
6152
6332
 
6333
+ class NetworkFlowsSettingsNamespace
6334
+ def initialize: (Transport) -> void
6335
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> network_flow_settings
6336
+ def update: (body: network_flow_settings, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> network_flow_settings
6337
+ end
6338
+
6339
+ class NetworkFlowsNamespace
6340
+ attr_reader settings: NetworkFlowsSettingsNamespace
6341
+ def initialize: (Transport) -> void
6342
+ def get: (?org_id: String?, ?from: String?, ?to: String?, ?scope: "intra_zone" | "cross_zone" | "cross_region" | "internet_egress" | "internet_ingress" | "provider_service" | "nat_gateway" | "private_interconnect" | "unknown"?, ?account_id: String?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> network_flow_feed
6343
+ end
6344
+
6153
6345
  class OrgsNamespace
6154
6346
  def initialize: (Transport) -> void
6155
6347
  def create: (body: create_org_request, ?request_options: Hash[Symbol, untyped]?) -> organization
@@ -6239,6 +6431,18 @@ module Infrawrench
6239
6431
  def update: (?body: { ?"firstName" => String, ?"lastName" => String }?, ?request_options: Hash[Symbol, untyped]?) -> profile_summary
6240
6432
  end
6241
6433
 
6434
+ class QuotasSettingsNamespace
6435
+ def initialize: (Transport) -> void
6436
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> quota_alert_settings
6437
+ def update: (?org_id: String?, ?body: quota_alert_settings_update?, ?request_options: Hash[Symbol, untyped]?) -> quota_alert_settings
6438
+ end
6439
+
6440
+ class QuotasNamespace
6441
+ attr_reader settings: QuotasSettingsNamespace
6442
+ def initialize: (Transport) -> void
6443
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> quota_list_response
6444
+ end
6445
+
6242
6446
  class ResourcesManifestNamespace
6243
6447
  def initialize: (Transport) -> void
6244
6448
  def create: (plugin_id: plugin_id, type_id: resource_type_id, body: apply_manifest_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
@@ -6530,6 +6734,7 @@ module Infrawrench
6530
6734
  attr_reader metric_alerts: MetricAlertsNamespace
6531
6735
  attr_reader moment: MomentNamespace
6532
6736
  attr_reader msteams: MsteamsNamespace
6737
+ attr_reader network_flows: NetworkFlowsNamespace
6533
6738
  attr_reader orgs: OrgsNamespace
6534
6739
  attr_reader orphans: OrphansNamespace
6535
6740
  attr_reader ownership: OwnershipNamespace
@@ -6537,6 +6742,7 @@ module Infrawrench
6537
6742
  attr_reader posture: PostureNamespace
6538
6743
  attr_reader probes: ProbesNamespace
6539
6744
  attr_reader profile: ProfileNamespace
6745
+ attr_reader quotas: QuotasNamespace
6540
6746
  attr_reader resources: ResourcesNamespace
6541
6747
  attr_reader rightsizing: RightsizingNamespace
6542
6748
  attr_reader saved_cost_filters: SavedCostFiltersNamespace
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.9.0
4
+ version: 1.12.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-11 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: Generated Ruby client for the Infrawrench API (v1.9.0). Covers the published
14
+ description: Generated Ruby client for the Infrawrench API (v1.12.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.9.0).
61
+ summary: Generated Ruby client for the Infrawrench API (v1.12.0).
62
62
  test_files: []