@spottoai/types-package 1.0.2-beta.2 → 1.0.2-beta.200

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.
Files changed (200) hide show
  1. package/LICENSE +18 -40
  2. package/README.md +4 -11
  3. package/dist/accounts/accounts.d.ts +45 -3
  4. package/dist/accounts/accounts.d.ts.map +1 -1
  5. package/dist/accounts/index.d.ts +3 -0
  6. package/dist/accounts/index.d.ts.map +1 -1
  7. package/dist/accounts/index.js +3 -0
  8. package/dist/accounts/index.js.map +1 -1
  9. package/dist/accounts/readPermissions.d.ts +45 -0
  10. package/dist/accounts/readPermissions.d.ts.map +1 -0
  11. package/dist/accounts/readPermissions.js +70 -0
  12. package/dist/accounts/readPermissions.js.map +1 -0
  13. package/dist/accounts/validation.d.ts +24 -0
  14. package/dist/accounts/validation.d.ts.map +1 -0
  15. package/dist/accounts/validation.js +3 -0
  16. package/dist/accounts/validation.js.map +1 -0
  17. package/dist/accounts/writePermissions.d.ts +34 -0
  18. package/dist/accounts/writePermissions.d.ts.map +1 -0
  19. package/dist/accounts/writePermissions.js +37 -0
  20. package/dist/accounts/writePermissions.js.map +1 -0
  21. package/dist/ai/index.d.ts +975 -9
  22. package/dist/ai/index.d.ts.map +1 -1
  23. package/dist/ai/index.js +1 -1
  24. package/dist/ai/index.js.map +1 -1
  25. package/dist/azure/benefits.d.ts +137 -0
  26. package/dist/azure/benefits.d.ts.map +1 -0
  27. package/dist/azure/benefits.js +3 -0
  28. package/dist/azure/benefits.js.map +1 -0
  29. package/dist/azure/billingPlots.d.ts +249 -0
  30. package/dist/azure/billingPlots.d.ts.map +1 -0
  31. package/dist/azure/billingPlots.js +6 -0
  32. package/dist/azure/billingPlots.js.map +1 -0
  33. package/dist/azure/budgets.d.ts +4 -0
  34. package/dist/azure/budgets.d.ts.map +1 -1
  35. package/dist/azure/commitmentsPlanning.d.ts +159 -0
  36. package/dist/azure/commitmentsPlanning.d.ts.map +1 -0
  37. package/dist/azure/commitmentsPlanning.js +3 -0
  38. package/dist/azure/commitmentsPlanning.js.map +1 -0
  39. package/dist/azure/common.d.ts +34 -0
  40. package/dist/azure/common.d.ts.map +1 -1
  41. package/dist/azure/configs.d.ts +75 -2
  42. package/dist/azure/configs.d.ts.map +1 -1
  43. package/dist/azure/costEstimation.d.ts +78 -0
  44. package/dist/azure/costEstimation.d.ts.map +1 -0
  45. package/dist/azure/costEstimation.js +3 -0
  46. package/dist/azure/costEstimation.js.map +1 -0
  47. package/dist/azure/governance.d.ts +370 -0
  48. package/dist/azure/governance.d.ts.map +1 -0
  49. package/dist/azure/governance.js +8 -0
  50. package/dist/azure/governance.js.map +1 -0
  51. package/dist/azure/metrics.d.ts +75 -4
  52. package/dist/azure/metrics.d.ts.map +1 -1
  53. package/dist/azure/payloads.d.ts +20 -1
  54. package/dist/azure/payloads.d.ts.map +1 -1
  55. package/dist/azure/prices.d.ts +192 -0
  56. package/dist/azure/prices.d.ts.map +1 -1
  57. package/dist/azure/recommendationAudit.d.ts +113 -0
  58. package/dist/azure/recommendationAudit.d.ts.map +1 -0
  59. package/dist/azure/recommendationAudit.js +10 -0
  60. package/dist/azure/recommendationAudit.js.map +1 -0
  61. package/dist/azure/recommendationState.d.ts +91 -2
  62. package/dist/azure/recommendationState.d.ts.map +1 -1
  63. package/dist/azure/recommendations.d.ts +371 -8
  64. package/dist/azure/recommendations.d.ts.map +1 -1
  65. package/dist/azure/recommendations.js.map +1 -1
  66. package/dist/azure/relationships.d.ts +77 -0
  67. package/dist/azure/relationships.d.ts.map +1 -0
  68. package/dist/azure/relationships.js +3 -0
  69. package/dist/azure/relationships.js.map +1 -0
  70. package/dist/azure/reports.d.ts +248 -0
  71. package/dist/azure/reports.d.ts.map +1 -1
  72. package/dist/azure/reports.js +13 -0
  73. package/dist/azure/reports.js.map +1 -1
  74. package/dist/azure/resources.d.ts +39 -0
  75. package/dist/azure/resources.d.ts.map +1 -1
  76. package/dist/azure/reviewChecklist.d.ts +139 -0
  77. package/dist/azure/reviewChecklist.d.ts.map +1 -0
  78. package/dist/azure/reviewChecklist.js +3 -0
  79. package/dist/azure/reviewChecklist.js.map +1 -0
  80. package/dist/azure/security.d.ts +28 -0
  81. package/dist/azure/security.d.ts.map +1 -0
  82. package/dist/azure/security.js +3 -0
  83. package/dist/azure/security.js.map +1 -0
  84. package/dist/azure/serviceRetirement.d.ts +28 -0
  85. package/dist/azure/serviceRetirement.d.ts.map +1 -0
  86. package/dist/azure/serviceRetirement.js +3 -0
  87. package/dist/azure/serviceRetirement.js.map +1 -0
  88. package/dist/azure/serviceRetirementState.d.ts +22 -0
  89. package/dist/azure/serviceRetirementState.d.ts.map +1 -0
  90. package/dist/azure/serviceRetirementState.js +3 -0
  91. package/dist/azure/serviceRetirementState.js.map +1 -0
  92. package/dist/azure/storage-inventory.d.ts +241 -0
  93. package/dist/azure/storage-inventory.d.ts.map +1 -0
  94. package/dist/azure/storage-inventory.js +3 -0
  95. package/dist/azure/storage-inventory.js.map +1 -0
  96. package/dist/azure/subscriptions.d.ts +34 -13
  97. package/dist/azure/subscriptions.d.ts.map +1 -1
  98. package/dist/azure/views.d.ts +150 -3
  99. package/dist/azure/views.d.ts.map +1 -1
  100. package/dist/common/index.d.ts +1 -0
  101. package/dist/common/index.d.ts.map +1 -1
  102. package/dist/common/index.js +1 -0
  103. package/dist/common/index.js.map +1 -1
  104. package/dist/common/pagination.d.ts +3 -0
  105. package/dist/common/pagination.d.ts.map +1 -1
  106. package/dist/common/provider.d.ts +9 -0
  107. package/dist/common/provider.d.ts.map +1 -0
  108. package/dist/common/provider.js +9 -0
  109. package/dist/common/provider.js.map +1 -0
  110. package/dist/company/billingAccount.d.ts +30 -0
  111. package/dist/company/billingAccount.d.ts.map +1 -0
  112. package/dist/company/billingAccount.js +3 -0
  113. package/dist/company/billingAccount.js.map +1 -0
  114. package/dist/company/company.d.ts +28 -1
  115. package/dist/company/company.d.ts.map +1 -1
  116. package/dist/company/index.d.ts +1 -0
  117. package/dist/company/index.d.ts.map +1 -1
  118. package/dist/company/index.js +1 -0
  119. package/dist/company/index.js.map +1 -1
  120. package/dist/company/notification.d.ts +31 -1
  121. package/dist/company/notification.d.ts.map +1 -1
  122. package/dist/company/notification.js +24 -12
  123. package/dist/company/notification.js.map +1 -1
  124. package/dist/company/survey.d.ts +3 -0
  125. package/dist/company/survey.d.ts.map +1 -1
  126. package/dist/events/alertDefinitionRun.d.ts +23 -0
  127. package/dist/events/alertDefinitionRun.d.ts.map +1 -0
  128. package/dist/events/alertDefinitionRun.js +3 -0
  129. package/dist/events/alertDefinitionRun.js.map +1 -0
  130. package/dist/events/baseAlert.d.ts +130 -0
  131. package/dist/events/baseAlert.d.ts.map +1 -0
  132. package/dist/events/baseAlert.js +3 -0
  133. package/dist/events/baseAlert.js.map +1 -0
  134. package/dist/events/cost.d.ts +361 -0
  135. package/dist/events/cost.d.ts.map +1 -0
  136. package/dist/events/cost.js +3 -0
  137. package/dist/events/cost.js.map +1 -0
  138. package/dist/events/costAnomalies.d.ts +47 -0
  139. package/dist/events/costAnomalies.d.ts.map +1 -0
  140. package/dist/events/costAnomalies.js +3 -0
  141. package/dist/events/costAnomalies.js.map +1 -0
  142. package/dist/events/costViews.d.ts +23 -0
  143. package/dist/events/costViews.d.ts.map +1 -0
  144. package/dist/events/costViews.js +3 -0
  145. package/dist/events/costViews.js.map +1 -0
  146. package/dist/events/eventStatus.d.ts +67 -0
  147. package/dist/events/eventStatus.d.ts.map +1 -0
  148. package/dist/events/eventStatus.js +3 -0
  149. package/dist/events/eventStatus.js.map +1 -0
  150. package/dist/events/index.d.ts +7 -0
  151. package/dist/events/index.d.ts.map +1 -0
  152. package/dist/events/index.js +23 -0
  153. package/dist/events/index.js.map +1 -0
  154. package/dist/feedbacks/feedback.d.ts +9 -0
  155. package/dist/feedbacks/feedback.d.ts.map +1 -1
  156. package/dist/identity/apikey.d.ts +67 -0
  157. package/dist/identity/apikey.d.ts.map +1 -0
  158. package/dist/identity/apikey.js +3 -0
  159. package/dist/identity/apikey.js.map +1 -0
  160. package/dist/identity/index.d.ts +2 -0
  161. package/dist/identity/index.d.ts.map +1 -0
  162. package/dist/identity/index.js +18 -0
  163. package/dist/identity/index.js.map +1 -0
  164. package/dist/index.d.ts +18 -0
  165. package/dist/index.d.ts.map +1 -1
  166. package/dist/index.js +18 -1
  167. package/dist/index.js.map +1 -1
  168. package/dist/integrations/halo.d.ts +76 -0
  169. package/dist/integrations/halo.d.ts.map +1 -0
  170. package/dist/integrations/halo.js +3 -0
  171. package/dist/integrations/halo.js.map +1 -0
  172. package/dist/integrations/index.d.ts +3 -0
  173. package/dist/integrations/index.d.ts.map +1 -0
  174. package/dist/integrations/index.js +19 -0
  175. package/dist/integrations/index.js.map +1 -0
  176. package/dist/integrations/integrationTickets.d.ts +67 -0
  177. package/dist/integrations/integrationTickets.d.ts.map +1 -0
  178. package/dist/integrations/integrationTickets.js +3 -0
  179. package/dist/integrations/integrationTickets.js.map +1 -0
  180. package/dist/scheduler/index.d.ts +2 -0
  181. package/dist/scheduler/index.d.ts.map +1 -0
  182. package/dist/scheduler/index.js +18 -0
  183. package/dist/scheduler/index.js.map +1 -0
  184. package/dist/scheduler/scheduler.d.ts +110 -0
  185. package/dist/scheduler/scheduler.d.ts.map +1 -0
  186. package/dist/scheduler/scheduler.js +3 -0
  187. package/dist/scheduler/scheduler.js.map +1 -0
  188. package/dist/tags/index.d.ts +2 -0
  189. package/dist/tags/index.d.ts.map +1 -0
  190. package/dist/tags/index.js +18 -0
  191. package/dist/tags/index.js.map +1 -0
  192. package/dist/tags/tags.d.ts +26 -0
  193. package/dist/tags/tags.d.ts.map +1 -0
  194. package/dist/tags/tags.js +10 -0
  195. package/dist/tags/tags.js.map +1 -0
  196. package/dist/unknown/services.d.ts +12 -0
  197. package/dist/unknown/services.d.ts.map +1 -0
  198. package/dist/unknown/services.js +3 -0
  199. package/dist/unknown/services.js.map +1 -0
  200. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../../src/azure/payloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAExE,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../../src/azure/payloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAE5E,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,oCAAqC,SAAQ,cAAc;IAC1E,MAAM,EAAE,cAAc,GAAG,eAAe,CAAC;IACzC,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,4BAA4B,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB"}
