infrawrench-sdk 1.3.0 → 1.6.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.
@@ -1,7 +1,7 @@
1
- # infrawrench-sdk v1.3.0 | MIT | Copyright (c) 2026 Infrawrench LLC
1
+ # infrawrench-sdk v1.6.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.3.0).
4
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.6.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -315,6 +315,7 @@ module Infrawrench
315
315
  type alert_trigger = "syncIncidents"
316
316
  | "budgetAlerts"
317
317
  | "anomalyAlerts"
318
+ | "costChangeAlerts"
318
319
  | "metricAlerts"
319
320
  | "resourceDrift"
320
321
  | "workflowPages"
@@ -462,9 +463,21 @@ module Infrawrench
462
463
  "triggeredAt" => String
463
464
  }
464
465
 
466
+ # The basis `actualCents` and `forecastCents` were measured on.
467
+ #
468
+ # Spec schema: `BudgetCostBasis`.
469
+ type budget_cost_basis = "cash" | "amortized"
470
+
465
471
  # Spec schema: `BudgetCostFilter`.
466
472
  type budget_cost_filter = {
467
- "dimension" => "provider" | "account" | "service" | "region" | "resource" | "tag",
473
+ "dimension" => "provider"
474
+ | "account"
475
+ | "service"
476
+ | "region"
477
+ | "resource"
478
+ | "tag"
479
+ | "charge_type"
480
+ | "commitment",
468
481
  "op" => "in" | "not_in",
469
482
  "values" => Array[String],
470
483
  ?"tagKey" => String
@@ -478,7 +491,9 @@ module Infrawrench
478
491
  "amountCents" => Integer,
479
492
  "currency" => String,
480
493
  "filters" => Array[budget_cost_filter],
494
+ "savedFilterId" => String | nil,
481
495
  "thresholds" => Array[budget_threshold],
496
+ "costBasis" => budget_cost_basis & untyped,
482
497
  "createdByUserId" => String | nil,
483
498
  "deletedAt" => String | nil,
484
499
  "createdAt" => String,
@@ -491,7 +506,9 @@ module Infrawrench
491
506
  "amountCents" => Integer,
492
507
  ?"currency" => String,
493
508
  ?"filters" => Array[budget_cost_filter],
494
- "thresholds" => Array[budget_threshold]
509
+ ?"savedFilterId" => String,
510
+ "thresholds" => Array[budget_threshold],
511
+ ?"costBasis" => budget_cost_basis & untyped
495
512
  }
496
513
 
497
514
  # Spec schema: `BudgetThreshold`.
@@ -505,6 +522,8 @@ module Infrawrench
505
522
  "currency" => String,
506
523
  "filters" => Array[budget_cost_filter],
507
524
  "thresholds" => Array[budget_threshold],
525
+ "costBasis" => budget_cost_basis,
526
+ "savedFilterId" => String | nil,
508
527
  "month" => String,
509
528
  "actualCents" => Integer,
510
529
  "forecastCents" => Integer | nil,
@@ -593,6 +612,123 @@ module Infrawrench
593
612
  ?"fields" => Array[json_object]
594
613
  }
595
614
 
615
+ # Spec schema: `CommitmentCoverage`.
616
+ type commitment_coverage = {
617
+ "available" => bool,
618
+ "currencies" => Array[commitment_coverage_currency],
619
+ "excludedAccountIds" => Array[String]
620
+ }
621
+
622
+ # Spec schema: `CommitmentCoverageCurrency`.
623
+ type commitment_coverage_currency = {
624
+ "currency" => String,
625
+ "coveredAmount" => Numeric,
626
+ "uncoveredAmount" => Numeric,
627
+ "uncoveredEligibleAmount" => Numeric,
628
+ "broadRatio" => Numeric | nil,
629
+ "narrowRatio" => Numeric | nil
630
+ }
631
+
632
+ # Spec schema: `CommitmentHolding`.
633
+ type commitment_holding = {
634
+ "accountId" => String,
635
+ "accountName" => String,
636
+ "pluginId" => plugin_id,
637
+ "commitmentId" => String,
638
+ "kind" => "reservation" | "savings_plan" | "committed_use",
639
+ "description" => String,
640
+ "scope" => String | nil,
641
+ "region" => String | nil,
642
+ "startDate" => String | nil,
643
+ "endDate" => String | nil,
644
+ "termDays" => Integer | nil,
645
+ "paymentOption" => "all_upfront" | "partial_upfront" | "no_upfront" | "monthly" | nil,
646
+ "currency" => String | nil,
647
+ "upfrontAmount" => Numeric | nil,
648
+ "recurringAmount" => Numeric | nil,
649
+ "recurringPeriod" => "hour" | "month" | nil,
650
+ "hourlyCommitmentAmount" => Numeric | nil,
651
+ "unitCommitments" => Array[commitment_unit_amount] | nil,
652
+ "state" => "active" | "expired" | "queued",
653
+ "providerUtilization" => Array[commitment_provider_utilization] | nil,
654
+ "lastSeenAt" => String,
655
+ "utilization" => commitment_utilization
656
+ }
657
+
658
+ # Spec schema: `CommitmentPlanner`.
659
+ type commitment_planner = {
660
+ "available" => bool,
661
+ "windowDayCount" => Integer,
662
+ "recommendations" => Array[commitment_recommendation],
663
+ "rejected" => Array[commitment_rejected_cell]
664
+ }
665
+
666
+ # Spec schema: `CommitmentPollFailure`.
667
+ type commitment_poll_failure = {
668
+ "accountId" => String,
669
+ "accountName" => String,
670
+ "pluginId" => plugin_id,
671
+ "message" => String,
672
+ "failureCount" => Integer
673
+ }
674
+
675
+ # Spec schema: `CommitmentProviderUtilization`.
676
+ type commitment_provider_utilization = { "grainDays" => Integer, "percentage" => Numeric }
677
+
678
+ # Spec schema: `CommitmentRecommendation`.
679
+ type commitment_recommendation = {
680
+ "pluginId" => plugin_id,
681
+ "service" => String,
682
+ "region" => String,
683
+ "currency" => String,
684
+ "recommendedDailyCommitment" => Numeric,
685
+ "recommendedHourlyCommitment" => Numeric,
686
+ "annualCommitment" => Numeric,
687
+ "p50DailySpend" => Numeric,
688
+ "savingBasis" => "range" | "upper_bound",
689
+ ?"discountRateMin" => Numeric,
690
+ "discountRateMax" => Numeric,
691
+ ?"estimatedAnnualSavingMin" => Numeric,
692
+ "estimatedAnnualSavingMax" => Numeric,
693
+ "breakEvenUtilization" => Numeric,
694
+ "annualLossIfUsageHalves" => Numeric
695
+ }
696
+
697
+ # Spec schema: `CommitmentRejectedCell`.
698
+ type commitment_rejected_cell = {
699
+ "pluginId" => plugin_id,
700
+ "service" => String,
701
+ "region" => String,
702
+ "currency" => String,
703
+ "gate" => "presence" | "not_in_decline" | "floor" | "materiality"
704
+ }
705
+
706
+ # Spec schema: `CommitmentUnitAmount`.
707
+ type commitment_unit_amount = { "unit" => String, "amount" => Numeric }
708
+
709
+ # Spec schema: `CommitmentUtilization`.
710
+ type commitment_utilization = {
711
+ "utilization" => Numeric | nil,
712
+ ?"reason" => "unit_denominated" | "no_active_days" | "no_data_days" | "unattributed_rows",
713
+ "obligationAmount" => Numeric | nil,
714
+ "deliveredAmount" => Numeric,
715
+ "activeDays" => Integer,
716
+ "measuredDays" => Integer,
717
+ "missingDays" => Integer,
718
+ "windowDays" => Integer
719
+ }
720
+
721
+ # Spec schema: `CommitmentsFeed`.
722
+ type commitments_feed = {
723
+ "holdings" => Array[commitment_holding],
724
+ "coverage" => commitment_coverage,
725
+ "planner" => commitment_planner,
726
+ "failures" => Array[commitment_poll_failure],
727
+ "pendingAccountIds" => Array[String],
728
+ "utilizationWindowDays" => Integer,
729
+ "plannerWindowDays" => Integer
730
+ }
731
+
596
732
  # Spec schema: `ConnectEnvDeployRequest`.
