infrawrench-sdk 1.59.0 → 1.60.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: d824fc0e3c0eae4b687339a75c16c71fa2922ad4e594fae5934a3be54da5d020
4
- data.tar.gz: 632f687c16d8885da2b2b1a8c5dafa29222c1b005a6ceb9f42174465d2143ba6
3
+ metadata.gz: 556a352a9021aed9e685ed978754c3ff101ae2e612d0078d89dd739caec08a1a
4
+ data.tar.gz: 3fcaae344285b5a84663210dbae2029c0b6eaa6e7b4e4affd465ff603311da51
5
5
  SHA512:
6
- metadata.gz: d09092f4be228f2cde776daa288e66971e261bb9dbe58df7ecedeea36bd456f81d855286045435770bbab730835acc1615bc10433d2451303ca4e512aef2b9d2
7
- data.tar.gz: d7bc4df83fef6a8f07861176c4747174d49c5cf9f90b24de86b7e72b3fcec0aa74061e12823e2e1da187f79b057da3b14cf5393490c6eefa3f031eec78769364
6
+ metadata.gz: f95293d9e2352821f5c9d351e47972e2356c81226870e4a6de503f4dbf654fff4fb68a4f05b3576ef8e0e7cc5037a93be7b3f6dcfe5cfe4f739f789ad5aadf47
7
+ data.tar.gz: 5e4cb57cdc55f36ff778c7f338e47ad85f70bcba11d8617ecf5768e8f2983a82b0d0fb7f511707706dedc38d8fc40caca954ed51ac5a14fe28448bd789e3497e
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.59.0`).
3
+ Generated Ruby client for the Infrawrench API (API version `1.60.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
- 848 schemas, as RBS type aliases that steep and TypeProf can read.
44
+ 858 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.59.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.60.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.59.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.60.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.59.0)."
21
- spec.description = "Generated Ruby client for the Infrawrench API (v1.59.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.60.0)."
21
+ spec.description = "Generated Ruby client for the Infrawrench API (v1.60.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.59.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.60.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.59.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.60.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -3235,6 +3235,160 @@ module Infrawrench
3235
3235
  end
3236
3236
  end
3237
3237
 
