infrawrench-sdk 1.9.0 → 1.10.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: 06e454c1ee80b35b1019cf6e23573c12ee87452573ad62b0a937cb3a82767d5e
4
+ data.tar.gz: 0c67dfbd77d2c683b391edf762b72a62a01f5f1341104277069ec36bb13e1145
5
5
  SHA512:
6
- metadata.gz: c54752af40fecf58d791421d2235f0d227795c2e4a63eef0677cd96e28efd2d239b725ca4e95bd7d7489cccc9e2f6a09dbc907d1421d24e663eeffa3639ed98b
7
- data.tar.gz: 296eb9814558485cba0308d5a841cfb07759bcee1c0eff2233b41d297e95034e61eebb166d73377e1ebc557d914e4ad191b7cdef8ee9af2b53ca93ff57af3b1e
6
+ metadata.gz: 983ee17ceef08453c468e62f228e5853c92477fdba2581895eb8eaae6c30a7735c1fc4c436ee7106b4cd3be72dcf4443e1b2ace2e0ac79fd3fb10c474e0e7859
7
+ data.tar.gz: 99289d98fe6398750526f6379ad5254064b823fa90cbd1f9c52bf9e6f7f6633e6d25b7406b06347144550ceb197168711ff6ade9696ff9e1bfcaf3da9627318c
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.10.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
+ 553 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.10.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.10.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.10.0)."
21
+ spec.description = "Generated Ruby client for the Infrawrench API (v1.10.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.10.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.10.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
@@ -12556,6 +12747,8 @@ module Infrawrench
12556
12747
  attr_reader :moment
12557
12748
  # @return [MsteamsNamespace] `client.msteams`
12558
12749
  attr_reader :msteams
12750
+ # @return [NetworkFlowsNamespace] `client.network_flows`
12751
+ attr_reader :network_flows
12559
12752
  # @return [OrgsNamespace] `client.orgs`
12560
12753
  attr_reader :orgs
12561
12754
  # @return [OrphansNamespace] `client.orphans`
@@ -12667,6 +12860,7 @@ module Infrawrench
12667
12860
  @metric_alerts = MetricAlertsNamespace.new(@transport)
12668
12861
  @moment = MomentNamespace.new(@transport)
12669
12862
  @msteams = MsteamsNamespace.new(@transport)
12863
+ @network_flows = NetworkFlowsNamespace.new(@transport)
12670
12864
  @orgs = OrgsNamespace.new(@transport)
12671
12865
  @orphans = OrphansNamespace.new(@transport)
12672
12866
  @ownership = OwnershipNamespace.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -1043,7 +1043,8 @@ module Infrawrench
1043
1043
  "costReportId" => String | nil,
1044
1044
  "createdByUserId" => String | nil,
1045
1045
  "createdAt" => String,
1046
- "updatedAt" => String
1046
+ "updatedAt" => String,
1047
+ "costAnomalyId" => String | nil
1047
1048
  }
1048
1049
 
1049
1050
  # Spec schema: `CostAnnotationInput`.
@@ -1067,7 +1068,14 @@ module Infrawrench
1067
1068
  "thresholdCents" => Integer,
1068
1069
  "detectedAt" => String,
1069
1070
  "notifiedAt" => String | nil,
1070
- "hints" => Array[String]
1071
+ "hints" => Array[String],
1072
+ "acknowledgement" => {
1073
+ "explanation" => String,
1074
+ "acknowledgedAt" => String,
1075
+ "acknowledgedByUserId" => String | nil,
1076
+ "annotationId" => String | nil
1077
+ }
1078
+ | nil
1071
1079
  }
1072
1080
 
1073
1081
  # Spec schema: `CostAnomalySettings`.
@@ -3127,6 +3135,120 @@ module Infrawrench
3127
3135
  # Spec schema: `MsTeamsWebhookUpdate`.
3128
3136
  type ms_teams_webhook_update = { "label" => String }
3129
3137
 