597
733
  type connect_env_deploy_request = {
598
734
  "sourceAccountId" => String,
@@ -649,6 +785,9 @@ module Infrawrench
649
785
  "supportsCosts" => bool,
650
786
  "periodNative" => bool,
651
787
  "dimensions" => Array["service" | "region" | "resource" | "tag"],
788
+ "chargeTypes" => bool,
789
+ "amortization" => bool,
790
+ "estimated" => bool,
652
791
  "costLastPolledAt" => String | nil,
653
792
  "costBackfilledAt" => String | nil,
654
793
  "costPollFailureCount" => Integer,
@@ -656,6 +795,93 @@ module Infrawrench
656
795
  "coverage" => { "firstDay" => String, "lastDay" => String } | nil
657
796
  }
658
797
 
798
+ # A change-based cost alert: fires when spend on its scope moves more than the
799
+ # configured threshold versus the prior period. The third alert family
800
+ # alongside budgets (absolute monthly total) and anomaly detection
801
+ # (statistical outliers against a learned baseline).
802
+ #
803
+ # Spec schema: `CostAlert`.
804
+ type cost_alert = {
805
+ "id" => String,
806
+ "name" => String,
807
+ "filters" => Array[cost_alert_filter],
808
+ "groupBy" => "provider"
809
+ | "account"
810
+ | "service"
811
+ | "region"
812
+ | "resource"
813
+ | "tag"
814
+ | "charge_type"
815
+ | "commitment"
816
+ | nil,
817
+ "groupByTagKey" => String | nil,
818
+ "cadence" => cost_change_cadence,
819
+ "thresholdPercent" => Integer | nil,
820
+ "thresholdAmountCents" => Integer | nil,
821
+ "direction" => cost_change_direction,
822
+ "enabled" => bool,
823
+ "lastEvaluatedAt" => String | nil,
824
+ "lastFiredAt" => String | nil,
825
+ "createdAt" => String,
826
+ "updatedAt" => String
827
+ }
828
+
829
+ # Spec schema: `CostAlertEvent`.
830
+ type cost_alert_event = {
831
+ "id" => String,
832
+ "alertId" => String,
833
+ "alertName" => String,
834
+ "periodKey" => String,
835
+ "windowFrom" => String,
836
+ "windowTo" => String,
837
+ "previousFrom" => String,
838
+ "previousTo" => String,
839
+ "groupKey" => String,
840
+ "currency" => String,
841
+ "previousAmountCents" => Integer,
842
+ "currentAmountCents" => Integer,
843
+ "changePercent" => Integer | nil,
844
+ "direction" => "increase" | "decrease",
845
+ "firedAt" => String,
846
+ "notifiedAt" => String | nil
847
+ }
848
+
849
+ # Spec schema: `CostAlertFilter`.
850
+ type cost_alert_filter = {
851
+ "dimension" => "provider"
852
+ | "account"
853
+ | "service"
854
+ | "region"
855
+ | "resource"
856
+ | "tag"
857
+ | "charge_type"
858
+ | "commitment",
859
+ "op" => "in" | "not_in",
860
+ "values" => Array[String],
861
+ ?"tagKey" => String
862
+ }
863
+
864
+ # Spec schema: `CostAlertInput`.
865
+ type cost_alert_input = {
866
+ "name" => String,
867
+ ?"filters" => Array[cost_alert_filter],
868
+ ?"groupBy" => "provider"
869
+ | "account"
870
+ | "service"
871
+ | "region"
872
+ | "resource"
873
+ | "tag"
874
+ | "charge_type"
875
+ | "commitment"
876
+ | nil,
877
+ ?"groupByTagKey" => String,
878
+ "cadence" => cost_change_cadence,
879
+ ?"thresholdPercent" => Integer | nil,
880
+ ?"thresholdAmountCents" => Integer | nil,
881
+ "direction" => cost_change_direction,
882
+ ?"enabled" => bool
883
+ }
884
+
659
885
  # Spec schema: `CostAnomaly`.