3238
+ # `client.business_metrics.importer`
3239
+ class BusinessMetricsImporterNamespace
3240
+ # @api private
3241
+ # @param transport [Transport]
3242
+ def initialize(transport)
3243
+ @transport = transport
3244
+ end
3245
+
3246
+ # Delete a metric's importer
3247
+ #
3248
+ # Stops importing and drops the run history. Values already imported stay.
3249
+ #
3250
+ # _Requires permission: `costs:write`._
3251
+ #
3252
+ # DELETE /api/org/{orgId}/business-metrics/{id}/importer
3253
+ #
3254
+ # Raises on 404: Not found
3255
+ #
3256
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
3257
+ # constructed with.
3258
+ # @param id [String] Metric id or key
3259
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
3260
+ # @return [Hash] Parsed JSON, shaped as `Ok` — see `sig/infrawrench/sdk.rbs`.
3261
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
3262
+ def delete(id:, org_id: nil, request_options: nil)
3263
+ @transport.request(
3264
+ http_method: "DELETE",
3265
+ path: "/api/org/{orgId}/business-metrics/{id}/importer",
3266
+ path_params: { "orgId" => org_id, "id" => id },
3267
+ request_options: request_options
3268
+ )
3269
+ end
3270
+
3271
+ # Get a metric's importer
3272
+ #
3273
+ # `importer` is null when the metric's values are only pushed.
3274
+ #
3275
+ # _Requires permission: `costs:read`._
3276
+ #
3277
+ # GET /api/org/{orgId}/business-metrics/{id}/importer
3278
+ #
3279
+ # Raises on 404: Not found
3280
+ #
3281
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
3282
+ # constructed with.
3283
+ # @param id [String] Metric id or key
3284
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
3285
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
3286
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
3287
+ def get(id:, org_id: nil, request_options: nil)
3288
+ @transport.request(
3289
+ http_method: "GET",
3290
+ path: "/api/org/{orgId}/business-metrics/{id}/importer",
3291
+ path_params: { "orgId" => org_id, "id" => id },
3292
+ request_options: request_options
3293
+ )
3294
+ end
3295
+
3296
+ # Run a metric's importer now
3297
+ #
3298
+ # Runs synchronously and returns the finished run, failed or not. With no
3299
+ # body it reads the importer's own window; `from`/`to` backfill a wider one
3300
+ # (at most 730 days).
3301
+ #
3302
+ # _Requires permission: `resources:execute`._
3303
+ #
3304
+ # POST /api/org/{orgId}/business-metrics/{id}/importer/run
3305
+ #
3306
+ # Raises on 400: Bad request
3307
+ #
3308
+ # Raises on 404: Not found
3309
+ #
3310
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
3311
+ # constructed with.
3312
+ # @param id [String] Metric id or key
3313
+ # @param body [Hash, nil] Request body, shaped as `Hash`.
3314
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
3315
+ # @return [Hash] Parsed JSON, shaped as `BusinessMetricImportRun` — see
3316
+ # `sig/infrawrench/sdk.rbs`.
3317
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
3318
+ def run(id:, org_id: nil, body: nil, request_options: nil)
3319
+ @transport.request(
3320
+ http_method: "POST",
3321
+ path: "/api/org/{orgId}/business-metrics/{id}/importer/run",
3322
+ path_params: { "orgId" => org_id, "id" => id },
3323
+ body: body,
3324
+ request_options: request_options
3325
+ )
3326
+ end
3327
+
3328
+ # List a metric's import runs
3329
+ #
3330
+ # Newest first; the most recent 50 are kept.
3331
+ #
3332
+ # _Requires permission: `costs:read`._
3333
+ #
3334
+ # GET /api/org/{orgId}/business-metrics/{id}/importer/runs
3335
+ #
3336
+ # Raises on 400: Bad request
3337
+ #
3338
+ # Raises on 404: Not found
3339
+ #
3340
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
3341
+ # constructed with.
3342
+ # @param id [String] Metric id or key
3343
+ # @param limit [Integer, nil] Default 20.
3344
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
3345
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
3346
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
3347
+ def runs(id:, org_id: nil, limit: nil, request_options: nil)
3348
+ @transport.request(
3349
+ http_method: "GET",
3350
+ path: "/api/org/{orgId}/business-metrics/{id}/importer/runs",
3351
+ path_params: { "orgId" => org_id, "id" => id },
3352
+ query: { "limit" => limit },
3353
+ request_options: request_options
3354
+ )
3355
+ end
3356
+
3357
+ # Create or replace a metric's importer
3358
+ #
3359
+ # One importer per metric. A full replace: omitted fields take their
3360
+ # defaults. Each run restates whole days (every label a day carried is
3361
+ # replaced by what the source returned), never touches days the source
3362
+ # returned nothing for, and ignores points outside the window. Changing the
3363
+ # account, the params or the schedule makes it due immediately.
3364
+ #
3365
+ # _Requires permission: `resources:execute`._
3366
+ #
3367
+ # PUT /api/org/{orgId}/business-metrics/{id}/importer
3368
+ #
3369
+ # Raises on 400: Bad request
3370
+ #
3371
+ # Raises on 404: Not found
3372
+ #
3373
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
3374
+ # constructed with.
3375
+ # @param id [String] Metric id or key
3376
+ # @param body [Hash] Request body, shaped as `BusinessMetricImporterInput`.
3377
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
3378
+ # @return [Hash] Parsed JSON, shaped as `BusinessMetricImporter & Hash` — see
3379
+ # `sig/infrawrench/sdk.rbs`.
3380
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
3381
+ def update(id:, body:, org_id: nil, request_options: nil)
3382
+ @transport.request(
3383
+ http_method: "PUT",
3384
+ path: "/api/org/{orgId}/business-metrics/{id}/importer",
3385
+ path_params: { "orgId" => org_id, "id" => id },
3386
+ body: body,
3387
+ request_options: request_options
3388
+ )
3389
+ end
3390
+ end
3391
+
3238
3392
  # `client.business_metrics.values`
