infrawrench-sdk 1.66.0 → 1.69.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: 1b12c3510f623aa61a1409b1430c1cafccf89a939221ec5cee7d35a51650a6f1
4
- data.tar.gz: a7bb4f300419ad8a0456d5f5d55e6253d0022d2fa98057469b8324c87409061d
3
+ metadata.gz: 46cb020003e6f0ccd4c0df6c8eaa6941ace890215f3818597b2d3a188d151f7c
4
+ data.tar.gz: e392a0ed1b80a61ee7f0dc476c785ad97fc69ee6d58160f79ae402579fd808ee
5
5
  SHA512:
6
- metadata.gz: 888eb1fb8fffd427d6646e6ab9f1b01f6e12234fbd163ed53a4555157d5dd53b08c2758924a3d458f19d1f154d3e96e7c128beb89986114974c66dd61527b050
7
- data.tar.gz: e283026c7f55b494868da5f38ecc8f9d81019a325be0442a13ef414a15a14318fe11da077b512e4bf13847ef07b9fc76982819175967411d93f420953887d676
6
+ metadata.gz: dda0c71d25b1d8a63605f0bda392441bfaf6bf7037ea86bc241c2e445512612004db1f07cb6d8f64f04c34d7f23dfcefc2fb6b0f3f2585b311df1bd12a872c42
7
+ data.tar.gz: f0d91cee4b944347d3899857752f0a75d25927924e6bd0fddf99bf9611b0a94d031bad2f8a67400ddf4cb364cdd0fb78e0ad9c8bd33cd222da4e44af96256768
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.66.0`).
3
+ Generated Ruby client for the Infrawrench API (API version `1.69.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
- 889 schemas, as RBS type aliases that steep and TypeProf can read.
44
+ 900 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.66.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.69.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.66.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.69.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.66.0)."
21
- spec.description = "Generated Ruby client for the Infrawrench API (v1.66.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.69.0)."
21
+ spec.description = "Generated Ruby client for the Infrawrench API (v1.69.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.66.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.69.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.66.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.69.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -3673,6 +3673,31 @@ module Infrawrench
3673
3673
  )
3674
3674
  end
3675
3675
 
3676
+ # List a metric's labels
3677
+ #
3678
+ # The label keys the metric's values carry, each with its distinct values
3679
+ # (at most 500) and its cost mapping. A mapped label nobody has reported yet
3680
+ # is listed with no values.
3681
+ #
3682
+ # GET /api/org/{orgId}/business-metrics/{id}/labels
3683
+ #
3684
+ # Raises on 404: Not found
3685
+ #
3686
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
3687
+ # constructed with.
3688
+ # @param id [String] Metric id or key
3689
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
3690
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
3691
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
3692
+ def labels(id:, org_id: nil, request_options: nil)
3693
+ @transport.request(
3694
+ http_method: "GET",
3695
+ path: "/api/org/{orgId}/business-metrics/{id}/labels",
3696
+ path_params: { "orgId" => org_id, "id" => id },
3697
+ request_options: request_options
3698
+ )
3699
+ end
3700
+
3676
3701
  # Query unit costs or margin
3677
3702
  #
3678
3703
  # Divide spend by the metric, bucketed as asked. Three properties of the
@@ -3687,9 +3712,11 @@ module Infrawrench
3687
3712
  # - **Currencies are never merged.** Spend in a currency with no stated rate
3688
3713
  # keeps its own series rather than being dropped or added to another.
3689
3714
  #
3690
- # There is no `groupBy`: a per-group ratio would need a per-group
3691
- # denominator, and dividing each service's spend by the whole customer count
3692
- # produces numbers that do not sum to the real one.
3715
+ # There is no spend `groupBy`: a per-group ratio needs a per-group
3716
+ # denominator. Split by a metric label with `groupByLabel` instead; in a
3717
+ # ratio mode the label must be mapped to the cost dimension its values name
3718
+ # (`labelMappings` on the metric), so each label value's spend is divided by
3719
+ # its own volume.
3693
3720
  #
3694
3721
  # _Requires permission: `costs:read`._
3695
3722
  #
@@ -3750,6 +3777,57 @@ module Infrawrench
3750
3777
  request_options: request_options
3751
3778
  )
3752
3779
  end
3780
+
3781
+ # Query cost per usage unit
3782
+ #
3783
+ # Spend divided by the usage quantity providers report in one `usageUnit`,
3784
+ # with no business metric involved. Both halves come from the same cost rows
3785
+ # (those reported in that unit), so the numerator is exactly the spend that
3786
+ # bought the denominator. A bucket with no usage is a gap (`no_usage`),
3787
+ # never 0. Labels do not apply.
3788
+ #
3789
+ # POST /api/org/{orgId}/business-metrics/usage-unit-costs
3790
+ #
3791
+ # Raises on 400: Bad request
3792
+ #
3793
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
3794
+ # constructed with.
3795
+ # @param body [Hash] Request body, shaped as `UnitCostQueryRequest`.
3796
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
3797
+ # @return [Hash] Parsed JSON, shaped as `UnitCostQueryResponse` — see
3798
+ # `sig/infrawrench/sdk.rbs`.
3799
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
3800
+ def usage_unit_costs(body:, org_id: nil, request_options: nil)
3801
+ @transport.request(
3802
+ http_method: "POST",
3803
+ path: "/api/org/{orgId}/business-metrics/usage-unit-costs",
3804
+ path_params: { "orgId" => org_id },
3805
+ body: body,
3806
+ request_options: request_options
3807
+ )
3808
+ end
3809
+
3810
+ # List usage units
3811
+ #
3812
+ # The provider usage units the organization's cost rows carry over the last
3813
+ # 90 days, most spend first, with a few of the services reporting each.
3814
+ # Backs the per-usage-unit picker.
3815
+ #
3816
+ # GET /api/org/{orgId}/business-metrics/usage-units
3817
+ #
3818
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
3819
+ # constructed with.
3820
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
3821
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
3822
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
3823
+ def usage_units(org_id: nil, request_options: nil)
3824
+ @transport.request(
3825
+ http_method: "GET",
3826
+ path: "/api/org/{orgId}/business-metrics/usage-units",
3827
+ path_params: { "orgId" => org_id },
3828
+ request_options: request_options
3829
+ )
3830
+ end
3753
3831
  end