660
886
  type cost_anomaly = {
661
887
  "id" => String,
@@ -683,6 +909,16 @@ module Infrawrench
683
909
  # Spec schema: `CostAnomalySettingsView`.
684
910
  type cost_anomaly_settings_view = cost_anomaly_settings & { "smsConfigured" => bool }
685
911
 
912
+ # Which number to sum. `cash` is what the provider charged on the day it
913
+ # charged it — the default, and what every query returned before this existed.
914
+ # `amortized` spreads a commitment's up-front fee across the term it buys, so
915
+ # a year of capacity bought on one day is counted on the days it covers.
916
+ # Providers that report no amortized amount fall back to their cash amount, so
917
+ # an amortized query over a mixed estate never drops their spend.
918
+ #
919
+ # Spec schema: `CostBasis`.
920
+ type cost_basis = "cash" | "amortized"
921
+
686
922
  # Spec schema: `CostCentre`.
687
923
  type cost_centre = {
688
924
  "id" => String,
@@ -695,8 +931,49 @@ module Infrawrench
695
931
  # Spec schema: `CostCentreInput`.
696
932
  type cost_centre_input = { "name" => String, ?"description" => String }
697
933
 
934
+ # Which window is compared to which, in complete UTC days (the accruing
935
+ # current day never counts). daily: one complete day vs the same weekday one
936
+ # week earlier. weekly: the last 7 complete days vs the 7 before them.
937
+ # monthly: month-to-date vs the same number of days at the start of the prior
938
+ # month — never MTD vs the full prior month.
939
+ #
940
+ # Spec schema: `CostChangeCadence`.
941
+ type cost_change_cadence = "daily" | "weekly" | "monthly"
942
+
943
+ # Spec schema: `CostChangeDirection`.
944
+ type cost_change_direction = "increase" | "decrease" | "both"
945
+
946
+ # Spec schema: `CostChargeType`.
947
+ type cost_charge_type = "usage"
948
+ | "commitment_fee"
949
+ | "commitment_discount"
950
+ | "credit"
951
+ | "tax"
952
+ | "refund"
953
+ | "adjustment"
954
+ | "support"
955
+ | "other"
956
+
957
+ # A relative preset resolves against today every time the report runs, so a
958
+ # saved report keeps meaning 'the last 30 days'; an absolute range pins it to
959
+ # fixed dates.
960
+ #
961
+ # Spec schema: `CostDateRange`.
962
+ type cost_date_range = {
963
+ "kind" => "relative",
964
+ "preset" => "7d" | "30d" | "90d" | "mtd" | "last_month" | "qtd" | "ytd" | "12m"
965
+ }
966
+ | { "kind" => "absolute", "from" => String, "to" => String }
967
+
698
968
  # Spec schema: `CostDimension`.
699
- type cost_dimension = "provider" | "account" | "service" | "region" | "resource" | "tag"
969
+ type cost_dimension = "provider"
970
+ | "account"
971
+ | "service"
972
+ | "region"
973
+ | "resource"
974
+ | "tag"
975
+ | "charge_type"
976
+ | "commitment"
700
977
 
701
978
  # Spec schema: `CostDimensionValues`.
702
979
  type cost_dimension_values = { "values" => Array[String | { "value" => String, "label" => String }] }
@@ -730,6 +1007,122 @@ module Infrawrench
730
1007
  ?"parentResourceId" => resource_id
731
1008
  }
732
1009
 
1010
+ # Spec schema: `CostExport`.
1011
+ type cost_export = {
1012
+ "id" => String,
1013
+ "name" => String,
1014
+ "format" => "csv" | "ndjson",
1015
+ "query" => cost_export_query,
1016
+ "cadence" => "daily" | "weekly" | "monthly",
1017
+ "hour" => Integer,
1018
+ "timezone" => String,
1019
+ "restatementDays" => Integer,
1020
+ "enabled" => bool,
1021
+ "destination" => cost_export_destination,
1022
+ "hasCredentials" => bool,
1023
+ "credentialHint" => String | nil,
1024
+ "lastRunAt" => String | nil,
1025
+ "lastStatus" => "pending" | "succeeded" | "failed",
1026
+ "lastError" => String | nil,
1027
+ "lastObjectCount" => Integer | nil,
1028
+ "lastRowCount" => Integer | nil,
1029
+ "nextRunAt" => String | nil,
1030
+ "createdByUserId" => String | nil,
1031
+ "createdAt" => String,
1032
+ "updatedAt" => String
1033
+ }
1034
+
1035
+ # Spec schema: `CostExportDestination`.
1036
+ type cost_export_destination = {
1037
+ "kind" => "s3",
1038
+ "bucket" => String,
1039
+ "prefix" => String,
1040
+ "region" => String,
1041
+ "endpoint" => String,
1042
+ "forcePathStyle" => bool
1043
+ }
1044
+ | { "kind" => "http", "method" => "POST" | "PUT", "urlHint" => String }
1045
+
1046
+ # Spec schema: `CostExportFilter`.
1047
+ type cost_export_filter = {
1048
+ "dimension" => "provider"
1049
+ | "account"
1050
+ | "service"
1051
+ | "region"
1052
+ | "resource"
1053
+ | "tag"
1054
+ | "charge_type"
1055
+ | "commitment",
1056
+ "op" => "in" | "not_in",
1057
+ "values" => Array[String],
1058
+ ?"tagKey" => String
1059
+ }
1060
+
1061
+ # Spec schema: `CostExportInput`.
1062
+ type cost_export_input = {
1063
+ "name" => String,
1064
+ "format" => "csv" | "ndjson",
1065
+ "query" => cost_export_query,
1066
+ "cadence" => "daily" | "weekly" | "monthly",
1067
+ "hour" => Integer,
1068
+ "timezone" => String,
1069
+ "restatementDays" => Integer,
1070
+ "enabled" => bool,
1071
+ "destination" => cost_export_destination,
1072
+ ?"accessKeyId" => String,
1073
+ ?"secretAccessKey" => String,
1074
+ ?"url" => String
1075
+ }
1076
+
1077
+ # Spec schema: `CostExportObject`.
1078
+ type cost_export_object = {
1079
+ "periodStart" => String,
1080
+ "from" => String,
1081
+ "to" => String,
1082
+ "key" => String,
1083
+ "rowCount" => Integer,
1084
+ "byteCount" => Integer
1085
+ }
1086
+
1087
+ # The rows a run selects. Reuses the same `CostFilter` and dimension
1088
+ # vocabulary the dashboards, budgets and cost reports store, so a filter means
1089
+ # the same thing everywhere.
1090
+ #
1091
+ # Spec schema: `CostExportQuery`.
1092
+ type cost_export_query = {
1093
+ "version" => Numeric,
1094
+ "dimensions" => Array["provider"
1095
+ | "account"
1096
+ | "service"
1097
+ | "region"
1098
+ | "resource"
1099
+ | "tag"
1100
+ | "charge_type"
1101
+ | "commitment"],
1102
+ "tagKeys" => Array[String],
1103
+ "filters" => Array[cost_export_filter],
1104
+ ?"chargeTypes" => Array["usage"
1105
+ | "commitment_fee"
1106
+ | "commitment_discount"
1107
+ | "credit"
1108
+ | "tax"
1109
+ | "refund"
1110
+ | "adjustment"
1111
+ | "support"
1112
+ | "other"],
1113
+ ?"costBasis" => "cash" | "amortized"
1114
+ }
1115
+
1116
+ # Spec schema: `CostExportRunResult`.
1117
+ type cost_export_run_result = {
1118
+ "exportId" => String,
1119
+ "status" => "pending" | "succeeded" | "failed",
1120
+ "objects" => Array[cost_export_object],
1121
+ "rowCount" => Integer,
1122
+ "collectionWatermark" => String | nil,
1123
+ "error" => String | nil
1124
+ }
1125
+
733
1126
  # Spec schema: `CostFilter`.
734
1127
  type cost_filter = {
735
1128
  "dimension" => cost_dimension,
@@ -738,6 +1131,33 @@ module Infrawrench
738
1131
  ?"tagKey" => String
739
1132
  }
740
1133
 
1134
+ # The saved graph. Identical to the config an ad-hoc `cost_graph` dashboard
1135
+ # widget stores inline — a report is that config given a name and an id.
1136
+ #
1137
+ # Spec schema: `CostGraphConfig`.
1138
+ type cost_graph_config = {
1139
+ "version" => Numeric,
1140
+ "chartType" => "stacked_bar" | "multi_bar" | "line" | "area" | "pie",
1141
+ "binning" => "daily" | "weekly" | "monthly" | "cumulative",
1142
+ "dateRange" => cost_date_range,
1143
+ "groupBy" => "none"
1144
+ | "provider"
1145
+ | "account"
1146
+ | "service"
1147
+ | "region"
1148
+ | "resource"
1149
+ | "tag"
1150
+ | "charge_type"
1151
+ | "commitment",
1152
+ ?"groupByTagKey" => String,
1153
+ ?"filters" => Array[cost_report_filter],
1154
+ ?"savedFilterId" => String,
1155
+ ?"topN" => Integer,
1156
+ ?"comparePreviousPeriod" => bool,
1157
+ ?"showForecast" => bool,
1158
+ ?"costBasis" => "cash" | "amortized"
1159
+ }
1160
+
741
1161
  # Spec schema: `CostPushRequest`.
742
1162
  type cost_push_request = { "source" => String, "rows" => Array[pushed_cost_row] }
743
1163
 
@@ -749,12 +1169,24 @@ module Infrawrench
749
1169
  "from" => String,
750
1170
  "to" => String,
751
1171
  "binning" => "daily" | "weekly" | "monthly" | "cumulative",
752
- "groupBy" => "none" | "provider" | "account" | "service" | "region" | "resource" | "tag",
1172
+ "groupBy" => "none"
1173
+ | "provider"
1174
+ | "account"
1175
+ | "service"
1176
+ | "region"
1177
+ | "resource"
1178
+ | "tag"
1179
+ | "charge_type"
1180
+ | "commitment",
753
1181
  ?"groupByTagKey" => String,
754
1182
  ?"filters" => Array[cost_filter],
1183
+ ?"query" => String,
1184
+ ?"savedFilterId" => String,
755
1185
  ?"topN" => Integer,
756
1186
  ?"comparePreviousPeriod" => bool,
757
- ?"forecast" => bool
1187
+ ?"forecast" => bool,
1188
+ ?"costBasis" => cost_basis,
1189
+ ?"chargeTypes" => Array[cost_charge_type]
758
1190
  }
