infrawrench-sdk 1.58.0 → 1.59.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: 4f2aaa8ec40402e14481ecf164ad3b726f3272d70147edee5fe7424c3b24f81d
4
- data.tar.gz: ac8b606bbc89540e3623a46218b64bb14f84175c962321b7ec2e969d4064d500
3
+ metadata.gz: d824fc0e3c0eae4b687339a75c16c71fa2922ad4e594fae5934a3be54da5d020
4
+ data.tar.gz: 632f687c16d8885da2b2b1a8c5dafa29222c1b005a6ceb9f42174465d2143ba6
5
5
  SHA512:
6
- metadata.gz: b792405dc4c76badabd8fd21e04286271332bcb222a0e38656c9324bd05f869ceadf61581650f8a5b3312ab5f61c63a81787716a21aee46d3110c3ca92d9a71f
7
- data.tar.gz: ee1738f77ca46c0e5fee8a98064a845dbe19949b22e22b5b4f986bdf8e3fde3c4ace6bee5919d2278d04b1cb53f87b5155097f6649fa6d3af1acd094da4137f4
6
+ metadata.gz: d09092f4be228f2cde776daa288e66971e261bb9dbe58df7ecedeea36bd456f81d855286045435770bbab730835acc1615bc10433d2451303ca4e512aef2b9d2
7
+ data.tar.gz: d7bc4df83fef6a8f07861176c4747174d49c5cf9f90b24de86b7e72b3fcec0aa74061e12823e2e1da187f79b057da3b14cf5393490c6eefa3f031eec78769364
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.58.0`).
3
+ Generated Ruby client for the Infrawrench API (API version `1.59.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
- 841 schemas, as RBS type aliases that steep and TypeProf can read.
44
+ 848 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.58.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.59.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.58.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.59.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.58.0)."
21
- spec.description = "Generated Ruby client for the Infrawrench API (v1.58.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.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."
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.58.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.59.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.58.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.59.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -7397,6 +7397,293 @@ module Infrawrench
7397
7397
  end
7398
7398
  end
7399
7399
 