3754
3832
 
3755
3833
  # `client.calendar.subscriptions`
@@ -7715,7 +7793,8 @@ module Infrawrench
7715
7793
  # @param to [String, nil] Defaults to today.
7716
7794
  # @param basis [String, nil] Which money to sum. `cash` (the default) is what the provider
7717
7795
  # charged on the day it charged it; `amortized` spreads a commitment's up-front fee across
7718
- # the term it buys. Providers that report no amortized amount fall back to their cash
7796
+ # the term it buys; `blended` also spreads each commitment's discount evenly over all the
7797
+ # usage it could cover. Providers that report no amortized amount fall back to their cash
7719
7798
  # amount.
7720
7799
  # @param adjusted [String, nil] Apply the organization's billing rules (see /billing-rules):
7721
7800
  # markups multiply, and a reallocation moves a centre's spend onto another centre. Off by
@@ -7778,7 +7857,8 @@ module Infrawrench
7778
7857
  # @param to [String, nil] Defaults to today.
7779
7858
  # @param basis [String, nil] Which money to sum. `cash` (the default) is what the provider
7780
7859
  # charged on the day it charged it; `amortized` spreads a commitment's up-front fee across
7781
- # the term it buys. Providers that report no amortized amount fall back to their cash
7860
+ # the term it buys; `blended` also spreads each commitment's discount evenly over all the
7861
+ # usage it could cover. Providers that report no amortized amount fall back to their cash
7782
7862
  # amount.
7783
7863
  # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7784
7864
  # @return [Hash] Parsed JSON, shaped as `UntaggedSpendReport` — see
@@ -9358,9 +9438,10 @@ module Infrawrench
9358
9438
  # @param window_days [Integer, nil]
9359
9439
  # @param cost_basis [String, nil] Which charge-type basis both windows are read on. `cash`
9360
9440
  # (the default) is what the provider charged on the day it charged it; `amortized` spreads a
9361
- # commitment's up-front fee across the term it buys. It is echoed on every response because
9362
- # a delta whose basis is unstated is unreadable — an amortized 'after' against a cash
9363
- # 'before' looks exactly like a saving.
9441
+ # commitment's up-front fee across the term it buys; `blended` also spreads each
9442
+ # commitment's discount evenly over the usage it could cover. It is echoed on every response
9443
+ # because a delta whose basis is unstated is unreadable — an amortized 'after' against a
9444
+ # cash 'before' looks exactly like a saving.
9364
9445
  # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
9365
9446
  # @return [Hash] Parsed JSON, shaped as `DeploymentCostImpact` — see
9366
9447
  # `sig/infrawrench/sdk.rbs`.
@@ -13223,6 +13304,124 @@ module Infrawrench
13223
13304
  end
13224
13305
  end
13225
13306
 