759
1191
 
760
1192
  # Spec schema: `CostQueryResponse`.
@@ -775,6 +1207,66 @@ module Infrawrench
775
1207
  "points" => Array[cost_series_point]
776
1208
  }
777
1209
 
1210
+ # Spec schema: `CostReport`.
1211
+ type cost_report = {
1212
+ "id" => String,
1213
+ "name" => String,
1214
+ "description" => String | nil,
1215
+ "config" => cost_graph_config,
1216
+ "folderId" => String | nil,
1217
+ "createdByUserId" => String | nil,
1218
+ "createdAt" => String,
1219
+ "updatedAt" => String,
1220
+ "placements" => Array[cost_report_placement]
1221
+ }
1222
+
1223
+ # Spec schema: `CostReportFilter`.
1224
+ type cost_report_filter = {
1225
+ "dimension" => "provider"
1226
+ | "account"
1227
+ | "service"
1228
+ | "region"
1229
+ | "resource"
1230
+ | "tag"
1231
+ | "charge_type"
1232
+ | "commitment",
1233
+ "op" => "in" | "not_in",
1234
+ "values" => Array[String],
1235
+ ?"tagKey" => String
1236
+ }
1237
+
1238
+ # Spec schema: `CostReportFolder`.
1239
+ type cost_report_folder = {
1240
+ "id" => String,
1241
+ "name" => String,
1242
+ "parentFolderId" => String | nil,
1243
+ "createdAt" => String,
1244
+ "updatedAt" => String
1245
+ }
1246
+
1247
+ # Spec schema: `CostReportFolderInput`.
1248
+ type cost_report_folder_input = { "name" => String, ?"parentFolderId" => String | nil }
1249
+
1250
+ # Spec schema: `CostReportInput`.
1251
+ type cost_report_input = {
1252
+ "name" => String,
1253
+ ?"description" => String,
1254
+ "config" => cost_graph_config,
1255
+ ?"folderId" => String | nil
1256
+ }
1257
+
1258
+ # Spec schema: `CostReportPlacement`.
1259
+ type cost_report_placement = { "widgetId" => String, "dashboardId" => String, "dashboardName" => String }
1260
+
1261
+ # Spec schema: `CostReportRunResult`.
1262
+ type cost_report_run_result = {
1263
+ "reportId" => String,
1264
+ "name" => String,
1265
+ "from" => String,
1266
+ "to" => String,
1267
+ "result" => cost_query_response
1268
+ }
1269
+
778
1270
  # Spec schema: `CostSeriesPoint`.
779
1271
  type cost_series_point = { "bucket" => String, "amount" => Numeric }
780
1272
 
@@ -814,6 +1306,37 @@ module Infrawrench
814
1306
  ?"parentResourceId" => resource_id
815
1307
  }
816
1308
 
1309
+ # Spec schema: `CreateJiraIssueInput`.
1310
+ type create_jira_issue_input = {
1311
+ "sourceKind" => jira_source_kind,
1312
+ "sourceId" => String,
1313
+ "projectKey" => String,
1314
+ "issueTypeId" => String,
1315
+ "summary" => String,
1316
+ ?"description" => String,
1317
+ ?"labels" => Array[String]
1318
+ }
1319
+
1320
+ # Spec schema: `CreateJiraIssueResult`.
1321
+ type create_jira_issue_result = { "issue" => { "id" => String, "key" => String, "url" => String }, "link" => jira_issue_link }
1322
+
1323
+ # Spec schema: `CreateLinearIssueInput`.
1324
+ type create_linear_issue_input = {
1325
+ "sourceKind" => linear_source_kind,
1326
+ "sourceId" => String,
1327
+ "teamId" => String,
1328
+ "title" => String,
1329
+ ?"description" => String,
1330
+ ?"labelIds" => Array[String],
1331
+ ?"projectId" => String
1332
+ }
1333
+
1334
+ # Spec schema: `CreateLinearIssueResult`.
1335
+ type create_linear_issue_result = {
1336
+ "issue" => { "id" => String, "identifier" => String, "url" => String },
1337
+ "link" => linear_issue_link
1338
+ }
1339
+
817
1340
  # Spec schema: `CreateOrgRequest`.
818
1341
  type create_org_request = { "displayName" => String }
819
1342
 
@@ -928,6 +1451,12 @@ module Infrawrench
928
1451
  "urgency" => "critical" | "warning" | "ok" | "unknown"
929
1452
  }
930
1453
 