7400
+ # `client.custom_cost_sources.uploads`
7401
+ class CustomCostSourcesUploadsNamespace
7402
+ # @api private
7403
+ # @param transport [Transport]
7404
+ def initialize(transport)
7405
+ @transport = transport
7406
+ end
7407
+
7408
+ # Finish an upload
7409
+ #
7410
+ # Applies `replace` (zeroing this source's rows from other uploads in the
7411
+ # range) and records what the upload holds.
7412
+ #
7413
+ # _Requires permission: `costs:write`._
7414
+ #
7415
+ # POST /api/org/{orgId}/custom-cost-sources/{id}/uploads/{uploadId}/complete
7416
+ #
7417
+ # Raises on 400: Already complete
7418
+ #
7419
+ # Raises on 404: Not found
7420
+ #
7421
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7422
+ # constructed with.
7423
+ # @param id [String]
7424
+ # @param upload_id [String]
7425
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7426
+ # @return [Hash] Parsed JSON, shaped as `CustomCostUpload` — see `sig/infrawrench/sdk.rbs`.
7427
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7428
+ def complete(id:, upload_id:, org_id: nil, request_options: nil)
7429
+ @transport.request(
7430
+ http_method: "POST",
7431
+ path: "/api/org/{orgId}/custom-cost-sources/{id}/uploads/{uploadId}/complete",
7432
+ path_params: { "orgId" => org_id, "id" => id, "uploadId" => upload_id },
7433
+ request_options: request_options
7434
+ )
7435
+ end
7436
+
7437
+ # Start an upload
7438
+ #
7439
+ # Declares the upload's date range and what happens to spend already held in
7440
+ # it. Then send rows with `…/rows` (up to 5,000 per call) and finish with
7441
+ # `…/complete`.
7442
+ #
7443
+ # _Requires permission: `costs:write`._
7444
+ #
7445
+ # POST /api/org/{orgId}/custom-cost-sources/{id}/uploads
7446
+ #
7447
+ # Raises on 400: Bad request
7448
+ #
7449
+ # Raises on 404: Not found
7450
+ #
7451
+ # Raises on 409: The range overlaps earlier uploads and no `mode` was given
7452
+ #
7453
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7454
+ # constructed with.
7455
+ # @param id [String]
7456
+ # @param body [Hash] Request body, shaped as `CustomCostUploadCreate`.
7457
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7458
+ # @return [Hash] Parsed JSON, shaped as `CustomCostUpload` — see `sig/infrawrench/sdk.rbs`.
7459
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7460
+ def create(id:, body:, org_id: nil, request_options: nil)
7461
+ @transport.request(
7462
+ http_method: "POST",
7463
+ path: "/api/org/{orgId}/custom-cost-sources/{id}/uploads",
7464
+ path_params: { "orgId" => org_id, "id" => id },
7465
+ body: body,
7466
+ request_options: request_options
7467
+ )
7468
+ end
7469
+
7470
+ # Delete an upload and the rows it wrote
7471
+ #
7472
+ # _Requires permission: `costs:write`._
7473
+ #
7474
+ # DELETE /api/org/{orgId}/custom-cost-sources/{id}/uploads/{uploadId}
7475
+ #
7476
+ # Raises on 404: Not found
7477
+ #
7478
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7479
+ # constructed with.
7480
+ # @param id [String]
7481
+ # @param upload_id [String]
7482
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7483
+ # @return [Hash] Parsed JSON, shaped as `CustomCostDeleted` — see `sig/infrawrench/sdk.rbs`.
7484
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7485
+ def delete(id:, upload_id:, org_id: nil, request_options: nil)
7486
+ @transport.request(
7487
+ http_method: "DELETE",
7488
+ path: "/api/org/{orgId}/custom-cost-sources/{id}/uploads/{uploadId}",
7489
+ path_params: { "orgId" => org_id, "id" => id, "uploadId" => upload_id },
7490
+ request_options: request_options
7491
+ )
7492
+ end
7493
+
7494
+ # List a source's uploads
7495
+ #
7496
+ # _Requires permission: `costs:read`._
7497
+ #
7498
+ # GET /api/org/{orgId}/custom-cost-sources/{id}/uploads
7499
+ #
7500
+ # Raises on 404: Not found
7501
+ #
7502
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7503
+ # constructed with.
7504
+ # @param id [String]
7505
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7506
+ # @return [Array<Hash>] Parsed JSON, shaped as `Array<CustomCostUpload>` — see
7507
+ # `sig/infrawrench/sdk.rbs`.
7508
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7509
+ def list(id:, org_id: nil, request_options: nil)
7510
+ @transport.request(
7511
+ http_method: "GET",
7512
+ path: "/api/org/{orgId}/custom-cost-sources/{id}/uploads",
7513
+ path_params: { "orgId" => org_id, "id" => id },
7514
+ request_options: request_options
7515
+ )
7516
+ end
7517
+
7518
+ # Send a chunk of rows to an open upload
7519
+ #
7520
+ # The chunk is validated whole: a 400 means none of it was written.
7521
+ #
7522
+ # _Requires permission: `costs:write`._
7523
+ #
7524
+ # POST /api/org/{orgId}/custom-cost-sources/{id}/uploads/{uploadId}/rows
7525
+ #
7526
+ # Raises on 400: Bad request
7527
+ #
7528
+ # Raises on 404: Not found
7529
+ #
7530
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7531
+ # constructed with.
7532
+ # @param id [String]
7533
+ # @param upload_id [String]
7534
+ # @param body [Hash] Request body, shaped as `Hash`.
7535
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7536
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
7537
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7538
+ def rows(id:, upload_id:, body:, org_id: nil, request_options: nil)
7539
+ @transport.request(
7540
+ http_method: "POST",
7541
+ path: "/api/org/{orgId}/custom-cost-sources/{id}/uploads/{uploadId}/rows",
7542
+ path_params: { "orgId" => org_id, "id" => id, "uploadId" => upload_id },
7543
+ body: body,
7544
+ request_options: request_options
7545
+ )
7546
+ end
7547
+ end
7548
+
7549
+ # `client.custom_cost_sources`
7550
+ class CustomCostSourcesNamespace
7551
+ # @return [CustomCostSourcesUploadsNamespace] `client.custom_cost_sources.uploads`
7552
+ attr_reader :uploads
7553
+
7554
+ # @api private
7555
+ # @param transport [Transport]
7556
+ def initialize(transport)
7557
+ @transport = transport
7558
+ @uploads = CustomCostSourcesUploadsNamespace.new(@transport)
7559
+ end
7560
+
7561
+ # Create a custom cost source
7562
+ #
7563
+ # A named provider for spend Infrawrench has no plugin for. Fill it by
7564
+ # uploading files (CSV or FOCUS) from Settings, `infrawrench costs push
7565
+ # --format csv|focus`, or the upload endpoints below.
7566
+ #
7567
+ # _Requires permission: `costs:write`._
7568
+ #
7569
+ # POST /api/org/{orgId}/custom-cost-sources
7570
+ #
7571
+ # Raises on 400: Bad request
7572
+ #
7573
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7574
+ # constructed with.
7575
+ # @param body [Hash] Request body, shaped as `CustomCostSourceInput`.
7576
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7577
+ # @return [Hash] Parsed JSON, shaped as `CustomCostSource` — see `sig/infrawrench/sdk.rbs`.
7578
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7579
+ def create(body:, org_id: nil, request_options: nil)
7580
+ @transport.request(
7581
+ http_method: "POST",
7582
+ path: "/api/org/{orgId}/custom-cost-sources",
7583
+ path_params: { "orgId" => org_id },
7584
+ body: body,
7585
+ request_options: request_options
7586
+ )
7587
+ end
7588
+
7589
+ # Delete a custom cost source and all of its spend
7590
+ #
7591
+ # Zeroes every cost row the source holds, then deletes it with its upload
7592
+ # history. The spend disappears from every report, budget and export.
7593
+ #
7594
+ # _Requires permission: `costs:write`._
7595
+ #
7596
+ # DELETE /api/org/{orgId}/custom-cost-sources/{id}
7597
+ #
7598
+ # Raises on 404: Not found
7599
+ #
7600
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7601
+ # constructed with.
7602
+ # @param id [String]
7603
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7604
+ # @return [Hash] Parsed JSON, shaped as `CustomCostDeleted` — see `sig/infrawrench/sdk.rbs`.
7605
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7606
+ def delete(id:, org_id: nil, request_options: nil)
7607
+ @transport.request(
7608
+ http_method: "DELETE",
7609
+ path: "/api/org/{orgId}/custom-cost-sources/{id}",
7610
+ path_params: { "orgId" => org_id, "id" => id },
7611
+ request_options: request_options
7612
+ )
7613
+ end
7614
+
7615
+ # Get a custom cost source
7616
+ #
7617
+ # _Requires permission: `costs:read`._
7618
+ #
7619
+ # GET /api/org/{orgId}/custom-cost-sources/{id}
7620
+ #
7621
+ # Raises on 404: Not found
7622
+ #
7623
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7624
+ # constructed with.
7625
+ # @param id [String]
7626
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7627
+ # @return [Hash] Parsed JSON, shaped as `CustomCostSource` — see `sig/infrawrench/sdk.rbs`.
7628
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7629
+ def get(id:, org_id: nil, request_options: nil)
7630
+ @transport.request(
7631
+ http_method: "GET",
7632
+ path: "/api/org/{orgId}/custom-cost-sources/{id}",
7633
+ path_params: { "orgId" => org_id, "id" => id },
7634
+ request_options: request_options
7635
+ )
7636
+ end
7637
+
7638
+ # List custom cost sources
7639
+ #
7640
+ # _Requires permission: `costs:read`._
7641
+ #
7642
+ # GET /api/org/{orgId}/custom-cost-sources
7643
+ #
7644
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7645
+ # constructed with.
7646
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7647
+ # @return [Array<Hash>] Parsed JSON, shaped as `Array<CustomCostSource>` — see
7648
+ # `sig/infrawrench/sdk.rbs`.
7649
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7650
+ def list(org_id: nil, request_options: nil)
7651
+ @transport.request(
7652
+ http_method: "GET",
7653
+ path: "/api/org/{orgId}/custom-cost-sources",
7654
+ path_params: { "orgId" => org_id },
7655
+ request_options: request_options
7656
+ )
7657
+ end
7658
+
7659
+ # Update a custom cost source
7660
+ #
7661
+ # _Requires permission: `costs:write`._
7662
+ #
7663
+ # PUT /api/org/{orgId}/custom-cost-sources/{id}
7664
+ #
7665
+ # Raises on 400: Bad request
7666
+ #
7667
+ # Raises on 404: Not found
7668
+ #
7669
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7670
+ # constructed with.
7671
+ # @param id [String]
7672
+ # @param body [Hash] Request body, shaped as `CustomCostSourceInput`.
7673
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7674
+ # @return [Hash] Parsed JSON, shaped as `CustomCostSource` — see `sig/infrawrench/sdk.rbs`.
7675
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7676
+ def update(id:, body:, org_id: nil, request_options: nil)
7677
+ @transport.request(
7678
+ http_method: "PUT",
7679
+ path: "/api/org/{orgId}/custom-cost-sources/{id}",
7680
+ path_params: { "orgId" => org_id, "id" => id },
7681
+ body: body,
7682
+ request_options: request_options
7683
+ )
7684
+ end
7685
+ end
7686
+
7400
7687
  # `client.custom_graphs`