@@ -1,12 +1,26 @@
1
1
  import { ActiveDates, SpecItem } from './common.js';
2
2
  import { DailyMetrics, DisplayMetric } from './metrics.js';
3
+ import type { SpendDataSource } from './subscriptions.js';
4
+ export type ResourceCostSource = SpendDataSource;
5
+ export type CostSourceConfidence = 'high' | 'unknown';
6
+ export interface CostDateRangeMetadata {
7
+ startDate: number;
8
+ endDate: number;
9
+ }
3
10
  export interface CostDetails {
11
+ /** the amount spend on the resource over the last 30 days */
4
12
  dailySpend?: ResourceSpend[];
13
+ /** the spend items aggregated for the last 30 days */
5
14
  spendSummary?: ResourceSpend[];
15
+ /** the spend items aggregated for the previous 30 days */
6
16
  spendSummaryPrevious?: ResourceSpend[];
17
+ /** the total amount spend on the resource over the last 30 days */
7
18
  totalSpend30Days?: number;
19
+ /** the total amount spend on the resource over the previous 30 days */
8
20
  totalSpend30DaysPrevious?: number;
21
+ /** the total amount spend on the resource over the last 30 days, taking into account reserved instances and savings plans */
9
22
  totalSpend30DaysAmortized?: number;
23
+ /** the total amount spend on the resource over the previous 30 days, taking into account reserved instances and savings plans */
10
24
  totalSpend30DaysAmortizedPrevious?: number;
11
25
  retailPrices?: AzurePrice[];
12
26
  }