1454
+ # Spec schema: `CurrencyConfig`.
1455
+ type currency_config = { "displayCurrency" => String | nil, "rates" => Array[exchange_rate] }
1456
+
1457
+ # Spec schema: `CurrencySettings`.
1458
+ type currency_settings = { "displayCurrency" => String | nil }
1459
+
931
1460
  # Spec schema: `CustomGraphCheckRequest`.
932
1461
  type custom_graph_check_request = { "source" => String }
933
1462
 
@@ -1046,8 +1575,12 @@ module Infrawrench
1046
1575
  "updatedAt" => String
1047
1576
  }
1048
1577
 
1578
+ # `cost_graph` stores its whole config inline — a one-off card. `cost_report`
1579
+ # points at a saved cost report by id, so editing the report updates every
1580
+ # dashboard showing it.
1581
+ #
1049
1582
  # Spec schema: `DashboardWidgetKind`.
1050
- type dashboard_widget_kind = "cost_graph" | "budget" | "custom_graph"
1583
+ type dashboard_widget_kind = "cost_graph" | "cost_report" | "budget" | "custom_graph"
1051
1584
 
1052
1585
  # Spec schema: `DashboardWithPins`.
1053
1586
  type dashboard_with_pins = {
@@ -1505,6 +2038,26 @@ module Infrawrench
1505
2038
  # Spec schema: `EscalationPolicy`.
1506
2039
  type escalation_policy = { "afterMinutes" => Integer, "destinations" => Array[alert_destination] } | nil
1507
2040
 
2041
+ # Spec schema: `ExchangeRate`.
2042
+ type exchange_rate = {
2043
+ "id" => String,
2044
+ "fromCurrency" => String,
2045
+ "toCurrency" => String,
2046
+ "rate" => String,
2047
+ "effectiveFrom" => String,
2048
+ "createdBy" => String | nil,
2049
+ "createdAt" => String,
2050
+ "updatedAt" => String
2051
+ }
2052
+
2053
+ # Spec schema: `ExchangeRateInput`.
2054
+ type exchange_rate_input = {
2055
+ "fromCurrency" => String,
2056
+ "toCurrency" => String,
2057
+ "rate" => String,
2058
+ "effectiveFrom" => String
2059
+ }
2060
+
1508
2061
  # Spec schema: `ExpiryAlertSettings`.
1509
2062
  type expiry_alert_settings = { "enabled" => bool, "leadDays" => Integer, "lastNotifiedAt" => String | nil }
1510
2063
 
@@ -1683,6 +2236,62 @@ module Infrawrench
1683
2236
  ?"parentResourceId" => resource_id
1684
2237
  }
1685
2238
 
2239
+ # Spec schema: `JiraIntegration`.
2240
+ type jira_integration = {
2241
+ "siteUrl" => String,
2242
+ "accountEmail" => String,
2243
+ "tokenHint" => String,
2244
+ "defaultProjectKey" => String | nil,
2245
+ "defaultIssueTypeId" => String | nil,
2246
+ "updatedAt" => String
2247
+ }
2248
+ | nil
2249
+
2250
+ # Spec schema: `JiraIntegrationInput`.
2251
+ type jira_integration_input = {
2252
+ "siteUrl" => String,
2253
+ "accountEmail" => String,
2254
+ ?"apiToken" => String,
2255
+ ?"defaultProjectKey" => String | nil,
2256
+ ?"defaultIssueTypeId" => String | nil
2257
+ }
2258
+
2259
+ # Spec schema: `JiraIssueLink`.
2260
+ type jira_issue_link = {
2261
+ "id" => String,
2262
+ "sourceKind" => jira_source_kind,
2263
+ "sourceId" => String,
2264
+ "issueKey" => String,
2265
+ "issueUrl" => String,
2266
+ "createdByUserId" => String | nil,
2267
+ "createdAt" => String
2268
+ }
2269
+
2270
+ # Spec schema: `JiraIssueType`.
2271
+ type jira_issue_type = { "id" => String, "name" => String, "subtask" => bool, "description" => String | nil }
2272
+
2273
+ # Spec schema: `JiraProject`.
2274
+ type jira_project = { "id" => String, "key" => String, "name" => String }
2275
+
2276
+ # Which detector produced the finding the issue was filed from.
2277
+ #
2278
+ # Spec schema: `JiraSourceKind`.
2279
+ type jira_source_kind = "cost_anomaly" | "orphan" | "oversized" | "posture_finding" | "expiring" | "probe"
2280
+
2281
+ # Supply all three to test credentials that have not been saved yet; send an
2282
+ # empty object to re-test the stored ones.
2283
+ #
2284
+ # Spec schema: `JiraVerifyInput`.
2285
+ type jira_verify_input = { ?"siteUrl" => String, ?"accountEmail" => String, ?"apiToken" => String }
2286
+
2287
+ # Spec schema: `JiraVerifyResult`.
2288
+ type jira_verify_result = {
2289
+ "ok" => bool,
2290
+ "accountId" => String,
2291
+ "displayName" => String,
2292
+ "emailAddress" => String | nil
2293
+ }
2294
+
1686
2295
  # Free-form JSON object whose shape depends on the plugin.
1687
2296
  #
1688
2297
  # Spec schema: `JsonObject`.
@@ -1703,6 +2312,42 @@ module Infrawrench
1703
2312
  # Spec schema: `LeaseConflict`.
1704
2313
  type lease_conflict = { "error" => String }
1705
2314
 
2315
+ # Spec schema: `LinearIntegration`.
2316
+ type linear_integration = { "keyHint" => String, "defaultTeamId" => String | nil, "updatedAt" => String } | nil
2317
+
2318
+ # Spec schema: `LinearIntegrationInput`.
2319
+ type linear_integration_input = { ?"apiKey" => String, ?"defaultTeamId" => String | nil }
2320
+
2321
+ # Spec schema: `LinearIssueLink`.
2322
+ type linear_issue_link = {
2323
+ "id" => String,
2324
+ "sourceKind" => linear_source_kind,
2325
+ "sourceId" => String,
2326
+ "issueIdentifier" => String,
2327
+ "issueUrl" => String,
2328
+ "createdByUserId" => String | nil,
2329
+ "createdAt" => String
2330
+ }
2331
+
2332
+ # Which detector produced the finding the issue was filed from.
2333
+ #
2334
+ # Spec schema: `LinearSourceKind`.
2335
+ type linear_source_kind = "cost_anomaly" | "orphan" | "oversized" | "posture_finding" | "expiring" | "probe"
2336
+
2337
+ # Spec schema: `LinearTeam`.
2338
+ type linear_team = { "id" => String, "key" => String, "name" => String }
2339
+
2340
+ # Supply a key to test one that has not been saved yet; send an empty object
2341
+ # to re-test the stored one.
2342
+ #
2343
+ # Spec schema: `LinearVerifyInput`.
2344
+ type linear_verify_input = { ?"apiKey" => String }
2345
+
2346
+ # The Linear user behind the API key, from the `viewer` query.
2347
+ #
2348
+ # Spec schema: `LinearVerifyResult`.
2349
+ type linear_verify_result = { "ok" => bool, "id" => String, "name" => String, "email" => String | nil }
2350
+
1706
2351
  # Spec schema: `LiteralAssociationRequest`.