7401
7688
  class CustomGraphsNamespace
7402
7689
  # @api private
@@ -18954,6 +19241,8 @@ module Infrawrench
18954
19241
  attr_reader :credits
18955
19242
  # @return [CurrencyNamespace] `client.currency`
18956
19243
  attr_reader :currency
19244
+ # @return [CustomCostSourcesNamespace] `client.custom_cost_sources`
19245
+ attr_reader :custom_cost_sources
18957
19246
  # @return [CustomGraphsNamespace] `client.custom_graphs`
18958
19247
  attr_reader :custom_graphs
18959
19248
  # @return [DashboardNotificationsNamespace] `client.dashboard_notifications`
@@ -19127,6 +19416,7 @@ module Infrawrench
19127
19416
  @credential_hygiene = CredentialHygieneNamespace.new(@transport)
19128
19417
  @credits = CreditsNamespace.new(@transport)
19129
19418
  @currency = CurrencyNamespace.new(@transport)
19419
+ @custom_cost_sources = CustomCostSourcesNamespace.new(@transport)
19130
19420
  @custom_graphs = CustomGraphsNamespace.new(@transport)
19131
19421
  @dashboard_notifications = DashboardNotificationsNamespace.new(@transport)
19132
19422
  @dashboards = DashboardsNamespace.new(@transport)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.58.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.59.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.58.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.59.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.58.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.59.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.58.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.59.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.58.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.59.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.58.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.59.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.58.0"