13307
+ # `client.network_flows.kubernetes.settings`
13308
+ class NetworkFlowsKubernetesSettingsNamespace
13309
+ # @api private
13310
+ # @param transport [Transport]
13311
+ def initialize(transport)
13312
+ @transport = transport
13313
+ end
13314
+
13315
+ # Read a cluster's network cost settings
13316
+ #
13317
+ # _Requires permission: `costs:read`._
13318
+ #
13319
+ # GET /api/org/{orgId}/network-flows/kubernetes/{accountId}/settings
13320
+ #
13321
+ # Raises on 404: Not found
13322
+ #
13323
+ # @param org_id [String, nil] Defaults to the `org_id` the client was constructed with.
13324
+ # @param account_id [String]
13325
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
13326
+ # @return [Hash] Parsed JSON, shaped as `KubernetesNetworkSettings` — see
13327
+ # `sig/infrawrench/sdk.rbs`.
13328
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
13329
+ def get(account_id:, org_id: nil, request_options: nil)
13330
+ @transport.request(
13331
+ http_method: "GET",
13332
+ path: "/api/org/{orgId}/network-flows/kubernetes/{accountId}/settings",
13333
+ path_params: { "orgId" => org_id, "accountId" => account_id },
13334
+ request_options: request_options
13335
+ )
13336
+ end
13337
+
13338
+ # Set the billed data-transfer source for a cluster
13339
+ #
13340
+ # Say which billed cost rows are this cluster's data transfer, in the cost
13341
+ # query language. An empty or null query clears it. A query that narrows
13342
+ # nothing is refused: it would apportion the whole bill across one cluster.
13343
+ #
13344
+ # _Requires permission: `costs:write`._
13345
+ #
13346
+ # PUT /api/org/{orgId}/network-flows/kubernetes/{accountId}/settings
13347
+ #
13348
+ # Raises on 400: Bad request
13349
+ #
13350
+ # Raises on 403: Forbidden
13351
+ #
13352
+ # Raises on 404: Not found
13353
+ #
13354
+ # @param org_id [String, nil] Defaults to the `org_id` the client was constructed with.
13355
+ # @param account_id [String]
13356
+ # @param body [Hash] Request body, shaped as `Hash`.
13357
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
13358
+ # @return [Hash] Parsed JSON, shaped as `KubernetesNetworkSettings` — see
13359
+ # `sig/infrawrench/sdk.rbs`.
13360
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
13361
+ def update(account_id:, body:, org_id: nil, request_options: nil)
13362
+ @transport.request(
13363
+ http_method: "PUT",
13364
+ path: "/api/org/{orgId}/network-flows/kubernetes/{accountId}/settings",
13365
+ path_params: { "orgId" => org_id, "accountId" => account_id },
13366
+ body: body,
13367
+ request_options: request_options
13368
+ )
13369
+ end
13370
+ end
13371
+
13372
+ # `client.network_flows.kubernetes`
13373
+ class NetworkFlowsKubernetesNamespace
13374
+ # @return [NetworkFlowsKubernetesSettingsNamespace] `client.network_flows.kubernetes.settings`
13375
+ attr_reader :settings
13376
+
13377
+ # @api private
13378
+ # @param transport [Transport]
13379
+ def initialize(transport)
13380
+ @transport = transport
13381
+ @settings = NetworkFlowsKubernetesSettingsNamespace.new(@transport)
13382
+ end
13383
+
13384
+ # Kubernetes network costs for one cluster
13385
+ #
13386
+ # Pod-level network attribution for a Kubernetes account: bytes by
13387
+ # namespace, workload and boundary (same zone, cross-zone, cross-region,
13388
+ # internet), the largest workload → peer pairs, and which sources the
13389
+ # figures came from.
13390
+ #
13391
+ # `estimatedCost` is bytes at the published rate of the cloud the nodes run
13392
+ # on, with any per-cluster overrides from the account's rates field. When a
13393
+ # billed source is configured (`PUT .../settings`), `allocatedCost`
13394
+ # apportions that real billed spend across the rows day by day, never
13395
+ # handing out more than was billed; the rest is `unallocatedCost`.
13396
+ #
13397
+ # _Requires permission: `costs:read`._
13398
+ #
13399
+ # GET /api/org/{orgId}/network-flows/kubernetes/{accountId}
13400
+ #
13401
+ # Raises on 400: Bad request
13402
+ #
13403
+ # Raises on 404: Not found
13404
+ #
13405
+ # @param org_id [String, nil] Defaults to the `org_id` the client was constructed with.
13406
+ # @param account_id [String]
13407
+ # @param from [String, nil] Inclusive start day. Defaults to 13 days ago.
13408
+ # @param to [String, nil] Inclusive end day. Defaults to today.
13409
+ # @param limit [Integer, nil] Pairs to return in `topTalkers`. Defaults to 25.
13410
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
13411
+ # @return [Hash] Parsed JSON, shaped as `KubernetesNetworkReport` — see
13412
+ # `sig/infrawrench/sdk.rbs`.
13413
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
13414
+ def get(account_id:, org_id: nil, from: nil, to: nil, limit: nil, request_options: nil)
13415
+ @transport.request(
13416
+ http_method: "GET",
13417
+ path: "/api/org/{orgId}/network-flows/kubernetes/{accountId}",
13418
+ path_params: { "orgId" => org_id, "accountId" => account_id },
13419
+ query: { "from" => from, "to" => to, "limit" => limit },
13420
+ request_options: request_options
13421
+ )
13422
+ end
13423
+ end
13424
+
13226
13425
  # `client.network_flows.settings`
13227
13426
  class NetworkFlowsSettingsNamespace
13228
13427
  # @api private
@@ -13289,6 +13488,8 @@ module Infrawrench
13289
13488
 
13290
13489
  # `client.network_flows`
13291
13490
  class NetworkFlowsNamespace
13491
+ # @return [NetworkFlowsKubernetesNamespace] `client.network_flows.kubernetes`
13492
+ attr_reader :kubernetes
13292
13493
  # @return [NetworkFlowsSettingsNamespace] `client.network_flows.settings`
13293
13494
  attr_reader :settings
13294
13495
 
@@ -13296,6 +13497,7 @@ module Infrawrench
13296
13497
  # @param transport [Transport]
13297
13498
  def initialize(transport)
13298
13499
  @transport = transport
13500
+ @kubernetes = NetworkFlowsKubernetesNamespace.new(@transport)
13299
13501
  @settings = NetworkFlowsSettingsNamespace.new(@transport)
13300
13502
  end
13301
13503
 
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.66.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.69.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.66.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.69.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.66.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.69.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.66.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.69.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.66.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.69.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.66.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.69.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.66.0"
18
+ VERSION = "1.69.0"
19
19
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.66.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.69.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.66.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.69.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.66.0 | MIT | Copyright (c) 2026 Infrawrench LLC
1
+ # infrawrench-sdk v1.69.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.66.0).
4
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.69.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -1105,7 +1105,7 @@ module Infrawrench
1105
1105
  # The basis `actualCents` and `forecastCents` were measured on.
1106
1106
  #
1107
1107
  # Spec schema: `BudgetCostBasis`.
1108
- type budget_cost_basis = "cash" | "amortized"
1108
+ type budget_cost_basis = "cash" | "amortized" | "blended"
1109
1109
 
1110
1110
  # Spec schema: `BudgetCostFilter`.