1707
2352
  type literal_association_request = { "resourceId" => resource_id, "fieldKey" => String, "plaintextValue" => String }
1708
2353
 
@@ -2468,6 +3113,10 @@ module Infrawrench
2468
3113
  | "bastions:write"
2469
3114
  | "chat:read"
2470
3115
  | "chat:write"
3116
+ | "jira:read"
3117
+ | "jira:write"
3118
+ | "linear:read"
3119
+ | "linear:write"
2471
3120
  | "pages:write"
2472
3121
  | "org:settings:write"
2473
3122
 
@@ -2578,6 +3227,7 @@ module Infrawrench
2578
3227
  | "ssh"
2579
3228
  | "together"
2580
3229
  | "turso"
3230
+ | "uploadthing"
2581
3231
  | "vercel"
2582
3232
  | "workos"
2583
3233
  | "xai"
@@ -2843,6 +3493,64 @@ module Infrawrench
2843
3493
  ?"resourceIds" => Array[resource_id]
2844
3494
  }
2845
3495
 
3496
+ # Spec schema: `ReportDeliveryTargetOption`.
3497
+ type report_delivery_target_option = { "id" => String, "label" => String }
3498
+
3499
+ # Spec schema: `ReportDeliveryTargets`.
3500
+ type report_delivery_targets = {
3501
+ "slackChannels" => Array[report_delivery_target_option],
3502
+ "teamsWebhooks" => Array[report_delivery_target_option],
3503
+ "emailAvailable" => bool
3504
+ }
3505
+
3506
+ # Spec schema: `ReportNotification`.
3507
+ type report_notification = {
3508
+ "id" => String,
3509
+ "costReportId" => String,
3510
+ "cadence" => "daily" | "weekly" | "monthly",
3511
+ "sendDay" => Integer,
3512
+ "sendDayOfMonth" => Integer,
3513
+ "hour" => Integer,
3514
+ "timezone" => String,
3515
+ "slackChannelIds" => Array[String],
3516
+ "teamsWebhookIds" => Array[String],
3517
+ "emailRecipients" => Array[String],
3518
+ "enabled" => bool,
3519
+ "nextSendAt" => String | nil,
3520
+ "lastSentAt" => String | nil,
3521
+ "lastStatus" => "pending" | "succeeded" | "partial" | "failed" | "no_targets" | nil,
3522
+ "lastError" => String | nil,
3523
+ "createdByUserId" => String | nil,
3524
+ "createdAt" => String,
3525
+ "updatedAt" => String
3526
+ }
3527
+
3528
+ # A full replace, like a report's own PUT. At least one destination is
3529
+ # required — a schedule with nowhere to deliver would only ever record
3530
+ # failures.
3531
+ #
3532
+ # Spec schema: `ReportNotificationInput`.
3533
+ type report_notification_input = {
3534
+ "cadence" => "daily" | "weekly" | "monthly",
3535
+ ?"sendDay" => Integer,
3536
+ ?"sendDayOfMonth" => Integer,
3537
+ "hour" => Integer,
3538
+ "timezone" => String,
3539
+ "slackChannelIds" => Array[String],
3540
+ "teamsWebhookIds" => Array[String],
3541
+ "emailRecipients" => Array[String],
3542
+ "enabled" => bool
3543
+ }
3544
+
3545
+ # Spec schema: `ReportNotificationSendResult`.
3546
+ type report_notification_send_result = {
3547
+ "attempted" => Integer,
3548
+ "succeeded" => Integer,
3549
+ "slack" => { "attempted" => Integer, "succeeded" => Integer },
3550
+ "teams" => { "attempted" => Integer, "succeeded" => Integer },
3551
+ "email" => { "attempted" => Integer, "succeeded" => Integer }
3552
+ }
3553
+
2846
3554
  # Spec schema: `RequiredTag`.
2847
3555
  type required_tag = { "key" => String, ?"allowedValues" => Array[String] }
2848
3556
 
@@ -3388,6 +4096,8 @@ module Infrawrench
3388
4096
  | "turso-organization-member"
3389
4097
  | "upload-preset"
3390
4098
  | "user"
4099
+ | "ut-app"
4100
+ | "ut-file"
3391
4101
  | "vector-store"
3392
4102
  | "vectorize-index"
3393
4103
  | "vercel-deployment"
@@ -3427,6 +4137,8 @@ module Infrawrench
3427
4137
  }],
3428
4138
  ?"isSshHost" => bool,
3429
4139
  ?"sshTunnelAttachSource" => bool,
4140
+ ?"showInSidebar" => bool,
4141
+ ?"accountRoot" => bool,
3430
4142
  ?"schedulable" => bool
3431
4143
  }
3432
4144
 
@@ -3460,6 +4172,50 @@ module Infrawrench
3460
4172
  # Spec schema: `RoleUpdateRequest`.
3461
4173
  type role_update_request = { ?"name" => String, ?"description" => String | nil, ?"permissions" => Array[permission] }
3462
4174
 
4175
+ # Spec schema: `SavedCostFilter`.
4176
+ type saved_cost_filter = {
4177
+ "id" => String,
4178
+ "name" => String,
4179
+ "description" => String | nil,
4180
+ "filters" => Array[saved_cost_filter_term],
4181
+ "query" => String,
4182
+ "createdByUserId" => String | nil,
4183
+ "createdAt" => String,
4184
+ "updatedAt" => String
4185
+ }
4186
+
4187
+ # Spec schema: `SavedCostFilterInput`.
4188
+ type saved_cost_filter_input = {
4189
+ "name" => String,
4190
+ ?"description" => String,
4191
+ ?"filters" => Array[saved_cost_filter_term],
4192
+ ?"query" => String
4193
+ }
4194
+
4195
+ # Spec schema: `SavedCostFilterReferent`.
4196
+ type saved_cost_filter_referent = {
4197
+ "kind" => "budget" | "cost_report" | "cost_graph_widget",
4198
+ "id" => String,
4199
+ "name" => String,
4200
+ ?"dashboardId" => String,
4201
+ ?"dashboardName" => String
4202
+ }
4203
+
4204
+ # Spec schema: `SavedCostFilterTerm`.
4205
+ type saved_cost_filter_term = {
4206
+ "dimension" => "provider"
4207
+ | "account"
4208
+ | "service"
4209
+ | "region"
4210
+ | "resource"
4211
+ | "tag"
4212
+ | "charge_type"
4213
+ | "commitment",
4214
+ "op" => "in" | "not_in",
4215
+ "values" => Array[String],
4216
+ ?"tagKey" => String
4217
+ }
4218
+
3463
4219
  # Spec schema: `ScheduleConflict`.