3138
+ # Spec schema: `NetworkFlowAccountStatus`.
3139
+ type network_flow_account_status = {
3140
+ "accountId" => String,
3141
+ "pluginId" => String,
3142
+ "displayName" => String,
3143
+ "supportsFlows" => bool,
3144
+ "collectedThrough" => String | nil,
3145
+ "lastPolledAt" => String | nil,
3146
+ "failureCount" => Integer,
3147
+ "lastError" => String | nil,
3148
+ "lastErrorHelpUrl" => String | nil,
3149
+ "sources" => Array[network_flow_source],
3150
+ "lastQueryBytesScanned" => Numeric | nil
3151
+ }
3152
+
3153
+ # Spec schema: `NetworkFlowEndpoint`.
3154
+ type network_flow_endpoint = {
3155
+ "ref" => String,
3156
+ "label" => String,
3157
+ "zone" => String,
3158
+ "region" => String,
3159
+ "service" => String,
3160
+ "resourceTypeId" => String
3161
+ }
3162
+
3163
+ # Spec schema: `NetworkFlowFeed`.
3164
+ type network_flow_feed = {
3165
+ "enabled" => bool,
3166
+ "initialLookbackDays" => Integer,
3167
+ "estimated" => bool,
3168
+ "range" => { "from" => String, "to" => String },
3169
+ "scopes" => Array[network_flow_scope_summary],
3170
+ "topFlows" => Array[network_flow_pair],
3171
+ "accounts" => Array[network_flow_account_status],
3172
+ "rateCards" => Array[network_flow_rate_card],
3173
+ "totals" => {
3174
+ "bytes" => Numeric,
3175
+ "estimatedCost" => Numeric,
3176
+ "currency" => String,
3177
+ "unattributedBytes" => Numeric,
3178
+ "truncatedBytes" => Numeric
3179
+ }
3180
+ }
3181
+
3182
+ # Spec schema: `NetworkFlowPair`.
3183
+ type network_flow_pair = {
3184
+ "source" => network_flow_endpoint,
3185
+ "destination" => network_flow_endpoint,
3186
+ "scope" => "intra_zone"
3187
+ | "cross_zone"
3188
+ | "cross_region"
3189
+ | "internet_egress"
3190
+ | "internet_ingress"
3191
+ | "provider_service"
3192
+ | "nat_gateway"
3193
+ | "private_interconnect"
3194
+ | "unknown",
3195
+ "direction" => "egress" | "ingress",
3196
+ "attribution" => "resolved" | "unattributed",
3197
+ "bytes" => Numeric,
3198
+ "packets" => Numeric,
3199
+ "estimatedCost" => Numeric,
3200
+ "currency" => String,
3201
+ "accountId" => String,
3202
+ "pluginId" => String,
3203
+ "days" => Integer
3204
+ }
3205
+
3206
+ # Spec schema: `NetworkFlowRateCard`.
3207
+ type network_flow_rate_card = {
3208
+ "pluginId" => String,
3209
+ "currency" => String,
3210
+ "asOf" => String,
3211
+ "perGb" => Hash[String, Numeric],
3212
+ "queriesBillable" => bool,
3213
+ "sampled" => bool
3214
+ }
3215
+
3216
+ # Spec schema: `NetworkFlowScopeSummary`.
3217
+ type network_flow_scope_summary = {
3218
+ "scope" => "intra_zone"
3219
+ | "cross_zone"
3220
+ | "cross_region"
3221
+ | "internet_egress"
3222
+ | "internet_ingress"
3223
+ | "provider_service"
3224
+ | "nat_gateway"
3225
+ | "private_interconnect"
3226
+ | "unknown",
3227
+ "direction" => "egress" | "ingress",
3228
+ "bytes" => Numeric,
3229
+ "estimatedCost" => Numeric,
3230
+ "currency" => String,
3231
+ "crossedZone" => bool,
3232
+ "crossedRegion" => bool,
3233
+ "leftCloud" => bool,
3234
+ "unattributedBytes" => Numeric,
3235
+ "truncatedBytes" => Numeric
3236
+ }
3237
+
3238
+ # Spec schema: `NetworkFlowSettings`.
3239
+ type network_flow_settings = { "enabled" => bool, "initialLookbackDays" => Integer }
3240
+
3241
+ # Spec schema: `NetworkFlowSource`.
3242
+ type network_flow_source = {
3243
+ "id" => String,
3244
+ "target" => String,
3245
+ "region" => String | nil,
3246
+ "destinationType" => String,
3247
+ "usable" => bool,
3248
+ "unusableReason" => String | nil,
3249
+ "helpUrl" => String | nil
3250
+ }
3251
+
3130
3252
  # Spec schema: `NoSqlCommandRequest`.