1111
1111
  type budget_cost_filter = {
@@ -1261,6 +1261,8 @@ module Infrawrench
1261
1261
  "currency" => String | nil,
1262
1262
  "costScope" => Array[business_metric_scope_term],
1263
1263
  "savedFilterId" => String | nil,
1264
+ "labelMappings" => Array[business_metric_label_mapping],
1265
+ "thresholds" => Array[unit_cost_threshold],
1264
1266
  "createdByUserId" => String | nil,
1265
1267
  "createdAt" => String,
1266
1268
  "updatedAt" => String,
@@ -1385,7 +1387,9 @@ module Infrawrench
1385
1387
  "kind" => business_metric_kind,
1386
1388
  ?"currency" => String,
1387
1389
  ?"costScope" => Array[business_metric_scope_term],
1388
- ?"savedFilterId" => String
1390
+ ?"savedFilterId" => String,
1391
+ ?"labelMappings" => Array[business_metric_label_mapping],
1392
+ ?"thresholds" => Array[unit_cost_threshold]
1389
1393
  }
1390
1394
 
1391
1395
  # What the metric's numbers are. `count` is a unit-less quantity (customers,
@@ -1397,6 +1401,65 @@ module Infrawrench
1397
1401
  # Spec schema: `BusinessMetricKind`.
1398
1402
  type business_metric_kind = "count" | "currency"
1399
1403
 
1404
+ # Joins a label to a cost dimension so unit cost and margin can be computed
1405
+ # per label value (cost per customer). Ratio modes refuse an unmapped label:
1406
+ # without a per-value numerator the only spend available is the whole scope's.
1407
+ #
1408
+ # Spec schema: `BusinessMetricLabelMapping`.
1409
+ type business_metric_label_mapping = { "label" => String, "target" => business_metric_label_target }
1410
+
1411
+ # Spec schema: `BusinessMetricLabelSummary`.
1412
+ type business_metric_label_summary = {
1413
+ "key" => String,
1414
+ "values" => Array[String],
1415
+ "truncated" => bool,
1416
+ "mapping" => business_metric_label_target
1417
+ & ({
1418
+ "kind" => "dimension",
1419
+ "dimension" => "provider"
1420
+ | "account"
1421
+ | "service"
1422
+ | "region"
1423
+ | "resource"
1424
+ | "tag"
1425
+ | "charge_type"
1426
+ | "commitment"
1427
+ | "virtual_tag",
1428
+ ?"tagKey" => String
1429
+ }
1430
+ | { "kind" => "cost_centre" }
1431
+ | nil)
1432
+ }
1433
+
1434
+ # Where a label's values live on the cost side. A `dimension` target matches
1435
+ # label values to dimension values exactly; `cost_centre` matches a centre by
1436
+ # id or, case-insensitively, by name.
1437
+ #
1438
+ # Spec schema: `BusinessMetricLabelTarget`.
1439
+ type business_metric_label_target = {
1440
+ "kind" => "dimension",
1441
+ "dimension" => "provider"
1442
+ | "account"
1443
+ | "service"
1444
+ | "region"
1445
+ | "resource"
1446
+ | "tag"
1447
+ | "charge_type"
1448
+ | "commitment"
1449
+ | "virtual_tag",
1450
+ ?"tagKey" => String
1451
+ }
1452
+ | { "kind" => "cost_centre" }
1453
+
1454
+ # A value's labels, e.g. `{ "customer": "acme", "plan": "pro" }`. At most 8,
1455
+ # keys are slugs, values up to 200 characters. Rows partition the metric: a
1456
+ # day's total is the sum of every row for it, so report a breakdown or a
1457
+ # total, never both. The same day with the same labels restates; different
1458
+ # labels are a different row.
1459
+ #
1460
+ # Spec schema: `BusinessMetricLabels`.
1461
+ type business_metric_labels = Hash[String, String]
1462
+
1400
1463
  # Spec schema: `BusinessMetricScopeTerm`.
1401
1464
  type business_metric_scope_term = {
1402
1465
  "dimension" => "provider"
@@ -1449,12 +1512,20 @@ module Infrawrench
1449
1512
  "day" => String,
1450
1513
  "value" => Numeric,
1451
1514
  "label" => String | nil,
1515
+ "labels" => business_metric_labels,
1452
1516
  "source" => "api" | "workflow" | "import",
1453
1517
  "updatedAt" => String
1454
1518
  }
1455
1519
 
1456
1520
  # Spec schema: `BusinessMetricValuesInput`.
1457
- type business_metric_values_input = { "values" => Array[{ "date" => String, "value" => Numeric, ?"label" => String }] }
1521
+ type business_metric_values_input = {
1522
+ "values" => Array[{
1523
+ "date" => String,
1524
+ "value" => Numeric,
1525
+ ?"label" => String,
1526
+ ?"labels" => business_metric_labels
1527
+ }]
1528
+ }
1458
1529
 
1459
1530
  # Spec schema: `CalendarEvent`.