3464
4220
  type schedule_conflict = { "error" => String }
3465
4221
 
@@ -4048,6 +4804,7 @@ module Infrawrench
4048
4804
  | "agents"
4049
4805
  | "costs"
4050
4806
  | "savings"
4807
+ | "cost-reports"
4051
4808
  | "graph"
4052
4809
  | "logs"
4053
4810
  | "changes"
@@ -4065,7 +4822,8 @@ module Infrawrench
4065
4822
  ?"dashboardId" => String,
4066
4823
  ?"accountId" => String,
4067
4824
  ?"resourceId" => resource_id,
4068
- ?"conversationId" => String
4825
+ ?"conversationId" => String,
4826
+ ?"reportId" => String
4069
4827
  }
4070
4828
 
4071
4829
  # Spec schema: `TagComplianceReport`.
@@ -4395,6 +5153,11 @@ module Infrawrench
4395
5153
  def resource: (resource_id: String, ?org_id: String?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> resource_change_list_response
4396
5154
  end
4397
5155
 
5156
+ class CommitmentsNamespace
5157
+ def initialize: (Transport) -> void
5158
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> commitments_feed
5159
+ end
5160
+
4398
5161
  class ConfigNamespace
4399
5162
  def initialize: (Transport) -> void
4400
5163
  def apply: (body: org_config_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> org_config_apply_result
@@ -4409,6 +5172,21 @@ module Infrawrench
4409
5172
  def templates: (body: connect_templates_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> connect_templates_response
4410
5173
  end
4411
5174
 
5175
+ class CostAlertsGetNamespace
5176
+ def initialize: (Transport) -> void
5177
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "alerts" => Array[cost_alert] }
5178
+ def get_org_org_id_cost_alerts_id: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_alert
5179
+ end
5180
+
5181
+ class CostAlertsNamespace
5182
+ attr_reader get: CostAlertsGetNamespace
5183
+ def initialize: (Transport) -> void
5184
+ def create: (body: cost_alert_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_alert
5185
+ def delete: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
5186
+ def events: (?org_id: String?, ?alert_id: String?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> { "events" => Array[cost_alert_event] }
5187
+ def update: (id: String, body: cost_alert_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_alert
5188
+ end
5189
+
4412
5190
  class CostCentresRulesNamespace
4413
5191
  def initialize: (Transport) -> void
4414
5192
  def create: (body: allocation_rule_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> allocation_rule
@@ -4427,6 +5205,50 @@ module Infrawrench
4427
5205
  def update: (id: String, body: cost_centre_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_centre
4428
5206
  end
4429
5207
 
5208
+ class CostExportsNamespace
5209
+ def initialize: (Transport) -> void
5210
+ def create: (body: cost_export_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_export
5211
+ def delete: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
5212
+ def get: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_export
5213
+ def list: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[cost_export]
5214
+ def run: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_export_run_result
5215
+ def update: (id: String, body: cost_export_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_export
5216
+ end
5217
+
5218
+ class CostReportFoldersNamespace
5219
+ def initialize: (Transport) -> void
5220
+ def create: (body: cost_report_folder_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_report_folder
5221
+ def delete: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
5222
+ def list: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[cost_report_folder]
5223
+ def update: (id: String, body: cost_report_folder_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_report_folder
5224
+ end
5225
+
5226
+ class CostReportNotificationsNamespace
5227
+ def initialize: (Transport) -> void
5228
+ def list: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[report_notification]
5229
+ end
5230
+
5231
+ class CostReportsNotificationsNamespace
5232
+ def initialize: (Transport) -> void
5233
+ def create: (id: String, body: report_notification_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> report_notification
5234
+ def delete: (id: String, notification_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
5235
+ def list: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[report_notification]
5236
+ def post_org_org_id_cost_reports_id_notifications_notification_id_send: (id: String, notification_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> report_notification_send_result
5237
+ def targets: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> report_delivery_targets
5238
+ def update: (id: String, notification_id: String, body: report_notification_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> report_notification
5239
+ end
5240
+
5241
+ class CostReportsNamespace
5242
+ attr_reader notifications: CostReportsNotificationsNamespace
5243
+ def initialize: (Transport) -> void
5244
+ def create: (body: cost_report_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_report
5245
+ def delete: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
5246
+ def get: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_report
5247
+ def list: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[cost_report]
5248
+ def run: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_report_run_result
5249
+ def update: (id: String, body: cost_report_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_report
5250
+ end
5251
+
4430
5252
  class CostsAnomalySettingsNamespace
4431
5253
  def initialize: (Transport) -> void
4432
5254
  def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_anomaly_settings_view
@@ -4437,12 +5259,12 @@ module Infrawrench
4437
5259
  attr_reader anomaly_settings: CostsAnomalySettingsNamespace
4438
5260
  def initialize: (Transport) -> void
4439
5261
  def anomalies: (?org_id: String?, ?days: String?, ?request_options: Hash[Symbol, untyped]?) -> { "anomalies" => Array[cost_anomaly] }
4440
- def dimensions: (dimension: "provider" | "account" | "service" | "region" | "resource" | "tag" | "tag-keys", ?org_id: String?, ?tag_key: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_dimension_values
5262
+ def dimensions: (dimension: "provider" | "account" | "service" | "region" | "resource" | "tag" | "charge_type" | "commitment" | "tag-keys", ?org_id: String?, ?tag_key: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_dimension_values
4441
5263
  def query: (body: cost_query_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_query_response
4442
5264
  def rows: (body: cost_push_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> cost_push_response
4443
- def showback: (?org_id: String?, ?from: String?, ?to: String?, ?request_options: Hash[Symbol, untyped]?) -> showback_report
5265
+ def showback: (?org_id: String?, ?from: String?, ?to: String?, ?basis: "cash" | "amortized"?, ?request_options: Hash[Symbol, untyped]?) -> showback_report
4444
5266
  def status: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "accounts" => Array[cost_account_status] }
4445
- def untagged: (?org_id: String?, ?from: String?, ?to: String?, ?request_options: Hash[Symbol, untyped]?) -> untagged_spend_report
5267
+ def untagged: (?org_id: String?, ?from: String?, ?to: String?, ?basis: "cash" | "amortized"?, ?request_options: Hash[Symbol, untyped]?) -> untagged_spend_report
4446
5268
  end
4447
5269
 
4448
5270
  class CredentialHygieneNamespace
@@ -4455,6 +5277,19 @@ module Infrawrench
4455
5277
  def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> credit_burndown
4456
5278
  end
4457
5279
 
5280
+ class CurrencyRatesNamespace
5281
+ def initialize: (Transport) -> void
5282
+ def delete: (rate_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "ok" => bool }
5283
+ def update: (body: exchange_rate_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> exchange_rate
5284
+ end
5285
+
5286
+ class CurrencyNamespace
5287
+ attr_reader rates: CurrencyRatesNamespace
5288
+ def initialize: (Transport) -> void
5289
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> currency_config
5290
+ def update: (body: currency_settings, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> currency_settings
5291
+ end
5292
+
4458
5293
  class CustomGraphsNamespace
4459
5294
  def initialize: (Transport) -> void
4460
5295
  def check: (body: custom_graph_check_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> custom_graph_check_result
@@ -4587,6 +5422,23 @@ module Infrawrench
4587
5422
  def accept: (body: accept_invitation_request, ?request_options: Hash[Symbol, untyped]?) -> accept_invitation_response
4588
5423
  end
4589
5424
 
5425
+ class JiraProjectsNamespace
5426
+ def initialize: (Transport) -> void
5427
+ def issue_types: (key: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[jira_issue_type]
5428
+ def list: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[jira_project]
5429
+ end
5430
+
5431
+ class JiraNamespace
5432
+ attr_reader projects: JiraProjectsNamespace
5433
+ def initialize: (Transport) -> void
5434
+ def delete: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
5435
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "integration" => jira_integration }
5436
+ def issues: (body: create_jira_issue_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> create_jira_issue_result
5437
+ def links: (?org_id: String?, ?source_kind: jira_source_kind?, ?source_id: Array[String]?, ?request_options: Hash[Symbol, untyped]?) -> Array[jira_issue_link]
5438
+ def update: (body: jira_integration_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> (jira_integration & Hash[String, untyped])
5439
+ def verify: (?org_id: String?, ?body: jira_verify_input?, ?request_options: Hash[Symbol, untyped]?) -> jira_verify_result
5440
+ end
5441
+
4590
5442
  class KvNamespace
4591
5443
  def initialize: (Transport) -> void
4592
5444
  def command: (body: kv_command_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> kv_command_response
@@ -4602,6 +5454,17 @@ module Infrawrench
4602
5454
  def update: (lease_id: String, ?org_id: String?, ?body: resource_lease_update?, ?request_options: Hash[Symbol, untyped]?) -> resource_lease
4603
5455
  end
4604
5456
 
5457
+ class LinearNamespace
5458
+ def initialize: (Transport) -> void
5459
+ def delete: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
5460
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "integration" => linear_integration }
5461
+ def issues: (body: create_linear_issue_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> create_linear_issue_result
5462
+ def links: (?org_id: String?, ?source_kind: linear_source_kind?, ?source_id: Array[String]?, ?request_options: Hash[Symbol, untyped]?) -> Array[linear_issue_link]
5463
+ def teams: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[linear_team]
5464
+ def update: (body: linear_integration_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> (linear_integration & Hash[String, untyped])
5465
+ def verify: (?org_id: String?, ?body: linear_verify_input?, ?request_options: Hash[Symbol, untyped]?) -> linear_verify_result
5466
+ end
5467
+
4605
5468
  class LogWorkspacesNamespace
4606
5469
  def initialize: (Transport) -> void
4607
5470
  def create: (body: log_workspace_query_create, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> log_workspace_query
@@ -4776,6 +5639,16 @@ module Infrawrench
4776
5639
  def get: (?org_id: String?, ?refresh: "true" | "false"?, ?request_options: Hash[Symbol, untyped]?) -> rightsizing_list_response
4777
5640
  end
4778
5641
 
5642
+ class SavedCostFiltersNamespace
5643
+ def initialize: (Transport) -> void
5644
+ def create: (body: saved_cost_filter_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> saved_cost_filter
5645
+ def delete: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
5646
+ def get: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> saved_cost_filter
5647
+ def list: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[saved_cost_filter]
5648
+ def referents: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "referents" => Array[saved_cost_filter_referent] }
5649
+ def update: (id: String, body: saved_cost_filter_input, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> saved_cost_filter
5650
+ end
5651
+
4779
5652
  class SchedulesNamespace
4780
5653
  def initialize: (Transport) -> void
4781
5654
  def create: (?org_id: String?, ?body: sleep_schedule_create?, ?request_options: Hash[Symbol, untyped]?) -> sleep_schedule
@@ -4976,12 +5849,19 @@ module Infrawrench
4976
5849
  attr_reader budgets: BudgetsNamespace
4977
5850
  attr_reader change_freezes: ChangeFreezesNamespace
4978
5851
  attr_reader changes: ChangesNamespace
5852
+ attr_reader commitments: CommitmentsNamespace
4979
5853
  attr_reader config: ConfigNamespace
4980
5854
  attr_reader connect: ConnectNamespace
5855
+ attr_reader cost_alerts: CostAlertsNamespace
4981
5856
  attr_reader cost_centres: CostCentresNamespace
5857
+ attr_reader cost_exports: CostExportsNamespace
5858
+ attr_reader cost_report_folders: CostReportFoldersNamespace
5859
+ attr_reader cost_report_notifications: CostReportNotificationsNamespace
5860
+ attr_reader cost_reports: CostReportsNamespace
4982
5861
  attr_reader costs: CostsNamespace
4983
5862
  attr_reader credential_hygiene: CredentialHygieneNamespace
4984
5863
  attr_reader credits: CreditsNamespace
5864
+ attr_reader currency: CurrencyNamespace
4985
5865
  attr_reader custom_graphs: CustomGraphsNamespace
4986
5866
  attr_reader dashboards: DashboardsNamespace
4987
5867
  attr_reader dependency_graph: DependencyGraphNamespace
@@ -4992,8 +5872,10 @@ module Infrawrench
4992
5872
  attr_reader environment_diff: EnvironmentDiffNamespace
4993
5873
  attr_reader expiring: ExpiringNamespace
4994
5874
  attr_reader invitations: InvitationsNamespace
5875
+ attr_reader jira: JiraNamespace
4995
5876
  attr_reader kv: KvNamespace
4996
5877
  attr_reader leases: LeasesNamespace
5878
+ attr_reader linear: LinearNamespace
4997
5879
  attr_reader log_workspaces: LogWorkspacesNamespace
4998
5880
  attr_reader metric_alerts: MetricAlertsNamespace
4999
5881
  attr_reader moment: MomentNamespace
@@ -5007,6 +5889,7 @@ module Infrawrench
5007
5889
  attr_reader profile: ProfileNamespace
5008
5890
  attr_reader resources: ResourcesNamespace
5009
5891
  attr_reader rightsizing: RightsizingNamespace
5892
+ attr_reader saved_cost_filters: SavedCostFiltersNamespace
5010
5893
  attr_reader schedules: SchedulesNamespace
5011
5894
  attr_reader search: SearchNamespace
5012
5895
  attr_reader session_recordings: SessionRecordingsNamespace