3239
3393
  class BusinessMetricsValuesNamespace
3240
3394
  # @api private
@@ -3311,6 +3465,8 @@ module Infrawrench
3311
3465
  class BusinessMetricsNamespace
3312
3466
  # @return [BusinessMetricsGetNamespace] `client.business_metrics.get`
3313
3467
  attr_reader :get
3468
+ # @return [BusinessMetricsImporterNamespace] `client.business_metrics.importer`
3469
+ attr_reader :importer
3314
3470
  # @return [BusinessMetricsValuesNamespace] `client.business_metrics.values`
3315
3471
  attr_reader :values
3316
3472
 
@@ -3319,6 +3475,7 @@ module Infrawrench
3319
3475
  def initialize(transport)
3320
3476
  @transport = transport
3321
3477
  @get = BusinessMetricsGetNamespace.new(@transport)
3478
+ @importer = BusinessMetricsImporterNamespace.new(@transport)
3322
3479
  @values = BusinessMetricsValuesNamespace.new(@transport)
3323
3480
  end
3324
3481
 
@@ -3379,6 +3536,92 @@ module Infrawrench
3379
3536
  )
3380
3537
  end
3381
3538
 
3539
+ # List an importer picker's choices
3540
+ #
3541
+ # Choices for one `select` field of a source's form, given the values picked
3542
+ # so far. Needs `resources:execute` and `costs:write`: it calls the provider
3543
+ # with the account's credentials.
3544
+ #
3545
+ # _Requires permission: `resources:execute`._
3546
+ #
3547
+ # POST /api/org/{orgId}/business-metrics/importer-options
3548
+ #
3549
+ # Raises on 400: Bad request
3550
+ #
3551
+ # Raises on 404: Not found
3552
+ #
3553
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
3554
+ # constructed with.
3555
+ # @param body [Hash] Request body, shaped as `Hash`.
3556
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
3557
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
3558
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
3559
+ def importer_options(body:, org_id: nil, request_options: nil)
3560
+ @transport.request(
3561
+ http_method: "POST",
3562
+ path: "/api/org/{orgId}/business-metrics/importer-options",
3563
+ path_params: { "orgId" => org_id },
3564
+ body: body,
3565
+ request_options: request_options
3566
+ )
3567
+ end
3568
+
3569
+ # Preview an importer
3570
+ #
3571
+ # Run a source over a window and return the values it would write, writing
3572
+ # nothing; or, with `dryRun`, validate the query with the provider without
3573
+ # reading data. Read-only queries only, with the same row limit and timeout
3574
+ # as a scheduled run.
3575
+ #
3576
+ # _Requires permission: `resources:execute`._
3577
+ #
3578
+ # POST /api/org/{orgId}/business-metrics/importer-preview
3579
+ #
3580
+ # Raises on 400: Bad request
3581
+ #
3582
+ # Raises on 404: Not found
3583
+ #
3584
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
3585
+ # constructed with.
3586
+ # @param body [Hash] Request body, shaped as `BusinessMetricImportPreviewRequest`.
3587
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
3588
+ # @return [Hash] Parsed JSON, shaped as `BusinessMetricImportPreview` — see
3589
+ # `sig/infrawrench/sdk.rbs`.
3590
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
3591
+ def importer_preview(body:, org_id: nil, request_options: nil)
3592
+ @transport.request(
3593
+ http_method: "POST",
3594
+ path: "/api/org/{orgId}/business-metrics/importer-preview",
3595
+ path_params: { "orgId" => org_id },
3596
+ body: body,
3597
+ request_options: request_options
3598
+ )
3599
+ end
3600
+
3601
+ # List importer sources
3602
+ #
3603
+ # Connected accounts whose plugin can feed a business metric on a schedule,
3604
+ # each with the plugin's importer form: which fields to fill and which are
3605
+ # pickers.
3606
+ #
3607
+ # _Requires permission: `costs:read`._
3608
+ #
3609
+ # GET /api/org/{orgId}/business-metrics/importer-sources
3610
+ #
3611
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
3612
+ # constructed with.
3613
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
3614
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
3615
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
3616
+ def importer_sources(org_id: nil, request_options: nil)
3617
+ @transport.request(
3618
+ http_method: "GET",
3619
+ path: "/api/org/{orgId}/business-metrics/importer-sources",
3620
+ path_params: { "orgId" => org_id },
3621
+ request_options: request_options
3622
+ )
3623
+ end
3624
+
3382
3625
  # Query unit costs or margin
