infrawrench-sdk 1.55.0 → 1.56.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: 8fc4c8f39d0367833ba8cb129d5f738efe4e2f26df0968afe58382a5c748a918
4
- data.tar.gz: 5f05dadf135c2b6ab268b36bc7d982d4d41aae8a2ec5756f5e41f8bfb56614fd
3
+ metadata.gz: 99505501d1c47d75921de1a3850546b7b6e92ac090a47d42aea151c4dd993c26
4
+ data.tar.gz: d3690e870eddf2c0bc2d324eaa52b4d1c4415a853ba03e0fe7dad5c6b35d4a51
5
5
  SHA512:
6
- metadata.gz: 78601f4ae638adfb83788ea4f89dfbe78265462206145bdb78b575e7afe9483691f8640d0322e725d6fedf6e43569ec26f45bf5418f3d6fe05f7fd58955cab6f
7
- data.tar.gz: bfc444ab1e485fed0801b337d2673e8afde9b9a99b9d8f91b3690d51251c1585e5c16525c8f0bdf340f7743f613e081955c42fc076acffa5511d00560052a9d9
6
+ metadata.gz: 7a6034fef978bb108ea97f8e936729460163dca56fb9ad03105f50930b8e52cda46ae4e0d10e1b543d11008aae827e93f47539164879b632633d5ed96fa34caf
7
+ data.tar.gz: 3d1956b7c90049c09cb840e17c504bf00caa93ac282f01a834bd8af751553521a23d7c57504630f5bff5410198aa3a3eda91a06fa042f8b0f55afab9064590bc
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.55.0`).
3
+ Generated Ruby client for the Infrawrench API (API version `1.56.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
- 823 schemas, as RBS type aliases that steep and TypeProf can read.
44
+ 833 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.55.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.56.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.55.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.56.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.55.0)."
21
- spec.description = "Generated Ruby client for the Infrawrench API (v1.55.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.56.0)."
21
+ spec.description = "Generated Ruby client for the Infrawrench API (v1.56.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.55.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.56.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.55.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.56.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -1359,6 +1359,405 @@ module Infrawrench
1359
1359
  end
1360
1360
  end
1361
1361
 