18
+ VERSION = "1.59.0"
19
19
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.58.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.59.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.58.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.59.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.58.0 | MIT | Copyright (c) 2026 Infrawrench LLC
1
+ # infrawrench-sdk v1.59.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.58.0).
4
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.59.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -2904,6 +2904,86 @@ module Infrawrench
2904
2904
  # Spec schema: `CurrencySettings`.
2905
2905
  type currency_settings = { "displayCurrency" => String | nil }
2906
2906
 
2907
+ # Spec schema: `CustomCostDeleted`.
2908
+ type custom_cost_deleted = { "ok" => bool, "zeroedRows" => Integer }
2909
+
2910
+ # Spec schema: `CustomCostOverlap`.
2911
+ type custom_cost_overlap = { "error" => String, "code" => "overlap", "overlapping" => Array[custom_cost_upload] }
2912
+
2913
+ # One day of spend for one dimension combination. Clients aggregate file lines
2914
+ # to this grain before sending: two rows with the same date, dimensions, tags
2915
+ # and currency in one upload replace each other rather than adding.
2916
+ #
2917
+ # Spec schema: `CustomCostRow`.
2918
+ type custom_cost_row = {
2919
+ "date" => String,
2920
+ "currency" => String,
2921
+ "amount" => Numeric,
2922
+ ?"service" => String,
2923
+ ?"region" => String,
2924
+ ?"resourceId" => String,
2925
+ ?"subAccount" => String,
2926
+ ?"tags" => Hash[String, String],
2927
+ ?"usageAmount" => Numeric,
2928
+ ?"usageUnit" => String,
2929
+ ?"chargeType" => "usage"
2930
+ | "commitment_covered_usage"
2931
+ | "commitment_fee"
2932
+ | "commitment_discount"
2933
+ | "credit"
2934
+ | "tax"
2935
+ | "refund"
2936
+ | "adjustment"
2937
+ | "support"
2938
+ | "other",
2939
+ ?"amortizedAmount" => Numeric,
2940
+ ?"commitmentId" => String
2941
+ }
2942
+
2943
+ # Spec schema: `CustomCostSource`.
2944
+ type custom_cost_source = {
2945
+ "id" => String,
2946
+ "name" => String,
2947
+ "description" => String | nil,
2948
+ "defaultCurrency" => String | nil,
2949
+ "pluginId" => String,
2950
+ "uploadCount" => Integer,
2951
+ "lastUploadAt" => String | nil,
2952
+ "createdAt" => String,
2953
+ "updatedAt" => String
2954
+ }
2955
+
2956
+ # Spec schema: `CustomCostSourceInput`.
2957
+ type custom_cost_source_input = { "name" => String, ?"description" => String | nil, ?"defaultCurrency" => String | nil }
2958
+
2959
+ # Spec schema: `CustomCostUpload`.
2960
+ type custom_cost_upload = {
2961
+ "id" => String,
2962
+ "sourceId" => String,
2963
+ "fileName" => String | nil,
2964
+ "format" => "csv" | "focus" | "rows",
2965
+ "mode" => "append" | "replace",
2966
+ "status" => "uploading" | "complete" | "replaced",
2967
+ "fromDate" => String,
2968
+ "toDate" => String,
2969
+ "rowCount" => Integer,
2970
+ "totals" => Hash[String, Numeric],
2971
+ "uploadedBy" => { "id" => String, "name" => String | nil, "email" => String | nil } | nil,
2972
+ "via" => "web" | "desktop" | "cli" | "api",
2973
+ "createdAt" => String,
2974
+ "completedAt" => String | nil
2975
+ }
2976
+
2977
+ # Spec schema: `CustomCostUploadCreate`.
2978
+ type custom_cost_upload_create = {
2979
+ ?"fileName" => String | nil,
2980
+ "format" => "csv" | "focus" | "rows",
2981
+ ?"mode" => "append" | "replace",
2982
+ ?"via" => "web" | "desktop" | "cli" | "api",
2983
+ "fromDate" => String,
2984
+ "toDate" => String
2985
+ }
2986
+
2907
2987
  # Spec schema: `CustomGraphCheckRequest`.