3383
3626
  #
3384
3627
  # Divide spend by the metric, bucketed as asked. Three properties of the
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.59.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.60.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.59.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.60.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.59.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.60.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.59.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.60.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.59.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.60.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.59.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.60.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.59.0"
18
+ VERSION = "1.60.0"
19
19
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.59.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.60.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.59.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.60.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.59.0 | MIT | Copyright (c) 2026 Infrawrench LLC
1
+ # infrawrench-sdk v1.60.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.59.0).
4
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.60.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -1241,7 +1241,8 @@ module Infrawrench
1241
1241
  "createdByUserId" => String | nil,
1242
1242
  "createdAt" => String,
1243
1243
  "updatedAt" => String,
1244
- "coverage" => business_metric_coverage
1244
+ "coverage" => business_metric_coverage,
1245
+ "importer" => business_metric_importer_summary
1245
1246
  }
1246
1247
 
1247
1248
  # Null when the metric has no values at all — not an error, but every
@@ -1250,6 +1251,108 @@ module Infrawrench
1250
1251
  # Spec schema: `BusinessMetricCoverage`.
1251
1252
  type business_metric_coverage = { "firstDay" => String, "lastDay" => String, "reportedDays" => Integer } | nil
1252
1253
 
1254
+ # How several points the source returns for one day (and label) become that
1255
+ # day's value. A SQL query grouped by day returns one row per day and every
1256
+ # choice agrees.
1257
+ #
1258
+ # Spec schema: `BusinessMetricImportAggregation`.
1259
+ type business_metric_import_aggregation = "sum" | "average" | "min" | "max" | "last" | "count"
1260
+
1261
+ # Spec schema: `BusinessMetricImportPreview`.
1262
+ type business_metric_import_preview = {
1263
+ "from" => String,
1264
+ "to" => String,
1265
+ "values" => Array[{ "date" => String, "value" => Numeric, ?"label" => String }],
1266
+ "pointsRead" => Integer,
1267
+ "days" => Integer,
1268
+ "notes" => Array[String],
1269
+ "durationMs" => Integer,
1270
+ ?"dryRun" => { "valid" => bool, "message" => String, ?"bytesProcessed" => Numeric }
1271
+ }
1272
+
1273
+ # Spec schema: `BusinessMetricImportPreviewRequest`.
1274
+ type business_metric_import_preview_request = {
1275
+ "accountId" => String,
1276
+ "params" => Hash[String, String],
1277
+ ?"from" => String,
1278
+ ?"to" => String,
1279
+ ?"timezone" => String,
1280
+ ?"aggregation" => business_metric_import_aggregation,
1281
+ ?"dryRun" => bool
1282
+ }
1283
+
1284
+ # Spec schema: `BusinessMetricImportRun`.
1285
+ type business_metric_import_run = {
1286
+ "id" => String,
1287
+ "importerId" => String,
1288
+ "trigger" => "schedule" | "manual",
1289
+ "status" => "running" | "success" | "error",
1290
+ "from" => String,
1291
+ "to" => String,
1292
+ "pointsRead" => Integer,
1293
+ "daysWritten" => Integer,
1294
+ "error" => String | nil,
1295
+ "notes" => Array[String],
1296
+ "startedAt" => String,
1297
+ "finishedAt" => String | nil,
1298
+ "durationMs" => Integer | nil
1299
+ }
1300
+
1301
+ # Spec schema: `BusinessMetricImportSchedule`.
1302
+ type business_metric_import_schedule = "every_6_hours" | "every_12_hours" | "daily" | "weekly"
1303
+
1304
+ # Spec schema: `BusinessMetricImporter`.
1305
+ type business_metric_importer = {
1306
+ "id" => String,
1307
+ "metricId" => String,
1308
+ "accountId" => String,
1309
+ "accountName" => String | nil,
1310
+ "pluginId" => String | nil,
1311
+ "sourceLabel" => String | nil,
1312
+ "params" => Hash[String, String],
1313
+ "schedule" => business_metric_import_schedule,
1314
+ "backfillDays" => Integer,
1315
+ "timezone" => String,
1316
+ "aggregation" => business_metric_import_aggregation,
1317
+ "enabled" => bool,
1318
+ "nextRunAt" => String | nil,
1319
+ "lastRunAt" => String | nil,
1320
+ "lastStatus" => "success" | "error" | nil,
1321
+ "lastError" => String | nil,
1322
+ "consecutiveFailures" => Integer,
1323
+ "createdByUserId" => String | nil,
1324
+ "createdAt" => String,
1325
+ "updatedAt" => String
1326
+ }
1327
+ | nil
1328
+
1329
+ # Spec schema: `BusinessMetricImporterInput`.
1330
+ type business_metric_importer_input = {
1331
+ "accountId" => String,
1332
+ "params" => Hash[String, String],
1333
+ ?"schedule" => business_metric_import_schedule & untyped,
1334
+ ?"backfillDays" => Integer,
1335
+ ?"timezone" => String,
1336
+ ?"aggregation" => business_metric_import_aggregation,
1337
+ ?"enabled" => bool
1338
+ }
1339
+
1340
+ # The scheduled importer feeding this metric, or null when its values are only
1341
+ # pushed.
1342
+ #
1343
+ # Spec schema: `BusinessMetricImporterSummary`.
1344
+ type business_metric_importer_summary = {
1345
+ "accountId" => String,
1346
+ "accountName" => String | nil,
1347
+ "pluginId" => String | nil,
1348
+ "sourceLabel" => String | nil,
1349
+ "enabled" => bool,
1350
+ "lastRunAt" => String | nil,
1351
+ "lastStatus" => "success" | "error" | nil,
1352
+ "lastError" => String | nil
1353
+ }
1354
+ | nil
1355
+
1253
1356
  # Spec schema: `BusinessMetricInput`.