@@ -18,6 +32,7 @@ export interface AzurePrice {
18
32
  unitPrice: number;
19
33
  armRegionName: string;
20
34
  location: string;
35
+ /** ISO 8601 date string */
21
36
  effectiveStartDate: string;
22
37
  meterId: string;
23
38
  meterName: string;
@@ -30,94 +45,266 @@ export interface AzurePrice {
30
45
  serviceId: string;
31
46
  serviceFamily: string;
32
47
  unitOfMeasure: string;
48
+ /** Consumption, Reservation */
33
49
  type: string;
34
50
  isPrimaryMeterRegion: boolean;
35
51
  armSkuName: string;
36
52
  savingsPlan: SavingsPlan[];
37
53
  monthlyPrice?: number;
54
+ /** Use this property to set alternative Azure pricing SKU */
38
55
  targetAzurePrices?: AzurePrice[];
56
+ /** Reserved instances for this price level */
39
57
  reservedInstances?: SavingsCostSummary[];
58
+ savingsPlanSummary?: SavingsCostSummary[];
59
+ /** Amount of money saved compared to the parent */
40
60
  targetMonthlySavings?: number;
61
+ /** Percentage of money saved compared to the parent */
41
62
  targetSavingsPercent?: number;
63
+ /** Show the display percent such as -10% */
42
64
  targetSavingsPercentDisplay?: string;
43
65
  targetSavings?: number;
44
66
  targetSavingsDisplay?: string;
45
67
  targetLabel?: string;
68
+ targetLabel2?: string;
46
69
  subLabel?: string;
47
70
  quantity?: number;
48
71
  displayLabel?: string;
49
72
  displayUnitPrice?: string;
50
73
  displayTotalPrice?: number;
51
74
  displayQuantity?: number;
75
+ /** Reference to the recommendation that this target cost is associated with */
76
+ recommendationId?: string;
52
77
  }
53
78
  export interface SavingsPlan {
54
79
  unitPrice: number;
55
80
  retailPrice: number;
81
+ /** e.g., "1 Year", "3 Years" */
56
82
  term: string;
57
83
  }
58
84
  export interface CostSummaryDetails {
85
+ /** Last 30 days */
59
86
  total?: number;
87
+ /** Total cost in the previous 30 days */
60
88
  totalPrevious?: number;
89
+ /** Last 30 days, taking into account reserved instances and savings plans */
61
90
  amortizedTotal?: number;
91
+ /** Total cost in the previous 30 days, taking into account reserved instances and savings plans */
62
92
  amortizedTotalPrevious?: number;
93
+ /** Optional active-day coverage for the 30-day spend window (e.g. 18 means 18/30 active days). */
94
+ coverageDays?: number;
63
95
  items?: ResourceCostSummary[];
96
+ savingsRange?: SavingsRange;
64
97
  }
65
98
  export interface ResourceCostSummary {
99
+ /** e.g. "Basic Plan (B2 App)" */
66
100
  label1: string;
101
+ /** e.g. "Azure App Service" */
67
102
  label2: string;
103
+ label3?: string;
104
+ label4?: string;
105
+ /** e.g. "Bandwidth", "Defender for Cloud" */
106
+ category?: string;
107
+ /** e.g. Cores: 2 | RAM: 3.5GB | Storage: 10GB */
68
108
  specs: SpecItem[];
109
+ /** name of the reservation if it's a reserved instance */
69
110
  reservation?: string;
111
+ /** e.g. true means the resource is active, false means the resource was active (old SKU) */
70
112
  active: boolean;
113
+ /** e.g. true means the resource is an addon such as Defender for Cloud, Backups, Disks, IP address, ASR */
71
114
  addon: boolean;
115
+ /** e.g. 66.09 (rounded to 2 decimal places) - the amount of money spent on the resource based on the date range */
72
116
  spend: number;
117
+ /** e.g. 66.09 (rounded to 2 decimal places) - the amount of money spent on the resource based on the date range, taking into account reserved instances and savings plans */
73
118
  spendAmortized: number;
119
+ /** e.g. 217.21 (rounded to 2 decimal places) */
74
120
  quantity: number;
121
+ /** e.g. [ { startDate: 20250601, endDate: 20250610 } ] */
75
122
  dates?: ActiveDates[];
123
+ /** e.g. 0.304140 1/Hour */
76
124
  unitPrice: string;
125
+ /** e.g. 0.304140 1/Hour */
77
126
  unitPriceAmortized: string;
127
+ /** e.g. 730.00 (rounded to 2 decimal places) */
78
128
  monthlyPrice?: number;
129
+ /** e.g. -4% */
79
130
  retailDiscount: string;
80
131
  retailCost?: RetailCostSummary;
81
132
  dailyMetrics?: DailyMetrics[];
82
133
  summaryMetrics?: DisplayMetric[];
134
+ /** Reference to the actual Azure resource */
135
+ resourceId?: string;
136
+ /** Human-readable resource name */
137
+ resourceName?: string;
138
+ /** Azure resource type */
139
+ resourceType?: string;
140
+ savingsRange?: SavingsRange;
141
+ /** Reference to the recommendation that this target cost is associated with */
142
+ recommendationId?: string;
143
+ /** Billing and estimated split metadata */
144
+ costSource?: ResourceCostSource;
145
+ costSourceConfidence?: CostSourceConfidence;
146
+ costSourceDetail?: string;
147
+ spendActual?: number;
148
+ spendEstimated?: number;
149
+ spendAmortizedActual?: number;
150
+ spendAmortizedEstimated?: number;
151
+ /** Explainability metadata for estimated/blended rows */
152
+ estimationMethod?: string;
153
+ estimatedDaysSource?: 'metrics' | 'ma7' | 'ma14' | 'ma' | string;
154
+ pricingSource?: 'billing' | 'retail' | 'manual' | string;
155
+ estimationFormula?: string;
156
+ estimationInputs?: Record<string, unknown>;
157
+ estimationRates?: Record<string, number>;
158
+ estimationDetails?: Record<string, unknown>;
159
+ /** Per-source date ranges derived from daily records */
160
+ billingDateRange?: CostDateRangeMetadata;
161
+ estimatedDateRange?: CostDateRangeMetadata;
162
+ /** Optional resource-level cutoff markers (when attached at item level) */
163
+ billingActualThroughDate?: number;
164
+ estimationCutoffStartDate?: number;
165
+ /** Unit normalization/debug metadata */
166
+ quantityRaw?: number;
167
+ unitOfMeasureRaw?: string;
168
+ unitPriceRaw?: string;
169
+ unitPriceAmortizedRaw?: string;
170
+ quantityNormalized?: number;
171
+ unitOfMeasureNormalized?: string;
172
+ unitNormalizationFactor?: number;
173
+ }
174
+ export interface SavingsRange {
175
+ min: SavingsDetail;
176
+ max: SavingsDetail;
177
+ currentMonthly: number;
178
+ lowestPossibleMonthly: number;
179
+ /** Optional breakdown of savings scenarios (e.g. SKU changes, reservations, savings plans). */
180
+ metadata?: SavingsRangeOption[];
181
+ }
182
+ export interface SavingsDetail {
183
+ monthly: number;
184
+ percent: number;
185
+ }
186
+ export interface SavingsRangeOption {
187
+ /** Unique key for the scenario, stable within the savings response. */
188
+ key: string;
189
+ /** Human-readable description of the savings option. */
190
+ label: string;
191
+ /** Category of the savings source (target-cost, reserved-instance, savings-plan). */
192
+ sourceType?: 'target-cost' | 'reserved-instance' | 'savings-plan';
193
+ /** Commitment term if applicable (e.g. "1 Year"). */
194
+ term?: string;
195
+ /** Indicates whether pricing/savings were normalized across recommended commitments. */
196
+ normalized?: boolean;
197
+ /** Total monthly price for this option after normalization. */
198
+ targetMonthlyPrice: number;
199
+ /** Monthly savings relative to the observed spend. */
200
+ monthlySavings: number;
201
+ /** Savings percent relative to the observed spend. */
202
+ savingsPercent: number;
203
+ /** Baseline commitments inferred from current usage (reserved instances or savings plans). */
204
+ baselineCommitmentCount?: number;
205
+ /** Total commitments recommended to cover the workload. */
206
+ recommendedCommitmentCount?: number;
207
+ /** Hours that remain on PAYG after applying commitments. */
208
+ paygRemainderHours?: number;
83
209
  }
84
210
  export interface RetailCostSummary {
211
+ /** e.g. 0.304140 1/Hour */
85
212
  unitPrice: string;
213
+ /** e.g. 730.00 (rounded to 2 decimal places) */
86
214
  monthlyPrice: number;
215
+ /** e.g. 66.09 (rounded to 2 decimal places) */
87
216
  cost: number;
88
217
  savingsPlans?: SavingsCostSummary[];
89
218
  reservedInstances?: SavingsCostSummary[];
219
+ /** This is for a multi-level target (e.g. From Windows To Linux from P2 SKU to P1 SKU) */
90
220
  targetCost?: TargetCostSummary[];
91
221
  }
92
222
  export interface SavingsCostSummary {
223
+ /** e.g. 0.304140 1/Hour */
93
224
  unitPrice: string;
225
+ /** e.g. "1 Year", "3 Years" */
94
226
  term: string;
227
+ /** e.g. 730.00 (rounded to 2 decimal places) */
95
228
  monthlyPrice: number;
229
+ /** e.g. 10% */
96
230
  savingsPercent: string;
231
+ /** e.g. 100.00 (rounded to 2 decimal places) */
97
232
  monthlySavings: number;
233
+ /**
234
+ * Hours covered per commitment (for example 730 hours per month for hourly commitments).
235
+ * Provided so callers can scale savings for multiple concurrently running instances.
236
+ */
237
+ commitmentHoursPerInstance?: number;
238
+ /**
239
+ * Recommended number of commitments to cover the observed usage (ceil(billedHours / commitmentHoursPerInstance)).
240
+ */
241
+ recommendedCommitmentCount?: number;
242
+ /** Monthly price normalized for the recommended commitment count. */
243
+ normalizedMonthlyPrice?: number;
244
+ /** Monthly savings normalized for the recommended commitment count. */
245
+ normalizedMonthlySavings?: number;
246
+ /** Savings percent normalized for the recommended commitment count. */
247
+ normalizedSavingsPercent?: number;
248
+ /** Baseline commitments derived from observed usage (before new recommendations). */
249
+ baselineCommitmentCount?: number;
250
+ /** Number of hours left on PAYG after commitments are applied. */
251
+ paygRemainderHours?: number;
98
252
  }
99
253
  export interface TargetCostSummary {
254
+ /** e.g. Windows to Linux migration */
100
255
  targetLabel?: string;
256
+ /** e.g. Windows to Linux migration */
257
+ targetLabel2?: string;
258
+ /** e.g. "Basic Plan (B2 App)" */
101
259
  label1: string;
260
+ /** e.g. "Azure App Service" */
102
261
  label2: string;
262
+ label3?: string;
263
+ label4?: string;
264
+ /** e.g. Cores: 2 | RAM: 3.5GB | Storage: 10GB */
103
265
  specs: SpecItem[];
266
+ /** e.g. 66.09 (rounded to 2 decimal places) */
104
267
  cost: number;
268
+ /** e.g. 100.00 (rounded to 2 decimal places) */
105
269
  savings: number;
270
+ /** e.g. 0.304140 1/Hour */
106
271
  unitPrice: string;
272
+ /** e.g. 730.00 (rounded to 2 decimal places) */
107
273
  monthlyPrice: number;
274
+ /** e.g. 100.00 (rounded to 2 decimal places) */
108
275
  monthlySavings: number;
276
+ /** e.g. 10% */
109
277
  monthlySavingsPercent: string;
278
+ /** Retail unit price before tenant discounts are applied */
279
+ unitPriceRetail?: string;
280
+ /** Retail monthly price before tenant discounts are applied */
281
+ monthlyPriceRetail?: number;
282
+ /** Retail cost before tenant discounts are applied */
283
+ costRetail?: number;
284
+ /** This is for a multi-level target (e.g. From Windows To Linux from P2 SKU to P1 SKU) */
110
285
  targetCost?: TargetCostSummary[];
286
+ /** This is for reserved intances if it's available */
111
287
  reservedInstances?: SavingsCostSummary[];
288
+ /** This is for savings plans if it's available */
289
+ savingsPlans?: SavingsCostSummary[];
290
+ /** Reference to the recommendation that this target cost is associated with */
291
+ recommendationId?: string;
292
+ /** Resource Type */
293
+ resourceType?: string;
112
294
  }
113
295
  export interface ResourceSpend {
296
+ /** the actual cost spent on the resource. We can't rename this to spend because it comes from the cost API */
114
297
  cost: number;
298
+ /** the amount spent on the resource based on the amortized cost (this takes reserved instances and savings plans into account) */
115
299
  costAmortized?: number;
116
300
  quantity: number;
117
301
  date?: number;
118
302
  activeDates?: ActiveDates[];
303
+ /** e.g. true means the resource is active, false means the resource was active (old SKU) */
119
304
  active?: boolean;
305
+ /** e.g. true means the resource is an addon such as Defender for Cloud, Backups, Disks, IP address, ASR */
120
306
  addon?: boolean;
307
+ /** e.g. Backup, Data Storage, Log Storage, Advanced Threat Protection, Vulnerability Assessment, Long-term Retention Backups */
121
308
  referenceName?: string;
122
309
  resourceId?: string;
123
310
  meterCategory: string;
@@ -129,6 +316,8 @@ export interface ResourceSpend {
129
316
  resourceGuid: string;
130
317
  reservationName?: string;
131
318
  label?: string;
319
+ label2?: string;
320
+ /** e.g. Cores: 2 | RAM: 3.5GB | Storage: 10GB | IOPS: 1000 | Throughput: 100MB/s */
132
321
  specs?: SpecItem[];
133
322
  displayCost?: number;
134
323
  displayQuantity?: number;
@@ -138,6 +327,9 @@ export interface ResourceSpend {
138
327
  retailDiscountPercentDisplay?: string;
139
328
  dailyMetrics?: DailyMetrics[];
140
329
  summaryMetrics?: DisplayMetric[];
330
+ benefitId?: string;
331
+ benefitName?: string;
332
+ reservationId?: string;
141
333
  }
142
334
  export interface PricingResponse {
143
335
  Items: AzurePrice[];
@@ -1 +1 @@
1
- {"version":3,"file":"prices.d.ts","sourceRoot":"","sources":["../../src/azure/prices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prices.d.ts","sourceRoot":"","sources":["../../src/azure/prices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import type { ProviderName, ProviderScope } from '../common/provider';
2
+ export declare const RecommendationAuditRowKinds: {
3
+ readonly resourceTarget: "resource-view:target";
4
+ readonly subscriptionTarget: "scope-view:target";
5
+ readonly resourceProviderScopeFeed: "resource-view:providerScope-feed";
6
+ readonly subscriptionProviderScopeFeed: "scope-view:providerScope-feed";
7
+ };
8
+ export type RecommendationAuditRowKind = (typeof RecommendationAuditRowKinds)[keyof typeof RecommendationAuditRowKinds];
9
+ export type RecommendationAuditScope = 'resource' | 'subscription';
10
+ export type RecommendationAuditView = 'target' | 'providerScope-feed';
11
+ export interface RecommendationAuditQueryBase extends ProviderScope {
12
+ /**
13
+ * ISO timestamp lower bound (inclusive).
14
+ * Omit to let consumers default to the contract-defined lookback window.
15
+ */
16
+ from?: string;
17
+ /**
18
+ * ISO timestamp upper bound (exclusive).
19
+ * Omit to let consumers default to "now".
20
+ */
21
+ to?: string;
22
+ /** Optional max rows to return (service-level cap still applies). */
23
+ limit?: number;
24
+ /**
25
+ * Read-time request hint to append a `Viewed` audit event.
26
+ * Services must suppress `Viewed` persistence for global `reader` and `admin`
27
+ * actors, even when `trackView` is `true`.
28
+ */
29
+ trackView?: boolean;
30
+ }
31
+ export type ResourceTargetRecommendationAuditQuery = RecommendationAuditQueryBase & {
32
+ scope: 'resource';
33
+ view: 'target';
34
+ recommendationId: string;
35
+ resourceId: string;
36
+ };
37
+ export type SubscriptionTargetRecommendationAuditQuery = RecommendationAuditQueryBase & {
38
+ scope: 'subscription';
39
+ view: 'target';
40
+ recommendationId: string;
41
+ resourceId?: never;
42
+ };
43
+ export type ResourceProviderScopeFeedRecommendationAuditQuery = RecommendationAuditQueryBase & {
44
+ scope: 'resource';
45
+ view: 'providerScope-feed';
46
+ recommendationId: string;
47
+ resourceId?: never;
48
+ };
49
+ export type SubscriptionProviderScopeFeedRecommendationAuditQuery = RecommendationAuditQueryBase & {
50
+ scope: 'subscription';
51
+ view: 'providerScope-feed';
52
+ recommendationId: string;
53
+ resourceId?: never;
54
+ };
55
+ export type GetRecommendationAuditQueryCanonical = ResourceTargetRecommendationAuditQuery | SubscriptionTargetRecommendationAuditQuery | ResourceProviderScopeFeedRecommendationAuditQuery | SubscriptionProviderScopeFeedRecommendationAuditQuery;
56
+ export type GetRecommendationAuditQuery = GetRecommendationAuditQueryCanonical;
57
+ export type RecommendationAuditEventType = 'Viewed' | 'Added' | 'Archived' | 'CommentAdded' | 'CommentUpdated' | 'CommentDeleted' | 'CommentPinned' | 'CommentUnpinned' | 'Shared' | 'Dismissed' | 'Restored' | 'Prioritized' | 'Unprioritized' | 'Implemented';
58
+ /** Flat recommendation audit row columns as persisted in `recommendationsevents`. */
59
+ export interface RecommendationAuditEventRowColumns {
60
+ CompanyId: string;
61
+ ProviderName: ProviderName;
62
+ ProviderScopeId: string;
63
+ /** For Azure providers, mirrors `ProviderScopeId` (subscription id). */
64
+ SubscriptionId: string;
65
+ /** Storage row discriminator derived from query scope + view contract. */
66
+ RowKind: RecommendationAuditRowKind;
67
+ ResourceId?: string | null;
68
+ RecommendationId: string;
69
+ EventType: RecommendationAuditEventType;
70
+ /** Stringified compact action metadata payload. */
71
+ EventDetails?: string;
72
+ UserId: string;
73
+ /**
74
+ * Optional actor display name.
75
+ * May be missing/null for legacy rows or when identity enrichment is unavailable.
76
+ */
77
+ UserDisplayName?: string | null;
78
+ Source: string;
79
+ /** ISO timestamp for event creation. */
80
+ Date: string;
81
+ EventId: string;
82
+ }
83
+ export interface RecommendationAuditEventRow extends RecommendationAuditEventRowColumns {
84
+ PartitionKey: string;
85
+ RowKey: string;
86
+ }
87
+ /** Timeline-friendly response event DTO. */
88
+ export interface RecommendationAuditTimelineEvent {
89
+ eventId: string;
90
+ eventType: RecommendationAuditEventType;
91
+ date: string;
92
+ companyId: string;
93
+ providerName: ProviderName;
94
+ providerScopeId: string;
95
+ subscriptionId: string;
96
+ resourceId?: string | null;
97
+ recommendationId: string;
98
+ eventDetails?: string;
99
+ userId: string;
100
+ /**
101
+ * Optional actor display name.
102
+ * API may omit this when upstream rows do not contain `UserDisplayName`.
103
+ */
104
+ userDisplayName?: string | null;
105
+ source: string;
106
+ rowKind: RecommendationAuditRowKind;
107
+ }
108
+ /**
109
+ * Canonical API response contract for recommendation audit reads.
110
+ * The service returns a raw event array.
111
+ */
112
+ export type RecommendationAuditQueryResponse = RecommendationAuditTimelineEvent[];
113
+ //# sourceMappingURL=recommendationAudit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommendationAudit.d.ts","sourceRoot":"","sources":["../../src/azure/recommendationAudit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RecommendationAuditRowKinds = void 0;
4
+ exports.RecommendationAuditRowKinds = {
5
+ resourceTarget: 'resource-view:target',
6
+ subscriptionTarget: 'scope-view:target',
7
+ resourceProviderScopeFeed: 'resource-view:providerScope-feed',
8
+ subscriptionProviderScopeFeed: 'scope-view:providerScope-feed',
9
+ };
10
+ //# sourceMappingURL=recommendationAudit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommendationAudit.js","sourceRoot":"","sources":["../../src/azure/recommendationAudit.ts"],"names":[],"mappings":";;;AAEa,QAAA,2BAA2B,GAAG;IACzC,cAAc,EAAE,sBAAsB;IACtC,kBAAkB,EAAE,mBAAmB;IACvC,yBAAyB,EAAE,kCAAkC;IAC7D,6BAA6B,EAAE,+BAA+B;CACtD,CAAC"}
@@ -1,24 +1,113 @@
1
- export interface RecommendationState {
1
+ import type { ProviderName, ProviderScope } from '../common/provider';
2
+ export type CommentScope = 'resource' | 'providerScope';
3
+ export type ResourceRecommendationStatesQuery = {
4
+ providerName: ProviderName;
5
+ scope: 'resource';
2
6
  resourceId: string;
3
7
  recommendationId: string;
4
- subscriptionId: string;
8
+ providerScopeId?: never;
9
+ };
10
+ export type ProviderScopeRecommendationStatesQuery = {
11
+ providerName: ProviderName;
12
+ scope: 'providerScope';
13
+ providerScopeId: string;
14
+ recommendationId: string;
15
+ resourceId?: never;
16
+ };
17
+ /** @deprecated Use ProviderScopeRecommendationStatesQuery */
18
+ export type SubscriptionRecommendationStatesQuery = ProviderScopeRecommendationStatesQuery;
19
+ /** @deprecated Use GetRecommendationStatesQuery */
20
+ export type LegacyGetRecommendationStatesQuery = {
21
+ providerName: ProviderName;
22
+ resourceId: string;
23
+ recommendationId?: string;
24
+ providerScopeId?: string;
25
+ } | {
26
+ providerName: ProviderName;
27
+ recommendationId?: string;
28
+ resourceId?: string;
29
+ providerScopeId: string;
30
+ };
31
+ export type GetRecommendationStatesQuery = ResourceRecommendationStatesQuery | ProviderScopeRecommendationStatesQuery;
32
+ /** Shared recommendation-state properties across scope variants. */
33
+ export interface RecommendationStateBase extends ProviderScope {
34
+ /**
35
+ * Deprecated alias retained for compatibility with older UI consumers.
36
+ * Prefer `providerScopeId`.
37
+ */
38
+ subscriptionId?: string;
39
+ /** Row Key */
40
+ recommendationId: string;
41
+ /** Company ID to which the resource belongs */
5
42
  companyId: string;
6
43
  category: 'Cost' | 'Performance' | 'Security' | 'Compliance' | 'Reliability' | 'Operational Excellence';
7
44
  impact: 'High' | 'Medium' | 'Low';
8
45
  effort: 'High' | 'Medium' | 'Low';
46
+ /** true if the user has read the recommendation */
9
47
  read: boolean;
10
48
  status: 'Active' | 'Prioritized' | 'Dismissed' | 'Archived';
49
+ /** Date the recommendation was scheduled for */
11
50
  scheduledAt?: Date;
51
+ /** Date the recommendation state was created */
12
52
  createdAt: Date;
53
+ /** Date the recommendation state was last updated */
13
54
  updatedAt?: Date;
55
+ /** true if the recommendation is flagged */
14
56
  flagged: boolean;
57
+ /** Latest successful share provider (normalized lowercase channel name). */
58
+ integrationProviderName?: string;
59
+ /**
60
+ * Latest successful share reference.
61
+ * - `jira` | `halo` | `connectwise`: external ticket id
62
+ * - `email`: primary recipient email
63
+ * - `slack` | `teams`: unset
64
+ */
65
+ integrationTicketId?: string;
15
66
  comments: Comment[];
67
+ /** ID of the pinned comment */
68
+ pinnedCommentId?: string;
16
69
  history: RecommendationHistory[];
17
70
  custom: boolean;
71
+ /** Date when the status started */
72
+ statusStartAt?: string;
73
+ /** Date when the status is expected to change */
74
+ statusEndAt?: string;
18
75
  }
76
+ export interface ResourceRecommendationState extends RecommendationStateBase {
77
+ /**
78
+ * Scope discriminator for recommendation commentary identity.
79
+ * Resource scope identity is keyed by `resourceId + recommendationId`.
80
+ */
81
+ scope: 'resource';
82
+ /** Partition Key: resourceId (Hash) */
83
+ resourceId: string;
84
+ }
85
+ export interface ProviderScopeRecommendationState extends RecommendationStateBase {
86
+ /**
87
+ * Scope discriminator for recommendation commentary identity.
88
+ * Provider scope identity is keyed by `providerScopeId + recommendationId`.
89
+ */
90
+ scope: 'providerScope';
91
+ /** Provider-scope commentary must not rely on resource identity. */
92
+ resourceId?: never;
93
+ }
94
+ export type RecommendationState = ResourceRecommendationState | ProviderScopeRecommendationState;
95
+ /** @deprecated Use RecommendationState */
96
+ export type LegacyRecommendationState = RecommendationStateBase & {
97
+ scope?: CommentScope;
98
+ resourceId: string;
99
+ };
100
+ /** @deprecated Use RecommendationState */
101
+ export type RecommendationStateRecord = RecommendationState | LegacyRecommendationState;
102
+ export type ResourceRecommendationStateWriteRequest = ResourceRecommendationState;
103
+ export type ProviderScopeRecommendationStateWriteRequest = ProviderScopeRecommendationState;
104
+ /** @deprecated Use ProviderScopeRecommendationStateWriteRequest */
105
+ export type SubscriptionRecommendationStateWriteRequest = ProviderScopeRecommendationStateWriteRequest;
106
+ export type SaveRecommendationStateRequest = ResourceRecommendationStateWriteRequest | ProviderScopeRecommendationStateWriteRequest;
19
107
  export interface RecommendationHistory {
20
108
  userId: string;
21
109
  createdAt: Date;
110
+ /** restore means back from dismissed state */
22
111
  action: 'Dismiss' | 'Restore' | 'Prioritize' | 'Unprioritize' | 'Implement';
23
112
  reason?: string;
24
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recommendationState.d.ts","sourceRoot":"","sources":["../../src/azure/recommendationState.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,mBAAmB;IAElC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,wBAAwB,CAAC;IACxG,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAC;IAC5D,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,cAAc,GAAG,WAAW,CAAC;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"recommendationState.d.ts","sourceRoot":"","sources":["../../src/azure/recommendationState.ts"],"names":[],"mappings":"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"}