1362
+ # `client.ai_attribution.dimensions`
1363
+ class AiAttributionDimensionsNamespace
1364
+ # @api private
1365
+ # @param transport [Transport]
1366
+ def initialize(transport)
1367
+ @transport = transport
1368
+ end
1369
+
1370
+ # Map request-metadata keys to a caller dimension
1371
+ #
1372
+ # POST /api/org/{orgId}/ai-attribution/dimensions
1373
+ #
1374
+ # Raises on 400: Bad request
1375
+ #
1376
+ # Raises on 403: Forbidden
1377
+ #
1378
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1379
+ # constructed with.
1380
+ # @param body [Hash] Request body, shaped as `AiAttributionDimensionInput`.
1381
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1382
+ # @return [Hash] Parsed JSON, shaped as `AiAttributionDimension` — see
1383
+ # `sig/infrawrench/sdk.rbs`.
1384
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1385
+ def create(body:, org_id: nil, request_options: nil)
1386
+ @transport.request(
1387
+ http_method: "POST",
1388
+ path: "/api/org/{orgId}/ai-attribution/dimensions",
1389
+ path_params: { "orgId" => org_id },
1390
+ body: body,
1391
+ request_options: request_options
1392
+ )
1393
+ end
1394
+
1395
+ # Delete a caller dimension
1396
+ #
1397
+ # DELETE /api/org/{orgId}/ai-attribution/dimensions/{id}
1398
+ #
1399
+ # Raises on 403: Forbidden
1400
+ #
1401
+ # Raises on 404: Not found
1402
+ #
1403
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1404
+ # constructed with.
1405
+ # @param id [String]
1406
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1407
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
1408
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1409
+ def delete(id:, org_id: nil, request_options: nil)
1410
+ @transport.request(
1411
+ http_method: "DELETE",
1412
+ path: "/api/org/{orgId}/ai-attribution/dimensions/{id}",
1413
+ path_params: { "orgId" => org_id, "id" => id },
1414
+ request_options: request_options
1415
+ )
1416
+ end
1417
+
1418
+ # List caller dimensions
1419
+ #
1420
+ # GET /api/org/{orgId}/ai-attribution/dimensions
1421
+ #
1422
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1423
+ # constructed with.
1424
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1425
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
1426
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1427
+ def get(org_id: nil, request_options: nil)
1428
+ @transport.request(
1429
+ http_method: "GET",
1430
+ path: "/api/org/{orgId}/ai-attribution/dimensions",
1431
+ path_params: { "orgId" => org_id },
1432
+ request_options: request_options
1433
+ )
1434
+ end
1435
+
1436
+ # Update a caller dimension
1437
+ #
1438
+ # PUT /api/org/{orgId}/ai-attribution/dimensions/{id}
1439
+ #
1440
+ # Raises on 400: Bad request
1441
+ #
1442
+ # Raises on 403: Forbidden
1443
+ #
1444
+ # Raises on 404: Not found
1445
+ #
1446
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1447
+ # constructed with.
1448
+ # @param id [String]
1449
+ # @param body [Hash] Request body, shaped as `AiAttributionDimensionInput`.
1450
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1451
+ # @return [Hash] Parsed JSON, shaped as `AiAttributionDimension` — see
1452
+ # `sig/infrawrench/sdk.rbs`.
1453
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1454
+ def update(id:, body:, org_id: nil, request_options: nil)
1455
+ @transport.request(
1456
+ http_method: "PUT",
1457
+ path: "/api/org/{orgId}/ai-attribution/dimensions/{id}",
1458
+ path_params: { "orgId" => org_id, "id" => id },
1459
+ body: body,
1460
+ request_options: request_options
1461
+ )
1462
+ end
1463
+ end
1464
+
1465
+ # `client.ai_attribution.sources`
1466
+ class AiAttributionSourcesNamespace
1467
+ # @api private
1468
+ # @param transport [Transport]
1469
+ def initialize(transport)
1470
+ @transport = transport
1471
+ end
1472
+
1473
+ # Add a request-log source
1474
+ #
1475
+ # Governed by `org:settings:write`: a source authorizes a daily read of the
1476
+ # org's request logs, and the Bedrock CloudWatch kind runs a Logs Insights
1477
+ # query billed to the org's own AWS account per GB scanned. Audit-logged.
1478
+ #
1479
+ # POST /api/org/{orgId}/ai-attribution/sources
1480
+ #
1481
+ # Raises on 400: Bad request
1482
+ #
1483
+ # Raises on 403: Forbidden
1484
+ #
1485
+ # Raises on 404: Not found
1486
+ #
1487
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1488
+ # constructed with.
1489
+ # @param body [Hash] Request body, shaped as `AiRequestSourceInput`.
1490
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1491
+ # @return [Hash] Parsed JSON, shaped as `AiRequestSource` — see `sig/infrawrench/sdk.rbs`.
1492
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1493
+ def create(body:, org_id: nil, request_options: nil)
1494
+ @transport.request(
1495
+ http_method: "POST",
1496
+ path: "/api/org/{orgId}/ai-attribution/sources",
1497
+ path_params: { "orgId" => org_id },
1498
+ body: body,
1499
+ request_options: request_options
1500
+ )
1501
+ end
1502
+
1503
+ # Delete a request-log source
1504
+ #
1505
+ # DELETE /api/org/{orgId}/ai-attribution/sources/{id}
1506
+ #
1507
+ # Raises on 403: Forbidden
1508
+ #
1509
+ # Raises on 404: Not found
1510
+ #
1511
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1512
+ # constructed with.
1513
+ # @param id [String]
1514
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1515
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
1516
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1517
+ def delete(id:, org_id: nil, request_options: nil)
1518
+ @transport.request(
1519
+ http_method: "DELETE",
1520
+ path: "/api/org/{orgId}/ai-attribution/sources/{id}",
1521
+ path_params: { "orgId" => org_id, "id" => id },
1522
+ request_options: request_options
1523
+ )
1524
+ end
1525
+
1526
+ # List request-log sources
1527
+ #
1528
+ # GET /api/org/{orgId}/ai-attribution/sources
1529
+ #
1530
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1531
+ # constructed with.
1532
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1533
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
1534
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1535
+ def get(org_id: nil, request_options: nil)
1536
+ @transport.request(
1537
+ http_method: "GET",
1538
+ path: "/api/org/{orgId}/ai-attribution/sources",
1539
+ path_params: { "orgId" => org_id },
1540
+ request_options: request_options
1541
+ )
1542
+ end
1543
+
1544
+ # Read one request-log source
1545
+ #
1546
+ # GET /api/org/{orgId}/ai-attribution/sources/{id}
1547
+ #
1548
+ # Raises on 404: Not found
1549
+ #
1550
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1551
+ # constructed with.
1552
+ # @param id [String]
1553
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1554
+ # @return [Hash] Parsed JSON, shaped as `AiRequestSource` — see `sig/infrawrench/sdk.rbs`.
1555
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1556
+ def get_org_org_id_ai_attribution_sources_id(id:, org_id: nil, request_options: nil)
1557
+ @transport.request(
1558
+ http_method: "GET",
1559
+ path: "/api/org/{orgId}/ai-attribution/sources/{id}",
1560
+ path_params: { "orgId" => org_id, "id" => id },
1561
+ request_options: request_options
1562
+ )
1563
+ end
1564
+
1565
+ # Re-read a source's history from a day
1566
+ #
1567
+ # Aggregates keep only mapped metadata keys, so a newly mapped dimension
1568
+ # reaches history only by re-reading it. Clamped to the source kind's
1569
+ # history limit.
1570
+ #
1571
+ # POST /api/org/{orgId}/ai-attribution/sources/{id}/recollect
1572
+ #
1573
+ # Raises on 400: Bad request
1574
+ #
1575
+ # Raises on 404: Not found
1576
+ #
1577
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1578
+ # constructed with.
1579
+ # @param id [String]
1580
+ # @param body [Hash] Request body, shaped as `Hash`.
1581
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1582
+ # @return [Hash] Parsed JSON, shaped as `AiRequestSource` — see `sig/infrawrench/sdk.rbs`.
1583
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1584
+ def recollect(id:, body:, org_id: nil, request_options: nil)
1585
+ @transport.request(
1586
+ http_method: "POST",
1587
+ path: "/api/org/{orgId}/ai-attribution/sources/{id}/recollect",
1588
+ path_params: { "orgId" => org_id, "id" => id },
1589
+ body: body,
1590
+ request_options: request_options
1591
+ )
1592
+ end
1593
+
1594
+ # Update a request-log source
1595
+ #
1596
+ # Pointing a source at a different location restarts its collection history.
1597
+ #
1598
+ # PUT /api/org/{orgId}/ai-attribution/sources/{id}
1599
+ #
1600
+ # Raises on 400: Bad request
1601
+ #
1602
+ # Raises on 403: Forbidden
1603
+ #
1604
+ # Raises on 404: Not found
1605
+ #
1606
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1607
+ # constructed with.
1608
+ # @param id [String]
1609
+ # @param body [Hash] Request body, shaped as `AiRequestSourceInput`.
1610
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1611
+ # @return [Hash] Parsed JSON, shaped as `AiRequestSource` — see `sig/infrawrench/sdk.rbs`.
1612
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1613
+ def update(id:, body:, org_id: nil, request_options: nil)
1614
+ @transport.request(
1615
+ http_method: "PUT",
1616
+ path: "/api/org/{orgId}/ai-attribution/sources/{id}",
1617
+ path_params: { "orgId" => org_id, "id" => id },
1618
+ body: body,
1619
+ request_options: request_options
1620
+ )
1621
+ end
1622
+ end
1623
+
1624
+ # `client.ai_attribution`
1625
+ class AiAttributionNamespace
1626
+ # @return [AiAttributionDimensionsNamespace] `client.ai_attribution.dimensions`
1627
+ attr_reader :dimensions
1628
+ # @return [AiAttributionSourcesNamespace] `client.ai_attribution.sources`
1629
+ attr_reader :sources
1630
+
1631
+ # @api private
1632
+ # @param transport [Transport]
1633
+ def initialize(transport)
1634
+ @transport = transport
1635
+ @dimensions = AiAttributionDimensionsNamespace.new(@transport)
1636
+ @sources = AiAttributionSourcesNamespace.new(@transport)
1637
+ end
1638
+
1639
+ # Discover locations (buckets, log groups, gateways) for a source kind
1640
+ #
1641
+ # GET /api/org/{orgId}/ai-attribution/locations
1642
+ #
1643
+ # Raises on 400: Bad request
1644
+ #
1645
+ # Raises on 403: Forbidden
1646
+ #
1647
+ # Raises on 404: Not found
1648
+ #
1649
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1650
+ # constructed with.
1651
+ # @param account_id [String]
1652
+ # @param source_kind_id [String]
1653
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1654
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
1655
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1656
+ def locations(account_id:, source_kind_id:, org_id: nil, request_options: nil)
1657
+ @transport.request(
1658
+ http_method: "GET",
1659
+ path: "/api/org/{orgId}/ai-attribution/locations",
1660
+ path_params: { "orgId" => org_id },
1661
+ query: { "accountId" => account_id, "sourceKindId" => source_kind_id },
1662
+ request_options: request_options
1663
+ )
1664
+ end
1665
+
1666
+ # Re-split a range of days now
1667
+ #
1668
+ # POST /api/org/{orgId}/ai-attribution/reattribute
1669
+ #
1670
+ # Raises on 400: Bad request
1671
+ #
1672
+ # Raises on 403: Forbidden
1673
+ #
1674
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1675
+ # constructed with.
1676
+ # @param body [Hash] Request body, shaped as `Hash`.
1677
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1678
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
1679
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1680
+ def reattribute(body:, org_id: nil, request_options: nil)
1681
+ @transport.request(
1682
+ http_method: "POST",
1683
+ path: "/api/org/{orgId}/ai-attribution/reattribute",
1684
+ path_params: { "orgId" => org_id },
1685
+ body: body,
1686
+ request_options: request_options
1687
+ )
1688
+ end
1689
+
1690
+ # List the request-log source kinds the org can add
1691
+ #
1692
+ # GET /api/org/{orgId}/ai-attribution/source-kinds
1693
+ #
1694
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1695
+ # constructed with.
1696
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1697
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
1698
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1699
+ def source_kinds(org_id: nil, request_options: nil)
1700
+ @transport.request(
1701
+ http_method: "GET",
1702
+ path: "/api/org/{orgId}/ai-attribution/source-kinds",
1703
+ path_params: { "orgId" => org_id },
1704
+ request_options: request_options
1705
+ )
1706
+ end
1707
+
1708
+ # Attributed AI spend by one caller dimension
1709
+ #
1710
+ # Includes the `(unattributed)` remainder and `(not set)` for matched
1711
+ # requests that lacked every mapped key. For time series, group a cost
1712
+ # report by the tag key `caller:<dimension>`.
1713
+ #
1714
+ # GET /api/org/{orgId}/ai-attribution/spend
1715
+ #
1716
+ # Raises on 400: Bad request
1717
+ #
1718
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1719
+ # constructed with.
1720
+ # @param from [String, nil] Inclusive start day. Defaults to 29 days ago.
1721
+ # @param to [String, nil] Inclusive end day. Defaults to today.
1722
+ # @param dimension [String]
1723
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1724
+ # @return [Hash] Parsed JSON, shaped as `AiSpendBreakdown` — see `sig/infrawrench/sdk.rbs`.
1725
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1726
+ def spend(dimension:, org_id: nil, from: nil, to: nil, request_options: nil)
1727
+ @transport.request(
1728
+ http_method: "GET",
1729
+ path: "/api/org/{orgId}/ai-attribution/spend",
1730
+ path_params: { "orgId" => org_id },
1731
+ query: { "from" => from, "to" => to, "dimension" => dimension },
1732
+ request_options: request_options
1733
+ )
1734
+ end
1735
+
1736
+ # Match-rate statistics per source and coverage per provider
1737
+ #
1738
+ # GET /api/org/{orgId}/ai-attribution/stats
1739
+ #
1740
+ # Raises on 400: Bad request
1741
+ #
1742
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1743
+ # constructed with.
1744
+ # @param from [String, nil] Inclusive start day. Defaults to 29 days ago.
1745
+ # @param to [String, nil] Inclusive end day. Defaults to today.
1746
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1747
+ # @return [Hash] Parsed JSON, shaped as `AiAttributionStats` — see
1748
+ # `sig/infrawrench/sdk.rbs`.
1749
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1750
+ def stats(org_id: nil, from: nil, to: nil, request_options: nil)
1751
+ @transport.request(
1752
+ http_method: "GET",
1753
+ path: "/api/org/{orgId}/ai-attribution/stats",
1754
+ path_params: { "orgId" => org_id },
1755
+ query: { "from" => from, "to" => to },
1756
+ request_options: request_options
1757
+ )
1758
+ end
1759
+ end
1760
+
1362
1761
  # `client.alert_rules.deliveries`