1254
1357
  type business_metric_input = {
1255
1358
  "key" => String,
@@ -1286,11 +1389,48 @@ module Infrawrench
1286
1389
  ?"tagKey" => String
1287
1390
  }
1288
1391
 
1392
+ # Spec schema: `BusinessMetricSourceAccount`.
1393
+ type business_metric_source_account = {
1394
+ "accountId" => String,
1395
+ "accountName" => String,
1396
+ "pluginId" => String,
1397
+ "pluginName" => String,
1398
+ "source" => {
1399
+ "label" => String,
1400
+ ?"description" => String,
1401
+ "kind" => "sql" | "metric",
1402
+ "fields" => Array[business_metric_source_field],
1403
+ ?"sqlDialect" => String,
1404
+ ?"readOnly" => "enforced" | "validated",
1405
+ ?"supportsDryRun" => bool
1406
+ }
1407
+ }
1408
+
1409
+ # Spec schema: `BusinessMetricSourceField`.
1410
+ type business_metric_source_field = {
1411
+ "key" => String,
1412
+ "label" => String,
1413
+ "type" => "select" | "sql" | "text" | "number",
1414
+ ?"required" => bool,
1415
+ ?"description" => String,
1416
+ ?"placeholder" => String,
1417
+ ?"defaultValue" => String,
1418
+ ?"options" => Array[{ "id" => String, "label" => String, ?"description" => String }],
1419
+ ?"dependsOn" => Array[String],
1420
+ ?"allowCustom" => bool
1421
+ }
1422
+
1289
1423
  # Spec schema: `BusinessMetricValue`.