1460
1531
  type calendar_event = {
@@ -1646,12 +1717,14 @@ module Infrawrench
1646
1717
 
1647
1718
  # Which charge-type basis both windows are read on. `cash` (the default) is
1648
1719
  # what the provider charged on the day it charged it; `amortized` spreads a
1649
- # commitment's up-front fee across the term it buys. It is echoed on every
1650
- # response because a delta whose basis is unstated is unreadable — an
1651
- # amortized 'after' against a cash 'before' looks exactly like a saving.
1720
+ # commitment's up-front fee across the term it buys; `blended` also spreads
1721
+ # each commitment's discount evenly over the usage it could cover. It is
1722
+ # echoed on every response because a delta whose basis is unstated is
1723
+ # unreadable — an amortized 'after' against a cash 'before' looks exactly like
1724
+ # a saving.
1652
1725
  #
1653
1726
  # Spec schema: `ChangeCostBasis`.
1654
- type change_cost_basis = "cash" | "amortized"
1727
+ type change_cost_basis = "cash" | "amortized" | "blended"
1655
1728
 
1656
1729
  # Spec schema: `ChangeCostImpact`.
1657
1730
  type change_cost_impact = {
@@ -1974,6 +2047,7 @@ module Infrawrench
1974
2047
  "dimensions" => Array["service" | "region" | "resource" | "tag"],
1975
2048
  "chargeTypes" => bool,
1976
2049
  "amortization" => bool,
2050
+ ?"blending" => bool,
1977
2051
  "estimated" => bool,
1978
2052
  "granularity" => "daily" | "hourly",
1979
2053
  "costLastPolledAt" => String | nil,
@@ -2282,10 +2356,16 @@ module Infrawrench
2282
2356
  # `amortized` spreads a commitment's up-front fee across the term it buys, so
2283
2357
  # a year of capacity bought on one day is counted on the days it covers.
2284
2358
  # Providers that report no amortized amount fall back to their cash amount, so
2285
- # an amortized query over a mixed estate never drops their spend.
2359
+ # an amortized query over a mixed estate never drops their spend. `blended` is
2360
+ # amortized with each commitment's discount (reservations, savings plans,
2361
+ # committed-use discounts) spread evenly over all the usage it was eligible to
2362
+ # cover, so every eligible hour in the commitment's scope carries the same
2363
+ # effective rate whichever account or resource the provider applied it to: the
2364
+ # fair basis for chargeback. Day totals equal the amortized totals exactly;
2365
+ # rows a provider did not blend fall back to their amortized amount.
2286
2366
  #
2287
2367
  # Spec schema: `CostBasis`.
2288
- type cost_basis = "cash" | "amortized"
2368
+ type cost_basis = "cash" | "amortized" | "blended"
2289
2369
 
2290
2370
  # Time bucket of the x axis. Weeks start on Monday and quarters on the first
2291
2371
  # of January, April, July and October (UTC). `cumulative` is the older
@@ -2345,7 +2425,7 @@ module Infrawrench
2345
2425
  "dateRange" => cost_date_range,
2346
2426
  ?"filters" => Array[cost_report_filter],
2347
2427
  ?"savedFilterId" => String,
2348
- ?"costBasis" => "cash" | "amortized",
2428
+ ?"costBasis" => "cash" | "amortized" | "blended",
2349
2429
  ?"adjusted" => bool
2350
2430
  }
2351
2431
  | {
@@ -2354,7 +2434,7 @@ module Infrawrench
2354
2434
  "dateRange" => cost_date_range,
2355
2435
  ?"filters" => Array[cost_report_filter],
2356
2436
  ?"savedFilterId" => String,
2357
- ?"costBasis" => "cash" | "amortized"
2437
+ ?"costBasis" => "cash" | "amortized" | "blended"
2358
2438
  }
2359
2439
  | {
2360
2440
  "type" => "forecast",
@@ -2421,7 +2501,7 @@ module Infrawrench
2421
2501
  ?"groupByTagKey" => String,
2422
2502
  ?"filters" => Array[cost_report_filter],
2423
2503
  ?"savedFilterId" => String,
2424
- ?"costBasis" => "cash" | "amortized",
2504
+ ?"costBasis" => "cash" | "amortized" | "blended",
2425
2505
  ?"adjusted" => bool,
2426
2506
  ?"topN" => Integer
2427
2507
  }
@@ -2651,7 +2731,7 @@ module Infrawrench
2651
2731
  | "adjustment"
2652
2732
  | "support"
2653
2733
  | "other"],
2654
- ?"costBasis" => "cash" | "amortized"
2734
+ ?"costBasis" => "cash" | "amortized" | "blended"
2655
2735
  }
2656
2736
 
2657
2737
  # Spec schema: `CostExportRunResult`.
@@ -2736,10 +2816,17 @@ module Infrawrench
2736
2816
  ?"comparePreviousPeriod" => bool,
2737
2817
  ?"showForecast" => bool,
2738
2818
  ?"scenarioModelId" => String,
2739
- ?"costBasis" => "cash" | "amortized",
2819
+ ?"costBasis" => "cash" | "amortized" | "blended",
2740
2820
  ?"measure" => cost_measure,
2741
2821
  ?"usageUnit" => String,
2742
- ?"cumulative" => bool
2822
+ ?"cumulative" => bool,
2823
+ ?"unitCostMetricId" => String,
2824
+ ?"unitCostMode" => "unit_cost" | "margin" | "usage_unit_cost" | "raw_metric",
2825
+ ?"unitCostScale" => Numeric | Numeric | Numeric | Numeric | Numeric,
2826
+ ?"unitCostUsageUnit" => String,
2827
+ ?"unitCostLabelFilters" => Array[{ "key" => String, "op" => "in" | "not_in", "values" => Array[String] }],
2828
+ ?"unitCostGroupByLabel" => String,
2829
+ ?"adjusted" => bool
2743
2830
  }
2744
2831
 
2745
2832
  # What the Y axis sums. `cost` (the default) is money per currency. `usage`
@@ -3996,7 +4083,7 @@ module Infrawrench
3996
4083
  # Spec schema: `EfficiencyAlertEvent`.