1363
1762
  class AlertRulesDeliveriesNamespace
1364
1763
  # @api private
@@ -18473,6 +18872,8 @@ module Infrawrench
18473
18872
  attr_reader :agent_registrations
18474
18873
  # @return [AgentsNamespace] `client.agents`
18475
18874
  attr_reader :agents
18875
+ # @return [AiAttributionNamespace] `client.ai_attribution`
18876
+ attr_reader :ai_attribution
18476
18877
  # @return [AlertRulesNamespace] `client.alert_rules`
18477
18878
  attr_reader :alert_rules
18478
18879
  # @return [ApiKeysNamespace] `client.api_keys`
@@ -18681,6 +19082,7 @@ module Infrawrench
18681
19082
  @agent = AgentNamespace.new(@transport)
18682
19083
  @agent_registrations = AgentRegistrationsNamespace.new(@transport)
18683
19084
  @agents = AgentsNamespace.new(@transport)
19085
+ @ai_attribution = AiAttributionNamespace.new(@transport)
18684
19086
  @alert_rules = AlertRulesNamespace.new(@transport)
18685
19087
  @api_keys = ApiKeysNamespace.new(@transport)
18686
19088
  @apps = AppsNamespace.new(@transport)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.55.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.56.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.55.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.56.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.55.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.56.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.55.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.56.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.55.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.56.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.55.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.56.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.55.0"