2908
2988
  type custom_graph_check_request = { "source" => String }
2909
2989
 
@@ -9419,6 +9499,25 @@ module Infrawrench
9419
9499
  def update: (body: currency_settings, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> currency_settings
9420
9500
  end
9421
9501
 
9502
+ class CustomCostSourcesUploadsNamespace
9503
+ def initialize: (Transport) -> void
9504
+ def complete: (id: String, upload_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> custom_cost_upload
9505
+ def create: (id: String, body: custom_cost_upload_create, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> custom_cost_upload
9506
+ def delete: (id: String, upload_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> custom_cost_deleted
9507
+ def list: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[custom_cost_upload]
9508
+ def rows: (id: String, upload_id: String, body: { "rows" => Array[custom_cost_row] }, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "written" => Integer }
9509
+ end
9510
+
9511
+ class CustomCostSourcesNamespace
9512
+ attr_reader uploads: CustomCostSourcesUploadsNamespace
9513
+ def initialize: (Transport) -> void
9514
+ def create: (body: custom_cost_source_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> custom_cost_source
9515
+ def delete: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> custom_cost_deleted
9516
+ def get: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> custom_cost_source
9517
+ def list: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[custom_cost_source]
9518
+ def update: (id: String, body: custom_cost_source_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> custom_cost_source
9519
+ end
9520
+
9422
9521
  class CustomGraphsNamespace
9423
9522
  def initialize: (Transport) -> void
9424
9523
  def check: (body: custom_graph_check_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> custom_graph_check_result
@@ -10300,6 +10399,7 @@ module Infrawrench
10300
10399
  attr_reader credential_hygiene: CredentialHygieneNamespace
10301
10400
  attr_reader credits: CreditsNamespace
10302
10401
  attr_reader currency: CurrencyNamespace
10402
+ attr_reader custom_cost_sources: CustomCostSourcesNamespace
10303
10403
  attr_reader custom_graphs: CustomGraphsNamespace
10304
10404
  attr_reader dashboard_notifications: DashboardNotificationsNamespace
10305
10405
  attr_reader dashboards: DashboardsNamespace
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.58.0
4
+ version: 1.59.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.58.0). Covers the published
14
+ description: Generated Ruby client for the Infrawrench API (v1.59.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.58.0).
61
+ summary: Generated Ruby client for the Infrawrench API (v1.59.0).
62
62
  test_files: []