1290
- type business_metric_value = { "day" => String, "value" => Numeric, "source" => "api" | "workflow", "updatedAt" => String }
1424
+ type business_metric_value = {
1425
+ "day" => String,
1426
+ "value" => Numeric,
1427
+ "label" => String | nil,
1428
+ "source" => "api" | "workflow" | "import",
1429
+ "updatedAt" => String
1430
+ }
1291
1431
 
1292
1432
  # Spec schema: `BusinessMetricValuesInput`.
1293
- type business_metric_values_input = { "values" => Array[{ "date" => String, "value" => Numeric }] }
1433
+ type business_metric_values_input = { "values" => Array[{ "date" => String, "value" => Numeric, ?"label" => String }] }
1294
1434
 
1295
1435
  # Spec schema: `CalendarEvent`.
1296
1436
  type calendar_event = {
@@ -6052,6 +6192,7 @@ module Infrawrench
6052
6192
  | "kubernetes"
6053
6193
  | "linode"
6054
6194
  | "memcached"
6195
+ | "metronome"
6055
6196
  | "mistral"
6056
6197
  | "modal"
6057
6198
  | "mongodb"
@@ -7075,6 +7216,7 @@ module Infrawrench
7075
7216
  | "bigquery-dataset"
7076
7217
  | "bigquery-table"
7077
7218
  | "bigtable-instance"
7219
+ | "billable-metric"
7078
7220
  | "billing-account"
7079
7221
  | "billing-group"
7080
7222
  | "block-volume"
@@ -7142,6 +7284,7 @@ module Infrawrench
7142
7284
  | "custom-enrichment"
7143
7285
  | "custom-hostname"
7144
7286
  | "custom-voice"
7287
+ | "customer"
7145
7288
  | "d1-database"
7146
7289
  | "dashboard"
7147
7290
  | "database"
@@ -9201,6 +9344,15 @@ module Infrawrench
9201
9344
  def get_org_org_id_business_metrics_id: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> business_metric
9202
9345
  end
9203
9346
 
9347
+ class BusinessMetricsImporterNamespace
9348
+ def initialize: (Transport) -> void
9349
+ def delete: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
9350
+ def get: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "importer" => business_metric_importer }
9351
+ def run: (id: String, ?org_id: String?, ?body: { ?"from" => String, ?"to" => String }?, ?request_options: Hash[Symbol, untyped]?) -> business_metric_import_run
9352
+ def runs: (id: String, ?org_id: String?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> { "runs" => Array[business_metric_import_run] }
9353
+ def update: (id: String, body: business_metric_importer_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> (business_metric_importer & Hash[String, untyped])
9354
+ end
9355
+
9204
9356
  class BusinessMetricsValuesNamespace
9205
9357
  def initialize: (Transport) -> void
9206
9358
  def create: (id: String, body: business_metric_values_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "written" => Integer }
@@ -9209,10 +9361,14 @@ module Infrawrench
9209
9361
 
9210
9362
  class BusinessMetricsNamespace
9211
9363
  attr_reader get: BusinessMetricsGetNamespace
9364
+ attr_reader importer: BusinessMetricsImporterNamespace
9212
9365
  attr_reader values: BusinessMetricsValuesNamespace
9213
9366
  def initialize: (Transport) -> void
9214
9367
  def create: (body: business_metric_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> business_metric
9215
9368
  def delete: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
9369
+ 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 }] }
9370
+ def importer_preview: (body: business_metric_import_preview_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> business_metric_import_preview
9371
+ def importer_sources: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "sources" => Array[business_metric_source_account] }
9216
9372
  def unit_costs: (id: String, body: unit_cost_query_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> unit_cost_query_response
9217
9373
  def update: (id: String, body: business_metric_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> business_metric
9218
9374
  end
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.59.0
4
+ version: 1.60.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.59.0). Covers the published
14
+ description: Generated Ruby client for the Infrawrench API (v1.60.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.59.0).
61
+ summary: Generated Ruby client for the Infrawrench API (v1.60.0).
62
62
  test_files: []