@spottoai/types-package 1.0.2-beta.18 → 1.0.2-beta.180

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 (182) hide show
  1. package/LICENSE +18 -40
  2. package/README.md +4 -11
  3. package/dist/accounts/accounts.d.ts +37 -3
  4. package/dist/accounts/accounts.d.ts.map +1 -1
  5. package/dist/accounts/index.d.ts +2 -0
  6. package/dist/accounts/index.d.ts.map +1 -1
  7. package/dist/accounts/index.js +2 -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/writePermissions.d.ts +34 -0
  14. package/dist/accounts/writePermissions.d.ts.map +1 -0
  15. package/dist/accounts/writePermissions.js +37 -0
  16. package/dist/accounts/writePermissions.js.map +1 -0
  17. package/dist/ai/index.d.ts +944 -9
  18. package/dist/ai/index.d.ts.map +1 -1
  19. package/dist/ai/index.js +1 -1
  20. package/dist/ai/index.js.map +1 -1
  21. package/dist/azure/benefits.d.ts +137 -0
  22. package/dist/azure/benefits.d.ts.map +1 -0
  23. package/dist/azure/benefits.js +3 -0
  24. package/dist/azure/benefits.js.map +1 -0
  25. package/dist/azure/billingPlots.d.ts +108 -0
  26. package/dist/azure/billingPlots.d.ts.map +1 -0
  27. package/dist/azure/billingPlots.js +6 -0
  28. package/dist/azure/billingPlots.js.map +1 -0
  29. package/dist/azure/budgets.d.ts +4 -0
  30. package/dist/azure/budgets.d.ts.map +1 -1
  31. package/dist/azure/commitmentsPlanning.d.ts +159 -0
  32. package/dist/azure/commitmentsPlanning.d.ts.map +1 -0
  33. package/dist/azure/commitmentsPlanning.js +3 -0
  34. package/dist/azure/commitmentsPlanning.js.map +1 -0
  35. package/dist/azure/common.d.ts +34 -0
  36. package/dist/azure/common.d.ts.map +1 -1
  37. package/dist/azure/configs.d.ts +12 -0
  38. package/dist/azure/configs.d.ts.map +1 -1
  39. package/dist/azure/costEstimation.d.ts +78 -0
  40. package/dist/azure/costEstimation.d.ts.map +1 -0
  41. package/dist/azure/costEstimation.js +3 -0
  42. package/dist/azure/costEstimation.js.map +1 -0
  43. package/dist/azure/metrics.d.ts +40 -0
  44. package/dist/azure/metrics.d.ts.map +1 -1
  45. package/dist/azure/payloads.d.ts +10 -1
  46. package/dist/azure/payloads.d.ts.map +1 -1
  47. package/dist/azure/prices.d.ts +179 -0
  48. package/dist/azure/prices.d.ts.map +1 -1
  49. package/dist/azure/recommendationAudit.d.ts +113 -0
  50. package/dist/azure/recommendationAudit.d.ts.map +1 -0
  51. package/dist/azure/recommendationAudit.js +10 -0
  52. package/dist/azure/recommendationAudit.js.map +1 -0
  53. package/dist/azure/recommendationState.d.ts +91 -2
  54. package/dist/azure/recommendationState.d.ts.map +1 -1
  55. package/dist/azure/recommendations.d.ts +289 -5
  56. package/dist/azure/recommendations.d.ts.map +1 -1
  57. package/dist/azure/recommendations.js.map +1 -1
  58. package/dist/azure/relationships.d.ts +77 -0
  59. package/dist/azure/relationships.d.ts.map +1 -0
  60. package/dist/azure/relationships.js +3 -0
  61. package/dist/azure/relationships.js.map +1 -0
  62. package/dist/azure/reports.d.ts +248 -0
  63. package/dist/azure/reports.d.ts.map +1 -1
  64. package/dist/azure/reports.js +13 -0
  65. package/dist/azure/reports.js.map +1 -1
  66. package/dist/azure/resources.d.ts +39 -0
  67. package/dist/azure/resources.d.ts.map +1 -1
  68. package/dist/azure/reviewChecklist.d.ts +139 -0
  69. package/dist/azure/reviewChecklist.d.ts.map +1 -0
  70. package/dist/azure/reviewChecklist.js +3 -0
  71. package/dist/azure/reviewChecklist.js.map +1 -0
  72. package/dist/azure/security.d.ts +15 -1
  73. package/dist/azure/security.d.ts.map +1 -1
  74. package/dist/azure/serviceRetirement.d.ts +28 -0
  75. package/dist/azure/serviceRetirement.d.ts.map +1 -0
  76. package/dist/azure/serviceRetirement.js +3 -0
  77. package/dist/azure/serviceRetirement.js.map +1 -0
  78. package/dist/azure/serviceRetirementState.d.ts +22 -0
  79. package/dist/azure/serviceRetirementState.d.ts.map +1 -0
  80. package/dist/azure/serviceRetirementState.js +3 -0
  81. package/dist/azure/serviceRetirementState.js.map +1 -0
  82. package/dist/azure/storage-inventory.d.ts +241 -0
  83. package/dist/azure/storage-inventory.d.ts.map +1 -0
  84. package/dist/azure/storage-inventory.js +3 -0
  85. package/dist/azure/storage-inventory.js.map +1 -0
  86. package/dist/azure/subscriptions.d.ts +34 -13
  87. package/dist/azure/subscriptions.d.ts.map +1 -1
  88. package/dist/azure/views.d.ts +147 -2
  89. package/dist/azure/views.d.ts.map +1 -1
  90. package/dist/common/index.d.ts +1 -0
  91. package/dist/common/index.d.ts.map +1 -1
  92. package/dist/common/index.js +1 -0
  93. package/dist/common/index.js.map +1 -1
  94. package/dist/common/pagination.d.ts +3 -0
  95. package/dist/common/pagination.d.ts.map +1 -1
  96. package/dist/common/provider.d.ts +9 -0
  97. package/dist/common/provider.d.ts.map +1 -0
  98. package/dist/common/provider.js +9 -0
  99. package/dist/common/provider.js.map +1 -0
  100. package/dist/company/billingAccount.d.ts +30 -0
  101. package/dist/company/billingAccount.d.ts.map +1 -0
  102. package/dist/company/billingAccount.js +3 -0
  103. package/dist/company/billingAccount.js.map +1 -0
  104. package/dist/company/company.d.ts +26 -1
  105. package/dist/company/company.d.ts.map +1 -1
  106. package/dist/company/index.d.ts +1 -0
  107. package/dist/company/index.d.ts.map +1 -1
  108. package/dist/company/index.js +1 -0
  109. package/dist/company/index.js.map +1 -1
  110. package/dist/company/notification.d.ts +31 -1
  111. package/dist/company/notification.d.ts.map +1 -1
  112. package/dist/company/notification.js +24 -12
  113. package/dist/company/notification.js.map +1 -1
  114. package/dist/company/survey.d.ts +3 -0
  115. package/dist/company/survey.d.ts.map +1 -1
  116. package/dist/events/alertDefinitionRun.d.ts +23 -0
  117. package/dist/events/alertDefinitionRun.d.ts.map +1 -0
  118. package/dist/events/alertDefinitionRun.js +3 -0
  119. package/dist/events/alertDefinitionRun.js.map +1 -0
  120. package/dist/events/baseAlert.d.ts +130 -0
  121. package/dist/events/baseAlert.d.ts.map +1 -0
  122. package/dist/events/baseAlert.js +3 -0
  123. package/dist/events/baseAlert.js.map +1 -0
  124. package/dist/events/cost.d.ts +361 -0
  125. package/dist/events/cost.d.ts.map +1 -0
  126. package/dist/events/cost.js +3 -0
  127. package/dist/events/cost.js.map +1 -0
  128. package/dist/events/costAnomalies.d.ts +47 -0
  129. package/dist/events/costAnomalies.d.ts.map +1 -0
  130. package/dist/events/costAnomalies.js +3 -0
  131. package/dist/events/costAnomalies.js.map +1 -0
  132. package/dist/events/costViews.d.ts +23 -0
  133. package/dist/events/costViews.d.ts.map +1 -0
  134. package/dist/events/costViews.js +3 -0
  135. package/dist/events/costViews.js.map +1 -0
  136. package/dist/events/eventStatus.d.ts +67 -0
  137. package/dist/events/eventStatus.d.ts.map +1 -0
  138. package/dist/events/eventStatus.js +3 -0
  139. package/dist/events/eventStatus.js.map +1 -0
  140. package/dist/events/index.d.ts +7 -0
  141. package/dist/events/index.d.ts.map +1 -0
  142. package/dist/events/index.js +23 -0
  143. package/dist/events/index.js.map +1 -0
  144. package/dist/feedbacks/feedback.d.ts +9 -0
  145. package/dist/feedbacks/feedback.d.ts.map +1 -1
  146. package/dist/identity/apikey.d.ts +67 -0
  147. package/dist/identity/apikey.d.ts.map +1 -0
  148. package/dist/identity/apikey.js +3 -0
  149. package/dist/identity/apikey.js.map +1 -0
  150. package/dist/identity/index.d.ts +2 -0
  151. package/dist/identity/index.d.ts.map +1 -0
  152. package/dist/identity/index.js +18 -0
  153. package/dist/identity/index.js.map +1 -0
  154. package/dist/index.d.ts +15 -0
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/index.js +15 -1
  157. package/dist/index.js.map +1 -1
  158. package/dist/integrations/halo.d.ts +76 -0
  159. package/dist/integrations/halo.d.ts.map +1 -0
  160. package/dist/integrations/halo.js +3 -0
  161. package/dist/integrations/halo.js.map +1 -0
  162. package/dist/integrations/index.d.ts +3 -0
  163. package/dist/integrations/index.d.ts.map +1 -0
  164. package/dist/integrations/index.js +19 -0
  165. package/dist/integrations/index.js.map +1 -0
  166. package/dist/integrations/integrationTickets.d.ts +67 -0
  167. package/dist/integrations/integrationTickets.d.ts.map +1 -0
  168. package/dist/integrations/integrationTickets.js +3 -0
  169. package/dist/integrations/integrationTickets.js.map +1 -0
  170. package/dist/tags/index.d.ts +2 -0
  171. package/dist/tags/index.d.ts.map +1 -0
  172. package/dist/tags/index.js +18 -0
  173. package/dist/tags/index.js.map +1 -0
  174. package/dist/tags/tags.d.ts +26 -0
  175. package/dist/tags/tags.d.ts.map +1 -0
  176. package/dist/tags/tags.js +10 -0
  177. package/dist/tags/tags.js.map +1 -0
  178. package/dist/unknown/services.d.ts +12 -0
  179. package/dist/unknown/services.d.ts.map +1 -0
  180. package/dist/unknown/services.js +3 -0
  181. package/dist/unknown/services.js.map +1 -0
  182. package/package.json +2 -2