18
+ VERSION = "1.56.0"
19
19
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.55.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.56.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.55.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.56.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.55.0 | MIT | Copyright (c) 2026 Infrawrench LLC
1
+ # infrawrench-sdk v1.56.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.55.0).
4
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.56.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -414,6 +414,128 @@ module Infrawrench
414
414
  "hiddenFieldKeys" => Array[String]
415
415
  }
416
416
 
417
+ # Spec schema: `AiAttributionDimension`.
418
+ type ai_attribution_dimension = {
419
+ "id" => String,
420
+ "key" => String,
421
+ "label" => String,
422
+ "metadataKeys" => Array[String],
423
+ "createdAt" => String,
424
+ "updatedAt" => String
425
+ }
426
+
427
+ # Spec schema: `AiAttributionDimensionInput`.
428
+ type ai_attribution_dimension_input = { "key" => String, "label" => String, "metadataKeys" => Array[String] }
429
+
430
+ # Spec schema: `AiAttributionStats`.
431
+ type ai_attribution_stats = {
432
+ "from" => String,
433
+ "to" => String,
434
+ "sources" => Array[ai_source_match_stats],
435
+ "providers" => Array[ai_provider_coverage],
436
+ "attributedDays" => Integer
437
+ }
438
+
439
+ # Spec schema: `AiProviderCoverage`.
440
+ type ai_provider_coverage = {
441
+ "provider" => String,
442
+ "currency" => String,
443
+ "billedAmount" => Numeric,
444
+ "attributedAmount" => Numeric,
445
+ "unattributedAmount" => Numeric
446
+ }
447
+
448
+ # Spec schema: `AiRequestLogLocation`.
449
+ type ai_request_log_location = {
450
+ "id" => String,
451
+ "label" => String,
452
+ ?"detail" => String,
453
+ "location" => Hash[String, String],
454
+ ?"recommended" => bool
455
+ }
456
+
457
+ # Spec schema: `AiRequestSource`.
458
+ type ai_request_source = {
459
+ "id" => String,
460
+ "name" => String,
461
+ "kind" => "plugin" | "litellm",
462
+ "pluginId" => String | nil,
463
+ "accountId" => String | nil,
464
+ "accountName" => String | nil,
465
+ "sourceKindId" => String,
466
+ "location" => Hash[String, String],
467
+ "enabled" => bool,
468
+ "lookbackDays" => Integer,
469
+ "baseUrl" => String | nil,
470
+ "hasApiKey" => bool,
471
+ "collectedThrough" => String | nil,
472
+ "lastRunAt" => String | nil,
473
+ "nextRunAt" => String | nil,
474
+ "lastError" => String | nil,
475
+ "lastErrorHelpUrl" => String | nil,
476
+ "failureCount" => Integer,
477
+ "observedMetadataKeys" => Hash[String, Numeric],
478
+ "lastQueryBytesScanned" => Numeric | nil,
479
+ "createdAt" => String,
480
+ "updatedAt" => String
481
+ }
482
+
483
+ # Spec schema: `AiRequestSourceInput`.
484
+ type ai_request_source_input = {
485
+ "name" => String,
486
+ "kind" => "plugin" | "litellm",
487
+ ?"accountId" => String | nil,
488
+ "sourceKindId" => String,
489
+ "location" => Hash[String, String],
490
+ "enabled" => bool,
491
+ "lookbackDays" => Integer,
492
+ ?"baseUrl" => String | nil,
493
+ ?"apiKey" => String
494
+ }
495
+
496
+ # Spec schema: `AiRequestSourceKindOption`.
497
+ type ai_request_source_kind_option = {
498
+ "kind" => "plugin" | "litellm",
499
+ "pluginId" => String | nil,
500
+ "pluginName" => String | nil,
501
+ "sourceKindId" => String,
502
+ "label" => String,
503
+ "description" => String,
504
+ "locationLabel" => String,
505
+ "maxHistoryDays" => Integer,
506
+ "queriesBillable" => bool,
507
+ "acceptsPrefix" => bool,
508
+ "helpUrl" => String | nil,
509
+ "accounts" => Array[{ "id" => String, "name" => String }]
510
+ }
511
+
512
+ # Spec schema: `AiSourceMatchStats`.
513
+ type ai_source_match_stats = {
514
+ "sourceId" => String,
515
+ "name" => String,
516
+ "days" => Integer,
517
+ "requests" => Numeric,
518
+ "matchedRequests" => Numeric,
519
+ "ambiguousRequests" => Numeric,
520
+ "unmatchedRequests" => Numeric,
521
+ "skippedRecords" => Numeric,
522
+ "currency" => String | nil,
523
+ "attributedAmount" => Numeric,
524
+ "billedAmount" => Numeric,
525
+ "coveragePercent" => Numeric | nil,
526
+ "degradedDays" => Integer,
527
+ "truncatedDays" => Integer
528
+ }
529
+
530
+ # Spec schema: `AiSpendBreakdown`.
531
+ type ai_spend_breakdown = {
532
+ "from" => String,
533
+ "to" => String,
534
+ "dimension" => String,
535
+ "tagKey" => String,
536
+ "rows" => Array[{ "value" => String, "currency" => String, "amount" => Numeric }]
537
+ }
538
+
417
539
  # One clause of a rule. A rule matches when every condition matches; 'or' is