3997
4084
  type efficiency_alert_event = {
3998
4085
  "id" => String,
3999
- "kind" => "commitment_expiry" | "commitment_idle" | "unit_cost_regression",
4086
+ "kind" => "commitment_expiry" | "commitment_idle" | "unit_cost_regression" | "unit_cost_threshold",
4000
4087
  "subject" => String,
4001
4088
  "accountId" => String | nil,
4002
4089
  "accountName" => String | nil,
@@ -4950,7 +5037,7 @@ module Infrawrench
4950
5037
  #
4951
5038
  # Spec schema: `InvoiceDerivation`.
4952
5039
  type invoice_derivation = {
4953
- "costBasis" => "cash" | "amortized",
5040
+ "costBasis" => "cash" | "amortized" | "blended",
4954
5041
  "applyBillingRules" => bool,
4955
5042
  "rateDate" => String,
4956
5043
  "rates" => Array[{ "currency" => String, "rate" => Numeric, "effectiveFrom" => String }],
@@ -5155,6 +5242,67 @@ module Infrawrench
5155
5242
  # Spec schema: `JsonObject`.
5156
5243
  type json_object = Hash[String, untyped]
5157
5244
 
5245
+ # Spec schema: `KubernetesNetworkReport`.
5246
+ type kubernetes_network_report = {
5247
+ "accountId" => String,
5248
+ "displayName" => String,
5249
+ "range" => { "from" => String, "to" => String },
5250
+ "estimated" => bool,
5251
+ "currency" => String,
5252
+ "totals" => {
5253
+ "bytes" => Numeric,
5254
+ "estimatedCost" => Numeric,
5255
+ "allocatedCost" => Numeric | nil,
5256
+ "unallocatedCost" => Numeric | nil
5257
+ },
5258
+ "billed" => {
5259
+ "query" => String | nil,
5260
+ "error" => String | nil,
5261
+ "billedCost" => Numeric | nil,
5262
+ "basis" => "cost" | "bytes" | "none",
5263
+ "scaledDays" => Integer,
5264
+ "daysWithoutBilled" => Integer
5265
+ },
5266
+ "scopes" => Array[{
5267
+ "scope" => "intra_zone"
5268
+ | "cross_zone"
5269
+ | "cross_region"
5270
+ | "internet_egress"
5271
+ | "internet_ingress"
5272
+ | "provider_service"
5273
+ | "nat_gateway"
5274
+ | "private_interconnect"
5275
+ | "unknown",
5276
+ "bytes" => Numeric,
5277
+ "estimatedCost" => Numeric,
5278
+ "allocatedCost" => Numeric | nil
5279
+ }],
5280
+ "methods" => Array[{
5281
+ "method" => "flow_log" | "in_cluster_flows" | "counter_estimate" | "",
5282
+ "bytes" => Numeric
5283
+ }],
5284
+ "namespaces" => Array[kubernetes_network_row],
5285
+ "workloads" => Array[kubernetes_network_row],
5286
+ "topTalkers" => Array[network_flow_pair],
5287
+ "collection" => network_flow_account_status & (Hash[String, untyped] | nil)
5288
+ }
5289
+
5290
+ # Spec schema: `KubernetesNetworkRow`.
5291
+ type kubernetes_network_row = {
5292
+ "key" => String,
5293
+ "label" => String,
5294
+ "namespace" => String,
5295
+ "kind" => "workload" | "namespace" | "node" | "truncated",
5296
+ "bytes" => Numeric,
5297
+ "estimatedCost" => Numeric,
5298
+ "allocatedCost" => Numeric | nil,
5299
+ "byScope" => Hash[String, Numeric],
5300
+ "method" => "flow_log" | "in_cluster_flows" | "counter_estimate" | ""
5301
+ }
5302
+
5303
+ # Spec schema: `KubernetesNetworkSettings`.
5304
+ type kubernetes_network_settings = { "accountId" => String, "billedQuery" => String | nil, "updatedAt" => String | nil }
5305
+
5158
5306
  # Spec schema: `KvCommandRequest`.
5159
5307
  type kv_command_request = {
5160
5308
  "accountId" => String,
@@ -5363,7 +5511,7 @@ module Infrawrench
5363
5511
  "contactEmail" => String | nil,
5364
5512
  "billingAddress" => String | nil,
5365
5513
  "billingCurrency" => String,
5366
- "costBasis" => "cash" | "amortized",
5514
+ "costBasis" => "cash" | "amortized" | "blended",
5367
5515
  "applyBillingRules" => bool,
5368
5516
  "pricing" => managed_account_pricing & Hash[String, untyped],
5369
5517
  "notes" => String | nil,
@@ -5382,7 +5530,7 @@ module Infrawrench
5382
5530
  ?"contactEmail" => String | nil,
5383
5531
  ?"billingAddress" => String | nil,
5384
5532
  "billingCurrency" => String,
5385
- ?"costBasis" => "cash" | "amortized",
5533
+ ?"costBasis" => "cash" | "amortized" | "blended",
5386
5534
  ?"applyBillingRules" => bool,
5387
5535
  ?"pricing" => managed_account_pricing & Hash[String, untyped],
5388
5536
  ?"notes" => String | nil,
@@ -5623,6 +5771,7 @@ module Infrawrench
5623
5771
  "pluginId" => String,
5624
5772
  "displayName" => String,
5625
5773
  "supportsFlows" => bool,
5774
+ "recut" => bool,
5626
5775
  "collectedThrough" => String | nil,
5627
5776
  "lastPolledAt" => String | nil,
5628
5777
  "failureCount" => Integer,
@@ -9134,13 +9283,27 @@ module Infrawrench
9134
9283
  "uri" => String | nil
9135
9284
  }
9136
9285
 
9286
+ # Spec schema: `UnitCostLabelFilter`.
9287
+ type unit_cost_label_filter = { "key" => String, "op" => "in" | "not_in", "values" => Array[String] }
9288
+
9289
+ # `unit_cost` is spend ÷ metric value. `margin` is `(revenue − spend) ÷
9290
+ # revenue` as a fraction, with the absolute margin beside it, and needs a
9291
+ # `currency` metric. `usage_unit_cost` is spend ÷ the usage quantity providers
9292
+ # report in one `usageUnit`, and needs no metric (use `POST
9293
+ # /business-metrics/usage-unit-costs`). `raw_metric` plots the metric itself
9294
+ # beside spend, where zero and negative values are real points.
9295
+ #
9296
+ # Spec schema: `UnitCostMode`.
9297
+ type unit_cost_mode = "unit_cost" | "margin" | "usage_unit_cost" | "raw_metric"
9298
+
9137
9299
  # Spec schema: `UnitCostPoint`.
9138
9300
  type unit_cost_point = {
9139
9301
  "bucket" => String,
9140
9302
  "value" => Numeric | nil,
9141
9303
  "cost" => Numeric,
9142
9304
  "metricValue" => Numeric | nil,
9143
- ?"gap" => "no_metric_value" | "non_positive_metric_value" | "unconvertible_currency",
9305
+ ?"absoluteMargin" => Numeric | nil,
9306
+ ?"gap" => "no_metric_value" | "non_positive_metric_value" | "unconvertible_currency" | "no_usage",
9144
9307
  "reportedDays" => Integer,
9145
9308
  "bucketDays" => Integer
9146
9309
  }
@@ -9150,11 +9313,15 @@ module Infrawrench
9150
9313
  "from" => String,
9151
9314
  "to" => String,
9152
9315
  "binning" => "hourly" | "daily" | "weekly" | "monthly" | "quarterly" | "cumulative",
9153
- ?"mode" => "unit_cost" | "margin",
9316
+ ?"mode" => unit_cost_mode,
9317
+ ?"scale" => unit_cost_scale,
9318
+ ?"labelFilters" => Array[unit_cost_label_filter],
9319
+ ?"groupByLabel" => String,
9320
+ ?"usageUnit" => String,
9154
9321
  ?"filters" => Array[business_metric_scope_term],
9155
9322
  ?"query" => String,
9156
9323
  ?"savedFilterId" => String,
9157
- ?"costBasis" => "cash" | "amortized",
9324
+ ?"costBasis" => "cash" | "amortized" | "blended",
9158
9325
  ?"chargeTypes" => Array[String],
9159
9326
  ?"displayCurrency" => String
9160
9327
  }
@@ -9162,15 +9329,20 @@ module Infrawrench
9162
9329
  # Spec schema: `UnitCostQueryResponse`.
9163
9330
  type unit_cost_query_response = {
9164
9331
  "metric" => {
9165
- "id" => String,
9166
- "key" => String,
9167
- "name" => String,
9168
- "unit" => String,
9169
- "kind" => business_metric_kind,
9170
- "currency" => String | nil
9171
- },
9172
- "mode" => "unit_cost" | "margin",
9332
+ "id" => String,
9333
+ "key" => String,
9334
+ "name" => String,
9335
+ "unit" => String,
9336
+ "kind" => business_metric_kind,
9337
+ "currency" => String | nil
9338
+ }
9339
+ | nil,
9340
+ "mode" => unit_cost_mode,
9173
9341
  "binning" => "hourly" | "daily" | "weekly" | "monthly" | "quarterly" | "cumulative",
9342
+ "scale" => unit_cost_scale,
9343
+ ?"usageUnit" => String,
9344
+ ?"groupByLabel" => String,
9345
+ ?"costPerLabel" => bool,
9174
9346
  "series" => Array[unit_cost_series],
9175
9347
  ?"conversion" => {
9176
9348
  "displayCurrency" => String,
@@ -9184,13 +9356,35 @@ module Infrawrench
9184
9356
  "partialBuckets" => Integer
9185
9357
  }
9186
9358
 
9359
+ # "Per N units": multiplies a ratio (cost per 1,000 requests) and divides a
9360
+ # raw metric. Margin ignores it. Absent is 1.
9361
+ #
9362
+ # Spec schema: `UnitCostScale`.
9363
+ type unit_cost_scale = Numeric | Numeric | Numeric | Numeric | Numeric
9364
+
9187
9365
  # Spec schema: `UnitCostSeries`.
9188
9366
  type unit_cost_series = {
9189
9367
  "currency" => String,
9368
+ ?"label" => { "key" => String, "value" => String | nil, ?"other" => bool },
9190
9369
  "points" => Array[unit_cost_point],
9191
9370
  "overallValue" => Numeric | nil,
9192
9371
  "overallCost" => Numeric,
9193
- "overallMetricValue" => Numeric | nil
9372
+ "overallMetricValue" => Numeric | nil,
9373
+ ?"overallAbsoluteMargin" => Numeric | nil
9374
+ }
9375
+
9376
+ # A standing limit, evaluated daily on the summed ratio over the trailing
9377
+ # window and routed under the unit-cost alert trigger. A window with fewer
9378
+ # than half its days reported is not judged.
9379
+ #
9380
+ # Spec schema: `UnitCostThreshold`.
9381
+ type unit_cost_threshold = {
9382
+ "mode" => "unit_cost" | "margin",
9383
+ "direction" => "above" | "below",
9384
+ "value" => Numeric,
9385
+ ?"scale" => unit_cost_scale,
9386
+ ?"groupByLabel" => String,
9387
+ ?"windowDays" => Integer
9194
9388
  }
9195
9389
 
9196
9390
  # Spec schema: `UnpinRequest`.
@@ -9721,8 +9915,11 @@ module Infrawrench
9721
9915
  def importer_options: (body: { "accountId" => String, "fieldKey" => String, "params" => Hash[String, String] }, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "options" => Array[{ "id" => String, "label" => String, ?"description" => String }] }
9722
9916
  def importer_preview: (body: business_metric_import_preview_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> business_metric_import_preview
9723
9917
  def importer_sources: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "sources" => Array[business_metric_source_account] }
9918
+ def labels: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "labels" => Array[business_metric_label_summary] }
9724
9919
  def unit_costs: (id: String, body: unit_cost_query_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> unit_cost_query_response
9725
9920
  def update: (id: String, body: business_metric_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> business_metric
9921
+ def usage_unit_costs: (body: unit_cost_query_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> unit_cost_query_response
9922
+ def usage_units: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "units" => Array[{ "unit" => String, "usage" => Numeric, "services" => Array[String] }] }
9726
9923
  end
9727
9924
 
9728
9925
  class CalendarSubscriptionsNamespace
@@ -9995,13 +10192,13 @@ module Infrawrench
9995
10192
  def anomaly_precision: (?org_id: String?, ?months: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_anomaly_precision_report
9996
10193
  def anomaly_sensitivity: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_anomaly_sensitivity
9997
10194
  def dimensions: (dimension: "provider" | "account" | "service" | "region" | "resource" | "tag" | "charge_type" | "commitment" | "virtual_tag" | "tag-keys" | "usage-units" | "virtual-tag-keys", ?org_id: String?, ?tag_key: String?, ?include_hidden: "true" | "false"?, ?request_options: Hash[Symbol, untyped]?) -> cost_dimension_values
9998
- 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] }
10195
+ def efficiency_alerts: (?org_id: String?, ?kind: "commitment_expiry" | "commitment_idle" | "unit_cost_regression" | "unit_cost_threshold"?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> { "events" => Array[efficiency_alert_event] }
9999
10196
  def focus_export: (body: focus_export_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> String
10000
10197
  def query: (body: cost_query_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_query_response
10001
10198
  def rows: (body: cost_push_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_push_response
10002
- def showback: (?org_id: String?, ?from: String?, ?to: String?, ?basis: "cash" | "amortized"?, ?adjusted: "true" | "false"?, ?request_options: Hash[Symbol, untyped]?) -> showback_report
10199
+ def showback: (?org_id: String?, ?from: String?, ?to: String?, ?basis: "cash" | "amortized" | "blended"?, ?adjusted: "true" | "false"?, ?request_options: Hash[Symbol, untyped]?) -> showback_report
10003
10200
  def status: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "accounts" => Array[cost_account_status] }
10004
- def untagged: (?org_id: String?, ?from: String?, ?to: String?, ?basis: "cash" | "amortized"?, ?request_options: Hash[Symbol, untyped]?) -> untagged_spend_report
10201
+ def untagged: (?org_id: String?, ?from: String?, ?to: String?, ?basis: "cash" | "amortized" | "blended"?, ?request_options: Hash[Symbol, untyped]?) -> untagged_spend_report
10005
10202
  end
10006
10203
 
10007
10204
  class CredentialHygieneNamespace
@@ -10395,6 +10592,18 @@ module Infrawrench
10395
10592
  def test: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "ok" => bool, "webhookCount" => Integer, "attempted" => Integer, "succeeded" => Integer }
10396
10593
  end
10397
10594
 
10595
+ class NetworkFlowsKubernetesSettingsNamespace
10596
+ def initialize: (Transport) -> void
10597
+ def get: (account_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> kubernetes_network_settings
10598
+ def update: (account_id: String, body: { "billedQuery" => String | nil }, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> kubernetes_network_settings
10599
+ end
10600
+
10601
+ class NetworkFlowsKubernetesNamespace
10602
+ attr_reader settings: NetworkFlowsKubernetesSettingsNamespace
10603
+ def initialize: (Transport) -> void
10604
+ def get: (account_id: String, ?org_id: String?, ?from: String?, ?to: String?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> kubernetes_network_report
10605
+ end
10606
+
10398
10607
  class NetworkFlowsSettingsNamespace
10399
10608
  def initialize: (Transport) -> void
10400
10609
  def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> network_flow_settings
@@ -10402,6 +10611,7 @@ module Infrawrench
10402
10611
  end
10403
10612
 
10404
10613
  class NetworkFlowsNamespace
10614
+ attr_reader kubernetes: NetworkFlowsKubernetesNamespace
10405
10615
  attr_reader settings: NetworkFlowsSettingsNamespace
10406
10616
  def initialize: (Transport) -> void
10407
10617
  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
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.66.0
4
+ version: 1.69.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-10-05 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: Generated Ruby client for the Infrawrench API (v1.66.0). Covers the published
14
+ description: Generated Ruby client for the Infrawrench API (v1.69.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.66.0).
61
+ summary: Generated Ruby client for the Infrawrench API (v1.69.0).
62
62
  test_files: []