@@ -14,26 +14,38 @@ export interface ResourceConfigItem {
14
14
  overrideSourceProperty?: string;
15
15
  isArray?: boolean;
16
16
  mandatory?: boolean;
17
+ /** if true, then the resource is supported by the platform (e.g. activity logs, scaling plans, billing) */
17
18
  supporting?: boolean;
18
19
  displayServiceName?: string;
20
+ /** an expression to determine the display service name */
19
21
  displayServiceNameExpression?: string;
20
22
  icon?: string;
23
+ /** an expression to determine the icon */
21
24
  iconExpression?: string;
25
+ /** a description of the service */
22
26
  description?: string;
27
+ /** an expression to determine the description */
23
28
  descriptionExpression?: string;
29
+ /** a link to the product page */
24
30
  product?: string;
31
+ /** an expression to determine the product */
25
32
  productExpression?: string;
33
+ /** jsonata expression evaluated against parent resource to decide if a child should run */
34
+ when?: string;
35
+ ttlHours?: number;
26
36
  references: {
27
37
  [key: string]: ResourceTypeReference;
28
38
  };
29
39
  metrics?: AzureResourceMetric[];
30
40
  metricsDescription?: MetricDescription[];
31
41
  metricsDisplay?: MetricsDisplay[];
42
+ /** Loaded during processing */
32
43
  name: string;
33
44
  type: string;
34
45
  parameters: object;
35
46
  alias: AliasConfig;
36
47
  resources: ResourceConfigItem[];
48
+ /** e.g. "Virtual Network" used for bill / price matching */
37
49
  serviceName?: string;
38
50
  label1?: string;
39
51
  label2?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../../src/azure/configs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,kBAAkB,CAAC;IACnC,YAAY,EAAE,kBAAkB,CAAC;IACjC,SAAS,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAE,CAAC;IACrD,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACzC,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAGlC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../../src/azure/configs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,kBAAkB,CAAC;IACnC,YAAY,EAAE,kBAAkB,CAAC;IACjC,SAAS,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2GAA2G;IAC3G,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,2FAA2F;IAC3F,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAE,CAAC;IACrD,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACzC,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAElC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,78 @@
1
+ export interface ResourceCostEstimationSegmentMeter {
2
+ meterName: string;
3
+ productName: string;
4
+ skuName: string;
5
+ meterId?: string | null;
6
+ quantity: number;
7
+ unitListPrice: number | null;
8
+ discount: number | null;
9
+ unitEffectivePrice: number | null;
10
+ cost: number | null;
11
+ unitOfMeasure?: string;
12
+ notes?: string;
13
+ }
14
+ export interface ResourceCostEstimationSegment {
15
+ name: string;
16
+ description: string | null;
17
+ usage: Record<string, number>;
18
+ usageMetadata?: Record<string, {
19
+ label: string;
20
+ unit?: string;
21
+ description?: string;
22
+ }>;
23
+ meters: Record<string, ResourceCostEstimationSegmentMeter>;
24
+ subtotal: number;
25
+ }
26
+ export interface ResourceCostEstimationPlan {
27
+ tierKey: string;
28
+ label: string;
29
+ recommendationIds: string[];
30
+ parameters: Record<string, number>;
31
+ segments: ResourceCostEstimationSegment[];
32
+ summaryTotals: Record<string, number>;
33
+ projectedMonthlyCost: number;
34
+ savingsAmount: number;
35
+ savingsPercent: number;
36
+ }
37
+ export interface ResourceCostEstimationSummary {
38
+ sourceProfile?: string;
39
+ currency: string;
40
+ currentMonthlyCost: number;
41
+ currentObservedDiscounts?: Record<string, DiscountObservation>;
42
+ plans: ResourceCostEstimationPlan[];
43
+ currentCost?: number;
44
+ sourceMeta?: CostEstimationSourceMeta;
45
+ }
46
+ export type CostEstimationSourceType = 'rolling-30-days' | 'calendar-month';
47
+ export interface CostEstimationSourceMeta {
48
+ type: CostEstimationSourceType;
49
+ startDate: string;
50
+ endDate: string;
51
+ excludedRecentDays?: number;
52
+ sourcePath?: string;
53
+ }
54
+ export interface ResourceSimpleCostEstimationPlan {
55
+ label: string;
56
+ recommendationIds: string[];
57
+ projectedMonthlyCost: number;
58
+ savingsAmount: number;
59
+ }
60
+ export interface ResourceSimpleCostEstimationSummary {
61
+ currency: string;
62
+ currentMonthlyCost: number;
63
+ currentObservedDiscounts?: Record<string, DiscountObservation>;
64
+ plans: ResourceSimpleCostEstimationPlan[];
65
+ savingsRange?: {
66
+ min: number;
67
+ max: number;
68
+ };
69
+ }
70
+ export interface DiscountObservation {
71
+ meter: string;
72
+ retailPrice: number;
73
+ unitActual: number;
74
+ discount: number;
75
+ quantity: number;
76
+ cost: number;
77
+ }
78
+ //# sourceMappingURL=costEstimation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"costEstimation.d.ts","sourceRoot":"","sources":["../../src/azure/costEstimation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=costEstimation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"costEstimation.js","sourceRoot":"","sources":["../../src/azure/costEstimation.ts"],"names":[],"mappings":""}
@@ -5,10 +5,14 @@ export interface DisplayMetric {
5
5
  children?: DisplayMetric[];
6
6
  }
7
7
  export interface DailyMetrics {
8
+ /** YYYYMMDD */
8
9
  date: number;
10
+ /** number spend on the resource that day */
9
11
  spend: number;
12
+ /** number amortized spend on the resource that day */
10
13
  costAmortized: number;
11
14
  summary: MetricSummary[];
15
+ /** optional for drill-down scenarios */
12
16
  hourlyData?: HourlyMetrics[];
13
17
  }
14
18
  export interface MetricSummary {
@@ -16,21 +20,31 @@ export interface MetricSummary {
16
20
  average: number;
17
21
  peak: number;
18
22
  percentile95: number;
23
+ percentile99: number;
24
+ /** e.g. percent, GB, request/sec etc */
19
25
  unit?: string;
26
+ /** Additional context for the metric */
20
27
  context?: MetricContext;
21
28
  }
22
29
  export interface MetricContext {
30
+ /** e.g., total RAM available for memory metrics */
23
31
  capacity?: number;
32
+ /** e.g., "GB" for capacity */
24
33
  unit?: string;
34
+ /** e.g., warning threshold */
25
35
  threshold?: number;
26
36
  }
27
37
  export interface HourlyMetrics {
38
+ /** [0, 1, 2, 3, ..., 23] - define once */
28
39
  hours: number[];
29
40
  metrics: HourlyMetricData[];
30
41
  }
31
42
  export interface HourlyMetricData {
43
+ /** e.g. "CPU" */
32
44
  name: string;
45
+ /** 24 values corresponding to hours array */
33
46
  values: number[];
47
+ /** e.g. percent, GB, request/sec etc */
34
48
  unit?: string;
35
49
  }
36
50
  export interface MetricUsageSummary {
@@ -92,6 +106,7 @@ export interface MetricStats {
92
106
  trend: number;
93
107
  variance: number;
94
108
  count: number;
109
+ /** for availability metrics */
95
110
  uptime?: number;
96
111
  peakHours?: number;
97
112
  offPeakHours?: number;
@@ -106,22 +121,40 @@ export interface MetricStats {
106
121
  }
107
122
  export interface AlertCondition {
108
123
  severity: 'info' | 'warning' | 'critical' | 'underutilized';
124
+ /** JSONata expression */
109
125
  expression: string;
110
126
  description: string;
111
127
  }
128
+ export interface MetricThreshold {
129
+ value: number;
130
+ unit?: string;
131
+ reasoning?: string;
132
+ }
112
133
  export interface MetricPlot {
134
+ /** e.g. "CPU and Memory Utilization" */
113
135
  title: string;
136
+ /** name of the metric plot filename such as cpupercentage_memorypercentage */
114
137
  name: string;
138
+ /** order of the metric plot */
115
139
  priority: number;
140
+ /** reasoning of the metric plot */
116
141
  reasoning: string;
142
+ yAxisTitle?: string;
143
+ yAxisSuffix?: string;
117
144
  metrics: MetricPlotMetric[];
118
145
  }
119
146
  export interface MetricPlotMetric {
147
+ /** e.g. CPU Utilization */
120
148
  name: string;
149
+ /** e.g. "CPU Utilization is the percentage of CPU time used by the resource." */
121
150
  description: string;
151
+ /** e.g. "CPU Utilization is the percentage of CPU time used by the resource." */
122
152
  details: string;
123
153
  alerts: MetricAlert[];
124
154
  stats: MetricStats;
155
+ unit?: string;
156
+ displayUnit?: string;
157
+ threshold?: MetricThreshold;
125
158
  }
126
159
  export interface MetricsDefinition {
127
160
  name: string;
@@ -131,6 +164,9 @@ export interface MetricsDefinition {
131
164
  stats: MetricStats;
132
165
  display?: MetricsDisplay;
133
166
  alerts?: MetricAlert[];
167
+ unit?: string;
168
+ displayUnit?: string;
169
+ threshold?: MetricThreshold;
134
170
  }
135
171
  export interface MetricAlert {
136
172
  severity: 'info' | 'warning' | 'critical' | 'underutilized';
@@ -191,11 +227,15 @@ export interface AzureTimeSeries {
191
227
  data: AzureTimeSeriesData[];
192
228
  }
193
229
  export interface AzureTimeSeriesMetadata {
230
+ /** name such "Instance" or "Model" or "API Name" or "Tier" */
194
231
  name: string;
232
+ /** value such as "WN0SDWK00030D" or "gpt-5" or "GetBlobServiceProperties" or "Hot" */
195
233
  value: string;
196
234
  }
197
235
  export interface AzureTimeSeriesData {
236
+ /** Value */
198
237
  v?: number;
238
+ /** Timestamp */
199
239
  t: number;
200
240
  }
201
241
  export interface AzureResourceMetric {
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/azure/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/azure/metrics.ts"],"names":[],"mappings":"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"}
@@ -10,12 +10,14 @@ export interface ProcessPayload {
10
10
  }
11
11
  export interface RequestMessage {
12
12
  entity: string;
13
+ /** create, delete */
13
14
  action: string;
14
15
  companyId: string;
15
16
  cloudAccountId: string;
16
17
  tenantId: string;
17
18
  clientId: string;
18
19
  subscriptionId?: string;
20
+ refreshComponents?: string[];
19
21
  }
20
22
  export interface SubscriptionMessage {
21
23
  authToken?: string;
@@ -23,7 +25,14 @@ export interface SubscriptionMessage {
23
25
  authClientSecret?: string;
24
26
  authTenantId?: string;
25
27
  subscription: Subscription;
26
- companyId?: string;
28
+ companyId: string;
29
+ cloudAccountId?: string;
30
+ tenantId?: string;
31
+ clientId?: string;
32
+ /** Provide a list of components to refresh. Leave empty to refresh all components. */
33
+ refreshComponents?: string[];
34
+ sagaRunId?: string;
35
+ eventId?: string;
27
36
  }
28
37
  export interface SubscriptionResponse {
29
38
  displayName: string;
@@ -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;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,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,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,15 +45,22 @@ 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;
@@ -50,86 +72,239 @@ export interface AzurePrice {
50
72
  displayUnitPrice?: string;
51
73
  displayTotalPrice?: number;
52
74
  displayQuantity?: number;
75
+ /** Reference to the recommendation that this target cost is associated with */
53
76
  recommendationId?: string;
54
77
  }
55
78
  export interface SavingsPlan {
56
79
  unitPrice: number;
57
80
  retailPrice: number;
81
+ /** e.g., "1 Year", "3 Years" */
58
82
  term: string;
59
83
  }
60
84
  export interface CostSummaryDetails {
85
+ /** Last 30 days */
61
86
  total?: number;
87
+ /** Total cost in the previous 30 days */
62
88
  totalPrevious?: number;
89
+ /** Last 30 days, taking into account reserved instances and savings plans */
63
90
  amortizedTotal?: number;
91
+ /** Total cost in the previous 30 days, taking into account reserved instances and savings plans */
64
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;
65
95
  items?: ResourceCostSummary[];
96
+ savingsRange?: SavingsRange;
66
97
  }
67
98
  export interface ResourceCostSummary {
99
+ /** e.g. "Basic Plan (B2 App)" */
68
100
  label1: string;
101
+ /** e.g. "Azure App Service" */
69
102
  label2: string;
70
103
  label3?: string;
71
104
  label4?: string;
105
+ /** e.g. "Bandwidth", "Defender for Cloud" */
72
106
  category?: string;
107
+ /** e.g. Cores: 2 | RAM: 3.5GB | Storage: 10GB */
73
108
  specs: SpecItem[];
109
+ /** name of the reservation if it's a reserved instance */
74
110
  reservation?: string;
111
+ /** e.g. true means the resource is active, false means the resource was active (old SKU) */
75
112
  active: boolean;
113
+ /** e.g. true means the resource is an addon such as Defender for Cloud, Backups, Disks, IP address, ASR */
76
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 */
77
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 */
78
118
  spendAmortized: number;
119
+ /** e.g. 217.21 (rounded to 2 decimal places) */
79
120
  quantity: number;
121
+ /** e.g. [ { startDate: 20250601, endDate: 20250610 } ] */
80
122
  dates?: ActiveDates[];
123
+ /** e.g. 0.304140 1/Hour */
81
124
  unitPrice: string;
125
+ /** e.g. 0.304140 1/Hour */
82
126
  unitPriceAmortized: string;
127
+ /** e.g. 730.00 (rounded to 2 decimal places) */
83
128
  monthlyPrice?: number;
129
+ /** e.g. -4% */
84
130
  retailDiscount: string;
85
131
  retailCost?: RetailCostSummary;
86
132
  dailyMetrics?: DailyMetrics[];
87
133
  summaryMetrics?: DisplayMetric[];
134
+ /** Reference to the actual Azure resource */
88
135
  resourceId?: string;
136
+ /** Human-readable resource name */
89
137
  resourceName?: string;
138
+ /** Azure resource type */
90
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;
91
209
  }
92
210
  export interface RetailCostSummary {
211
+ /** e.g. 0.304140 1/Hour */
93
212
  unitPrice: string;
213
+ /** e.g. 730.00 (rounded to 2 decimal places) */
94
214
  monthlyPrice: number;
215
+ /** e.g. 66.09 (rounded to 2 decimal places) */
95
216
  cost: number;
96
217
  savingsPlans?: SavingsCostSummary[];
97
218
  reservedInstances?: SavingsCostSummary[];
219
+ /** This is for a multi-level target (e.g. From Windows To Linux from P2 SKU to P1 SKU) */
98
220
  targetCost?: TargetCostSummary[];
99
221
  }
100
222
  export interface SavingsCostSummary {
223
+ /** e.g. 0.304140 1/Hour */
101
224
  unitPrice: string;
225
+ /** e.g. "1 Year", "3 Years" */
102
226
  term: string;
227
+ /** e.g. 730.00 (rounded to 2 decimal places) */
103
228
  monthlyPrice: number;
229
+ /** e.g. 10% */
104
230
  savingsPercent: string;
231
+ /** e.g. 100.00 (rounded to 2 decimal places) */
105
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;
106
252
  }
107
253
  export interface TargetCostSummary {
254
+ /** e.g. Windows to Linux migration */
108
255
  targetLabel?: string;
256
+ /** e.g. Windows to Linux migration */
109
257
  targetLabel2?: string;
258
+ /** e.g. "Basic Plan (B2 App)" */
110
259
  label1: string;
260
+ /** e.g. "Azure App Service" */
111
261
  label2: string;
112
262
  label3?: string;
113
263
  label4?: string;
264
+ /** e.g. Cores: 2 | RAM: 3.5GB | Storage: 10GB */
114
265
  specs: SpecItem[];
266
+ /** e.g. 66.09 (rounded to 2 decimal places) */
115
267
  cost: number;
268
+ /** e.g. 100.00 (rounded to 2 decimal places) */
116
269
  savings: number;
270
+ /** e.g. 0.304140 1/Hour */
117
271
  unitPrice: string;
272
+ /** e.g. 730.00 (rounded to 2 decimal places) */
118
273
  monthlyPrice: number;
274
+ /** e.g. 100.00 (rounded to 2 decimal places) */
119
275
  monthlySavings: number;
276
+ /** e.g. 10% */
120
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) */
121
285
  targetCost?: TargetCostSummary[];
286
+ /** This is for reserved intances if it's available */
122
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 */
123
291
  recommendationId?: string;
292
+ /** Resource Type */
293
+ resourceType?: string;
124
294
  }
125
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 */
126
297
  cost: number;
298
+ /** the amount spent on the resource based on the amortized cost (this takes reserved instances and savings plans into account) */
127
299
  costAmortized?: number;
128
300
  quantity: number;
129
301
  date?: number;
130
302
  activeDates?: ActiveDates[];
303
+ /** e.g. true means the resource is active, false means the resource was active (old SKU) */
131
304
  active?: boolean;
305
+ /** e.g. true means the resource is an addon such as Defender for Cloud, Backups, Disks, IP address, ASR */
132
306
  addon?: boolean;
307
+ /** e.g. Backup, Data Storage, Log Storage, Advanced Threat Protection, Vulnerability Assessment, Long-term Retention Backups */
133
308
  referenceName?: string;
134
309
  resourceId?: string;
135
310
  meterCategory: string;
@@ -142,6 +317,7 @@ export interface ResourceSpend {
142
317
  reservationName?: string;
143
318
  label?: string;
144
319
  label2?: string;
320
+ /** e.g. Cores: 2 | RAM: 3.5GB | Storage: 10GB | IOPS: 1000 | Throughput: 100MB/s */
145
321
  specs?: SpecItem[];
146
322
  displayCost?: number;
147
323
  displayQuantity?: number;
@@ -151,6 +327,9 @@ export interface ResourceSpend {
151
327
  retailDiscountPercentDisplay?: string;
152
328
  dailyMetrics?: DailyMetrics[];
153
329
  summaryMetrics?: DisplayMetric[];
330
+ benefitId?: string;
331
+ benefitName?: string;
332
+ reservationId?: string;
154
333
  }
155
334
  export interface PricingResponse {
156
335
  Items: AzurePrice[];