3131
3253
  type no_sql_command_request = {
3132
3254
  "pluginId" => String,
@@ -5863,6 +5985,12 @@ module Infrawrench
5863
5985
  def update: (id: String, body: cost_scenario_model_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_scenario_model
5864
5986
  end
5865
5987
 
5988
+ class CostsAnomaliesNamespace
5989
+ def initialize: (Transport) -> void
5990
+ def acknowledge: (anomaly_id: String, ?org_id: String?, ?body: { "explanation" => String }?, ?request_options: Hash[Symbol, untyped]?) -> cost_anomaly
5991
+ def get: (?org_id: String?, ?days: String?, ?request_options: Hash[Symbol, untyped]?) -> { "anomalies" => Array[cost_anomaly] }
5992
+ end
5993
+
5866
5994
  class CostsAnomalySettingsNamespace
5867
5995
  def initialize: (Transport) -> void
5868
5996
  def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_anomaly_settings_view
@@ -5876,10 +6004,10 @@ module Infrawrench
5876
6004
  end
5877
6005
 
5878
6006
  class CostsNamespace
6007
+ attr_reader anomalies: CostsAnomaliesNamespace
5879
6008
  attr_reader anomaly_settings: CostsAnomalySettingsNamespace
5880
6009
  attr_reader efficiency_alert_settings: CostsEfficiencyAlertSettingsNamespace
5881
6010
  def initialize: (Transport) -> void
5882
- def anomalies: (?org_id: String?, ?days: String?, ?request_options: Hash[Symbol, untyped]?) -> { "anomalies" => Array[cost_anomaly] }
5883
6011
  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
6012
  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
6013
  def query: (body: cost_query_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_query_response
@@ -6150,6 +6278,18 @@ module Infrawrench
6150
6278
  def test: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "ok" => bool, "webhookCount" => Integer, "attempted" => Integer, "succeeded" => Integer }
6151
6279
  end
6152
6280
 
6281
+ class NetworkFlowsSettingsNamespace
6282
+ def initialize: (Transport) -> void
6283
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> network_flow_settings
6284
+ def update: (body: network_flow_settings, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> network_flow_settings
6285
+ end
6286
+
6287
+ class NetworkFlowsNamespace
6288
+ attr_reader settings: NetworkFlowsSettingsNamespace
6289
+ def initialize: (Transport) -> void
6290
+ 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
6291
+ end
6292
+
6153
6293
  class OrgsNamespace
6154
6294
  def initialize: (Transport) -> void
6155
6295
  def create: (body: create_org_request, ?request_options: Hash[Symbol, untyped]?) -> organization
@@ -6530,6 +6670,7 @@ module Infrawrench
6530
6670
  attr_reader metric_alerts: MetricAlertsNamespace
6531
6671
  attr_reader moment: MomentNamespace
6532
6672
  attr_reader msteams: MsteamsNamespace
6673
+ attr_reader network_flows: NetworkFlowsNamespace
6533
6674
  attr_reader orgs: OrgsNamespace
6534
6675
  attr_reader orphans: OrphansNamespace
6535
6676
  attr_reader ownership: OwnershipNamespace
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.10.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.10.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.10.0).
62
62
  test_files: []