418
540
  # expressed by writing a second rule. A condition on a fact the alert does not
419
541
  # carry never matches — in either direction, so `accountId notIn [x]` does not
@@ -8737,6 +8859,35 @@ module Infrawrench
8737
8859
  def accounts: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[agent_vm_account]
8738
8860
  end
8739
8861
 
8862
+ class AiAttributionDimensionsNamespace
8863
+ def initialize: (Transport) -> void
8864
+ def create: (body: ai_attribution_dimension_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ai_attribution_dimension
8865
+ def delete: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "ok" => bool }
8866
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "dimensions" => Array[ai_attribution_dimension] }
8867
+ def update: (id: String, body: ai_attribution_dimension_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ai_attribution_dimension
8868
+ end
8869
+
8870
+ class AiAttributionSourcesNamespace
8871
+ def initialize: (Transport) -> void
8872
+ def create: (body: ai_request_source_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ai_request_source
8873
+ def delete: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "ok" => bool }
8874
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "sources" => Array[ai_request_source] }
8875
+ def get_org_org_id_ai_attribution_sources_id: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ai_request_source
8876
+ def recollect: (id: String, body: { "from" => String }, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ai_request_source
8877
+ def update: (id: String, body: ai_request_source_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ai_request_source
8878
+ end
8879
+
8880
+ class AiAttributionNamespace
8881
+ attr_reader dimensions: AiAttributionDimensionsNamespace
8882
+ attr_reader sources: AiAttributionSourcesNamespace
8883
+ def initialize: (Transport) -> void
8884
+ def locations: (account_id: String, source_kind_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "locations" => Array[ai_request_log_location] }
8885
+ def reattribute: (body: { "from" => String, "to" => String }, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "ok" => bool, "days" => Integer }
8886
+ def source_kinds: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "sourceKinds" => Array[ai_request_source_kind_option] }
8887
+ def spend: (dimension: String, ?org_id: String?, ?from: String?, ?to: String?, ?request_options: Hash[Symbol, untyped]?) -> ai_spend_breakdown
8888
+ def stats: (?org_id: String?, ?from: String?, ?to: String?, ?request_options: Hash[Symbol, untyped]?) -> ai_attribution_stats
8889
+ end
8890
+
8740
8891
  class AlertRulesDeliveriesNamespace
8741
8892
  def initialize: (Transport) -> void
8742
8893
  def ack: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "acknowledged" => bool, ?"alreadyAcknowledgedBy" => String | nil, ?"reason" => "not_pending" | "already_escalated" | "already_acknowledged", ?"title" => String }
@@ -10005,6 +10156,7 @@ module Infrawrench
10005
10156
  attr_reader agent: AgentNamespace
10006
10157
  attr_reader agent_registrations: AgentRegistrationsNamespace
10007
10158
  attr_reader agents: AgentsNamespace
10159
+ attr_reader ai_attribution: AiAttributionNamespace
10008
10160
  attr_reader alert_rules: AlertRulesNamespace
10009
10161
  attr_reader api_keys: ApiKeysNamespace
10010
10162
  attr_reader apps: AppsNamespace
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.55.0
4
+ version: 1.56.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.55.0). Covers the published
14
+ description: Generated Ruby client for the Infrawrench API (v1.56.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.55.0).
61
+ summary: Generated Ruby client for the Infrawrench API (v1.56.0).
62
62
  test_files: []