@spottoai/types-package 1.0.2-beta.15 → 1.0.2-beta.150

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 (142) hide show
  1. package/LICENSE +18 -40
  2. package/README.md +4 -12
  3. package/dist/accounts/accounts.d.ts +32 -3
  4. package/dist/accounts/accounts.d.ts.map +1 -1
  5. package/dist/accounts/index.d.ts +1 -0
  6. package/dist/accounts/index.d.ts.map +1 -1
  7. package/dist/accounts/index.js +1 -0
  8. package/dist/accounts/index.js.map +1 -1
  9. package/dist/accounts/writePermissions.d.ts +34 -0
  10. package/dist/accounts/writePermissions.d.ts.map +1 -0
  11. package/dist/accounts/writePermissions.js +37 -0
  12. package/dist/accounts/writePermissions.js.map +1 -0
  13. package/dist/ai/index.d.ts +5 -0
  14. package/dist/ai/index.d.ts.map +1 -1
  15. package/dist/ai/index.js +0 -1
  16. package/dist/ai/index.js.map +1 -1
  17. package/dist/azure/billingPlots.d.ts +108 -0
  18. package/dist/azure/billingPlots.d.ts.map +1 -0
  19. package/dist/azure/billingPlots.js +6 -0
  20. package/dist/azure/billingPlots.js.map +1 -0
  21. package/dist/azure/common.d.ts +34 -0
  22. package/dist/azure/common.d.ts.map +1 -1
  23. package/dist/azure/configs.d.ts +12 -0
  24. package/dist/azure/configs.d.ts.map +1 -1
  25. package/dist/azure/costEstimation.d.ts +78 -0
  26. package/dist/azure/costEstimation.d.ts.map +1 -0
  27. package/dist/azure/costEstimation.js +3 -0
  28. package/dist/azure/costEstimation.js.map +1 -0
  29. package/dist/azure/metrics.d.ts +27 -0
  30. package/dist/azure/metrics.d.ts.map +1 -1
  31. package/dist/azure/payloads.d.ts +9 -0
  32. package/dist/azure/payloads.d.ts.map +1 -1
  33. package/dist/azure/prices.d.ts +140 -0
  34. package/dist/azure/prices.d.ts.map +1 -1
  35. package/dist/azure/recommendationState.d.ts +16 -0
  36. package/dist/azure/recommendationState.d.ts.map +1 -1
  37. package/dist/azure/recommendations.d.ts +191 -3
  38. package/dist/azure/recommendations.d.ts.map +1 -1
  39. package/dist/azure/recommendations.js.map +1 -1
  40. package/dist/azure/reports.d.ts +218 -0
  41. package/dist/azure/reports.d.ts.map +1 -1
  42. package/dist/azure/reports.js +13 -0
  43. package/dist/azure/reports.js.map +1 -1
  44. package/dist/azure/resources.d.ts +14 -0
  45. package/dist/azure/resources.d.ts.map +1 -1
  46. package/dist/azure/reviewChecklist.d.ts +139 -0
  47. package/dist/azure/reviewChecklist.d.ts.map +1 -0
  48. package/dist/azure/reviewChecklist.js +3 -0
  49. package/dist/azure/reviewChecklist.js.map +1 -0
  50. package/dist/azure/security.d.ts +28 -0
  51. package/dist/azure/security.d.ts.map +1 -0
  52. package/dist/azure/security.js +3 -0
  53. package/dist/azure/security.js.map +1 -0
  54. package/dist/azure/serviceRetirement.d.ts +26 -0
  55. package/dist/azure/serviceRetirement.d.ts.map +1 -0
  56. package/dist/azure/serviceRetirement.js +3 -0
  57. package/dist/azure/serviceRetirement.js.map +1 -0
  58. package/dist/azure/serviceRetirementState.d.ts +22 -0
  59. package/dist/azure/serviceRetirementState.d.ts.map +1 -0
  60. package/dist/azure/serviceRetirementState.js +3 -0
  61. package/dist/azure/serviceRetirementState.js.map +1 -0
  62. package/dist/azure/storage-inventory.d.ts +194 -0
  63. package/dist/azure/storage-inventory.d.ts.map +1 -0
  64. package/dist/azure/storage-inventory.js +3 -0
  65. package/dist/azure/storage-inventory.js.map +1 -0
  66. package/dist/azure/subscriptions.d.ts +9 -13
  67. package/dist/azure/subscriptions.d.ts.map +1 -1
  68. package/dist/azure/views.d.ts +89 -1
  69. package/dist/azure/views.d.ts.map +1 -1
  70. package/dist/common/pagination.d.ts +3 -0
  71. package/dist/common/pagination.d.ts.map +1 -1
  72. package/dist/company/billingAccount.d.ts +30 -0
  73. package/dist/company/billingAccount.d.ts.map +1 -0
  74. package/dist/company/billingAccount.js +3 -0
  75. package/dist/company/billingAccount.js.map +1 -0
  76. package/dist/company/company.d.ts +18 -1
  77. package/dist/company/company.d.ts.map +1 -1
  78. package/dist/company/index.d.ts +1 -0
  79. package/dist/company/index.d.ts.map +1 -1
  80. package/dist/company/index.js +1 -0
  81. package/dist/company/index.js.map +1 -1
  82. package/dist/company/notification.d.ts +31 -1
  83. package/dist/company/notification.d.ts.map +1 -1
  84. package/dist/company/notification.js +24 -12
  85. package/dist/company/notification.js.map +1 -1
  86. package/dist/company/survey.d.ts +3 -0
  87. package/dist/company/survey.d.ts.map +1 -1
  88. package/dist/events/alertDefinitionRun.d.ts +23 -0
  89. package/dist/events/alertDefinitionRun.d.ts.map +1 -0
  90. package/dist/events/alertDefinitionRun.js +3 -0
  91. package/dist/events/alertDefinitionRun.js.map +1 -0
  92. package/dist/events/baseAlert.d.ts +130 -0
  93. package/dist/events/baseAlert.d.ts.map +1 -0
  94. package/dist/events/baseAlert.js +3 -0
  95. package/dist/events/baseAlert.js.map +1 -0
  96. package/dist/events/cost.d.ts +361 -0
  97. package/dist/events/cost.d.ts.map +1 -0
  98. package/dist/events/cost.js +3 -0
  99. package/dist/events/cost.js.map +1 -0
  100. package/dist/events/costAnomalies.d.ts +47 -0
  101. package/dist/events/costAnomalies.d.ts.map +1 -0
  102. package/dist/events/costAnomalies.js +3 -0
  103. package/dist/events/costAnomalies.js.map +1 -0
  104. package/dist/events/costViews.d.ts +23 -0
  105. package/dist/events/costViews.d.ts.map +1 -0
  106. package/dist/events/costViews.js +3 -0
  107. package/dist/events/costViews.js.map +1 -0
  108. package/dist/events/eventStatus.d.ts +59 -0
  109. package/dist/events/eventStatus.d.ts.map +1 -0
  110. package/dist/events/eventStatus.js +3 -0
  111. package/dist/events/eventStatus.js.map +1 -0
  112. package/dist/events/index.d.ts +7 -0
  113. package/dist/events/index.d.ts.map +1 -0
  114. package/dist/events/index.js +23 -0
  115. package/dist/events/index.js.map +1 -0
  116. package/dist/feedbacks/feedback.d.ts +9 -0
  117. package/dist/feedbacks/feedback.d.ts.map +1 -1
  118. package/dist/identity/apikey.d.ts +67 -0
  119. package/dist/identity/apikey.d.ts.map +1 -0
  120. package/dist/identity/apikey.js +3 -0
  121. package/dist/identity/apikey.js.map +1 -0
  122. package/dist/identity/index.d.ts +2 -0
  123. package/dist/identity/index.d.ts.map +1 -0
  124. package/dist/identity/index.js +18 -0
  125. package/dist/identity/index.js.map +1 -0
  126. package/dist/index.d.ts +11 -0
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +11 -1
  129. package/dist/index.js.map +1 -1
  130. package/dist/tags/index.d.ts +2 -0
  131. package/dist/tags/index.d.ts.map +1 -0
  132. package/dist/tags/index.js +18 -0
  133. package/dist/tags/index.js.map +1 -0
  134. package/dist/tags/tags.d.ts +26 -0
  135. package/dist/tags/tags.d.ts.map +1 -0
  136. package/dist/tags/tags.js +10 -0
  137. package/dist/tags/tags.js.map +1 -0
  138. package/dist/unknown/services.d.ts +12 -0
  139. package/dist/unknown/services.d.ts.map +1 -0
  140. package/dist/unknown/services.js +3 -0
  141. package/dist/unknown/services.js.map +1 -0
  142. package/package.json +2 -2
@@ -1,4 +1,7 @@
1
1
  import { Comment, RecommendationHistory } from './recommendationState';
2
+ import { SecurityAssessmentStatus, SecurityImpact, SubscriptionSecurityStatus } from './security';
3
+ import { SubscriptionSummaryLite } from './subscriptions';
4
+ import { CostSavingsSummary, SavingsPotential } from './views';
2
5
  export declare enum RecommendationCategory {
3
6
  Cost = "Cost",
4
7
  Performance = "Performance",
@@ -8,6 +11,15 @@ export declare enum RecommendationCategory {
8
11
  OperationalExcellence = "OperationalExcellence",
9
12
  OperationalExcellenceAlternative = "Operational Excellence"
10
13
  }
14
+ export type RecommendationPriorityTier = 'must_do' | 'normal';
15
+ export interface RecommendationBaseScores {
16
+ cost_optimization: number;
17
+ security: number;
18
+ performance: number;
19
+ reliability: number;
20
+ compliance: number;
21
+ operational_excellence: number;
22
+ }
11
23
  export interface RecommendationResources {
12
24
  recommendation: CustomAzureRecommendation;
13
25
  resourceIds: string[];
@@ -16,6 +28,8 @@ export interface Recommendation {
16
28
  id: string;
17
29
  name: string;
18
30
  category: RecommendationCategory;
31
+ subCategory?: string;
32
+ /** custom */
19
33
  type?: string;
20
34
  description?: string;
21
35
  remediation?: string;
@@ -29,26 +43,65 @@ export interface Recommendation {
29
43
  potentialBenefits?: string;
30
44
  effort?: string;
31
45
  effortReason?: string;
46
+ /** e.g. 10 hours */
47
+ effortHours?: number;
32
48
  risk?: string;
33
49
  riskReason?: string;
50
+ /** Could deprecate later */
34
51
  costImpact?: number;
35
52
  costImpactReason?: string;
36
- costImpactDetails?: CostImpactDetails;
53
+ /*** costImpactDetails is deprecated **/
37
54
  performanceImpact?: number;
38
55
  performanceImpactReason?: string;
39
56
  confidencePercentage?: number;
40
57
  confidenceReason?: string;
58
+ /** array of resources that have this recommendation */
41
59
  resources?: ResourceReference[];
42
- subcategory?: string;
60
+ /** only for security recommendations */
61
+ securityImpactDetails?: SecurityImpact;
62
+ /** whether the recommendation has been resolved or not, eg, Security Assessment is "Healthy" should be true */
63
+ resolved?: boolean;
64
+ securityAssessmentStatuses?: SecurityAssessmentStatus[];
65
+ /** Deprecated fields, kept for compatibility */
43
66
  solution?: string;
44
67
  source?: string;
45
68
  service?: string;
69
+ /**
70
+ * Stored as string to allow JSON persistence.
71
+ * Uses a different name to avoid conflict with RecommendationWithState.createdAt.
72
+ */
46
73
  createdTime?: string;
74
+ /** Avoids conflict with RecommendationWithState.updatedAt */
47
75
  lastUpdatedTime?: string;
76
+ /** Business story properties */
77
+ headline: string;
78
+ bottomLine: string;
79
+ plainSummary: string;
80
+ quickSteps: string[];
81
+ businessOwner: string;
82
+ keyConstraint: string;
83
+ validationEvidence: string;
84
+ /** Technical playbook (only for multi-step implementations) */
85
+ technicalPlaybook?: string;
86
+ /** Static recommendation scoring metadata (library-level). */
87
+ baseScores?: RecommendationBaseScores;
88
+ overallBaseScore?: number;
89
+ overallBaseReason?: string;
90
+ priorityTier?: RecommendationPriorityTier;
91
+ /** Runtime scoring metadata (per company/tenant). */
92
+ adjustedScore?: number;
93
+ objectiveMultiplier?: number;
94
+ finalScore?: number;
95
+ /** UI display-only normalized score (0-100). */
96
+ normalizedScore?: number;
48
97
  }
98
+ /** Deprecated **/
49
99
  export interface CostImpactDetails {
100
+ /** e.g. "Saving Plan", "Reserved Instance", "Windows migration to Linux" */
50
101
  name: string;
51
102
  monthlySavings?: number;
103
+ currentSpend?: number;
104
+ /** e.g. 20 for 20% */
52
105
  savingPercentage?: number;
53
106
  minMonthlySavings?: number;
54
107
  maxMonthlySavings?: number;
@@ -63,6 +116,7 @@ export interface RecommendationSummary {
63
116
  export interface RecommendationWithResources {
64
117
  recommendation: Recommendation;
65
118
  resources: RecommendationResource[];
119
+ savings?: SavingsPotential;
66
120
  }
67
121
  export interface RecommendationResource {
68
122
  id: string;
@@ -70,9 +124,18 @@ export interface RecommendationResource {
70
124
  type: string;
71
125
  spend: number;
72
126
  spendAmortized: number;
127
+ savings?: SavingsPotential;
128
+ currency?: string;
129
+ currencySymbol?: string;
130
+ relationship?: ResourceRelationship;
73
131
  }
74
132
  export interface RecommendationsView {
75
133
  recommendations: RecommendationWithResources[];
134
+ securityImpactDetails?: SecurityImpact[];
135
+ subscriptionSecurityStatus?: SubscriptionSecurityStatus;
136
+ savings?: SavingsPotential;
137
+ subscription: SubscriptionSummaryLite;
138
+ costSavingsSummary?: CostSavingsSummary;
76
139
  }
77
140
  export interface ResourceId {
78
141
  id: string;
@@ -80,7 +143,18 @@ export interface ResourceId {
80
143
  export interface ResourceReference {
81
144
  id: string;
82
145
  name: string;
146
+ type?: string;
147
+ savings?: SavingsPotential;
148
+ currency?: string;
149
+ currencySymbol?: string;
150
+ relationship?: ResourceRelationship;
83
151
  }
152
+ export type ResourceRelationship = {
153
+ role?: 'primary' | 'related';
154
+ type?: string;
155
+ allocationId?: string;
156
+ metadata?: Record<string, string>;
157
+ };
84
158
  export interface ReliabilityRecommendation extends Recommendation {
85
159
  referenceID: string;
86
160
  resourceType: string;
@@ -88,7 +162,6 @@ export interface ReliabilityRecommendation extends Recommendation {
88
162
  service: string;
89
163
  }
90
164
  export interface CustomAzureRecommendation extends Recommendation {
91
- subcategory: string;
92
165
  service: string;
93
166
  source: string;
94
167
  fileName: string;
@@ -98,6 +171,7 @@ export interface RecommendationCollection {
98
171
  results: ResourceId[];
99
172
  }
100
173
  export interface AzureRecommendationLite {
174
+ /** e.g. Cost, Performance, Reliability, Security, Compliance, OperationalExcellence, Operational Excellence, HighAvailability */
101
175
  category: string;
102
176
  total: number;
103
177
  high: number;
@@ -105,11 +179,16 @@ export interface AzureRecommendationLite {
105
179
  low: number;
106
180
  }
107
181
  export interface RecommendationStats {
182
+ /** total number of recommendations in the subscription */
108
183
  total: number;
184
+ /** total number of high recommendations in the subscription */
109
185
  high: number;
186
+ /** total number of medium recommendations in the subscription */
110
187
  medium: number;
188
+ /** total number of low recommendations in the subscription */
111
189
  low: number;
112
190
  }
191
+ /** Recommendation with state information, name "ExtendedRecommendation" in the portal at the moment */
113
192
  export interface RecommendationWithState extends Recommendation {
114
193
  status?: 'Active' | 'Prioritized' | 'Postponed' | 'Dismissed' | 'Completed' | 'Archived';
115
194
  read?: boolean;
@@ -120,4 +199,113 @@ export interface RecommendationWithState extends Recommendation {
120
199
  comments?: Comment[];
121
200
  history?: RecommendationHistory[];
122
201
  }
202
+ export interface DismissRecommendationRequest extends RecommendationActionRequest {
203
+ dismissReason: string;
204
+ }
205
+ export interface ShareRecommendationRequest extends RecommendationActionRequest {
206
+ shareType: 'email' | 'slack' | 'teams' | 'jira' | 'halo' | 'connectwise';
207
+ email?: string;
208
+ }
209
+ export interface RecommendationActionRequest {
210
+ recommendationId: string;
211
+ recommendationTitle?: string;
212
+ subscriptionId: string;
213
+ resourceIds: string[];
214
+ resourceGroupName?: string;
215
+ companyId: string;
216
+ byUserId?: string;
217
+ }
218
+ export interface RecommendationActionResponse {
219
+ success: boolean;
220
+ message?: string;
221
+ affectedResources?: string[];
222
+ }
223
+ export interface ServiceRetirementRecommendation {
224
+ Id: string;
225
+ ServiceName: string;
226
+ RetiringFeature: string;
227
+ RetirementDate: string;
228
+ Link: string;
229
+ effort: string;
230
+ effortHours: number;
231
+ effortReason: string;
232
+ risk: string;
233
+ riskReason: string;
234
+ considerations: string;
235
+ confidencePercentage: number;
236
+ confidenceReason: string;
237
+ lastProcessedAt: string;
238
+ }
239
+ export interface JiraShareDetails {
240
+ projectKey?: string;
241
+ epicKey?: string;
242
+ label?: string;
243
+ }
244
+ export interface JiraIntegrationRequestBase {
245
+ siteUrl: string;
246
+ email: string;
247
+ secret?: string;
248
+ useStoredSecret?: boolean;
249
+ }
250
+ export interface JiraIntegrationTestPayload extends JiraIntegrationRequestBase {
251
+ projectKey?: string;
252
+ }
253
+ export interface JiraIntegrationEpicsPayload extends JiraIntegrationRequestBase {
254
+ projectKey: string;
255
+ maxResults?: number;
256
+ }
257
+ export interface JiraIntegrationProjectsPayload extends JiraIntegrationRequestBase {
258
+ maxResults?: number;
259
+ }
260
+ export interface JiraIntegrationLabelsPayload extends JiraIntegrationRequestBase {
261
+ projectKey: string;
262
+ maxResults?: number;
263
+ searchQuery?: string;
264
+ }
265
+ export interface JiraEntity {
266
+ id: string;
267
+ key: string;
268
+ name: string;
269
+ }
270
+ export interface JiraLabel {
271
+ name: string;
272
+ }
273
+ export interface ConnectWiseIntegrationRequestBase {
274
+ siteUrl: string;
275
+ companyId: string;
276
+ publicKey: string;
277
+ secret?: string;
278
+ useStoredSecret?: boolean;
279
+ }
280
+ export interface ConnectWiseIntegrationTestPayload extends ConnectWiseIntegrationRequestBase {
281
+ boardId?: string;
282
+ boardName?: string;
283
+ statusId?: string;
284
+ statusName?: string;
285
+ }
286
+ export type ConnectWiseBoardsPayload = ConnectWiseIntegrationRequestBase;
287
+ export interface ConnectWiseStatusesPayload extends ConnectWiseIntegrationRequestBase {
288
+ boardId?: string;
289
+ boardName?: string;
290
+ }
291
+ export type ConnectWiseTypesPayload = ConnectWiseIntegrationRequestBase;
292
+ export interface ConnectWiseSubTypesPayload extends ConnectWiseIntegrationRequestBase {
293
+ typeId?: string;
294
+ typeName?: string;
295
+ }
296
+ export interface ConnectWiseItemsPayload extends ConnectWiseIntegrationRequestBase {
297
+ subTypeId?: string;
298
+ subTypeName?: string;
299
+ }
300
+ export type ConnectWisePrioritiesPayload = ConnectWiseIntegrationRequestBase;
301
+ export interface ConnectWiseContactsPayload extends ConnectWiseIntegrationRequestBase {
302
+ searchQuery?: string;
303
+ }
304
+ export interface ConnectWiseEntity {
305
+ id: string | number;
306
+ name: string;
307
+ }
308
+ export interface ConnectWiseContact extends ConnectWiseEntity {
309
+ email?: string;
310
+ }
123
311
  //# sourceMappingURL=recommendations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recommendations.d.ts","sourceRoot":"","sources":["../../src/azure/recommendations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recommendations.d.ts","sourceRoot":"","sources":["../../src/azure/recommendations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recommendations.js","sourceRoot":"","sources":["../../src/azure/recommendations.ts"],"names":[],"mappings":";;;AAEA,IAAY,sBAQX;AARD,WAAY,sBAAsB;IAChC,uCAAa,CAAA;IACb,qDAA2B,CAAA;IAC3B,qDAA2B,CAAA;IAC3B,+CAAqB,CAAA;IACrB,mDAAyB,CAAA;IACzB,yEAA+C,CAAA;IAC/C,qFAA2D,CAAA;AAC7D,CAAC,EARW,sBAAsB,sCAAtB,sBAAsB,QAQjC"}
1
+ {"version":3,"file":"recommendations.js","sourceRoot":"","sources":["../../src/azure/recommendations.ts"],"names":[],"mappings":";;;AAKA,IAAY,sBAQX;AARD,WAAY,sBAAsB;IAChC,uCAAa,CAAA;IACb,qDAA2B,CAAA;IAC3B,qDAA2B,CAAA;IAC3B,+CAAqB,CAAA;IACrB,mDAAyB,CAAA;IACzB,yEAA+C,CAAA;IAC/C,qFAA2D,CAAA;AAC7D,CAAC,EARW,sBAAsB,sCAAtB,sBAAsB,QAQjC"}
@@ -1,14 +1,43 @@
1
+ import { Tags } from '../tags';
1
2
  export interface DecompositionTreeNode {
3
+ /** e.g., "Resource Group A", "Storage", "Standard Page Blob v2", "Storage Account", "mystorageaccount" */
2
4
  name: string;
3
5
  cost: number;
4
6
  costAmortized?: number;
5
7
  costPrevious?: number;
6
8
  costAmortizedPrevious?: number;
9
+ /** e.g., 80.5 (for 80.5%) */
7
10
  percentageOfTotal: number;
11
+ /** Absolute change from previous period */
8
12
  costChange?: number;
13
+ /** Percentage change from previous period */
9
14
  costChangePercent?: number;
10
15
  children?: DecompositionTreeNode[];
16
+ /** Total spend at this level (for percentage calculation) */
11
17
  totalSpend: number;
18
+ /** Analysis of why costs changed (only present on leaf nodes) */
19
+ changeAnalysis?: CostChangeAnalysis;
20
+ /** Only present on leaf nodes (individual resources) */
21
+ meterDetails?: MeterDetail[];
22
+ tags?: Record<string, string>;
23
+ spottoTags?: Tags;
24
+ resourceId?: string;
25
+ }
26
+ export interface MeterDetail {
27
+ /** "P1 v3 App" */
28
+ meter: string;
29
+ /** "Azure App Service" */
30
+ meterCategory: string;
31
+ /** "Premium Plan" */
32
+ meterSubCategory: string;
33
+ /** 24 (hours, GB, etc.) */
34
+ quantity: number;
35
+ /** 12.721536 */
36
+ cost: number;
37
+ /** 12.721536 */
38
+ costAmortized: number;
39
+ /** cost / quantity = rate per unit */
40
+ unitCost?: number;
12
41
  }
13
42
  export interface DecompositionTree {
14
43
  root: DecompositionTreeNode;
@@ -24,8 +53,117 @@ export interface DecompositionTree {
24
53
  totalSpendAmortizedPrevious?: number;
25
54
  currency: string;
26
55
  currencySymbol: string;
56
+ version?: string;
57
+ }
58
+ export interface EstimationTree extends DecompositionTree {
59
+ dataSource: 'estimated' | 'blended' | 'actual' | 'metrics_pricing';
60
+ coveragePercent?: number;
61
+ confidence?: number;
62
+ actualShare?: number;
63
+ estimatedShare?: number;
64
+ billingReconciliationStatus?: 'pending' | 'matched' | 'mismatch';
65
+ actualArrivedAt?: string;
66
+ lastActualCoverageAt?: string;
67
+ reconciledAt?: string;
68
+ root: EstimationTreeNode;
69
+ }
70
+ export interface EstimationTreeNode extends DecompositionTreeNode {
71
+ dataSource?: 'estimated' | 'actual' | 'blended' | 'metrics_pricing';
72
+ coveragePercent?: number;
73
+ coverageDays?: number;
74
+ actualShare?: number;
75
+ estimatedShare?: number;
76
+ confidence?: number;
77
+ serviceCategory?: 'A' | 'B' | 'C' | 'D';
78
+ componentCategory?: 'A' | 'B' | 'C' | 'D';
79
+ metricsInput?: Record<string, unknown>;
80
+ unitRates?: Record<string, number>;
81
+ pricingSource?: 'billing' | 'retail' | 'manual';
82
+ estimationMethod?: string;
83
+ estimatedDays?: string[];
84
+ estimatedDaysSource?: 'metrics' | 'ma7' | 'ma14' | 'ma';
85
+ estimatedDaysBySource?: {
86
+ metrics?: string[];
87
+ ma7?: string[];
88
+ ma14?: string[];
89
+ ma?: string[];
90
+ };
91
+ /**
92
+ * Type of this node: 'subscription' | 'resourceGroup' | 'provider' | 'service' | 'resource' | 'deployment' | 'component'
93
+ * Helps frontend understand the hierarchy and render appropriately
94
+ */
95
+ nodeType?: 'subscription' | 'resourceGroup' | 'provider' | 'service' | 'resource' | 'deployment' | 'component';
96
+ /**
97
+ * Azure resource type (e.g., "microsoft.cognitiveservices/accounts")
98
+ * Only present on resource nodes and their children
99
+ * Helps frontend determine how to display child nodes
100
+ */
101
+ resourceType?: string;
102
+ /**
103
+ * For deployment/component nodes: identifies the parent resource
104
+ * For resource nodes: same as resourceId
105
+ */
106
+ parentResourceId?: string;
107
+ /**
108
+ * Deployment-specific metadata (only for cognitive services)
109
+ * Frontend can use this to display deployment-level details
110
+ */
111
+ deployment?: string;
112
+ model?: string;
113
+ /**
114
+ * Generic metadata for other resource types
115
+ * Allows extensibility for future resource types with sub-components
116
+ */
117
+ metadata?: Record<string, unknown>;
118
+ blendedComponents?: Array<{
119
+ componentCategory?: 'A' | 'B' | 'C' | 'D';
120
+ dataSource?: 'estimated' | 'actual' | 'blended' | 'metrics_pricing';
121
+ actualCost: number;
122
+ estimatedCost: number;
123
+ estimatedCostByMetrics?: number;
124
+ estimatedCostByMA?: number;
125
+ coverageDays: number;
126
+ coveragePercent?: number;
127
+ missingDays: number;
128
+ method: string;
129
+ estimationMethod?: string;
130
+ estimatedDays?: string[];
131
+ estimatedDaysSource?: 'metrics' | 'ma7' | 'ma14' | 'ma';
132
+ estimatedDaysBySource?: {
133
+ metrics?: string[];
134
+ ma7?: string[];
135
+ ma14?: string[];
136
+ ma?: string[];
137
+ };
138
+ pricingSource?: 'billing' | 'retail' | 'manual';
139
+ actualShare?: number;
140
+ estimatedShare?: number;
141
+ }> | {
142
+ componentCategory?: 'A' | 'B' | 'C' | 'D';
143
+ dataSource?: 'estimated' | 'actual' | 'blended' | 'metrics_pricing';
144
+ actualCost: number;
145
+ estimatedCost: number;
146
+ estimatedCostByMetrics?: number;
147
+ estimatedCostByMA?: number;
148
+ coverageDays: number;
149
+ missingDays: number;
150
+ method: string;
151
+ estimationMethod?: string;
152
+ estimatedDays?: string[];
153
+ estimatedDaysSource?: 'metrics' | 'ma7' | 'ma14' | 'ma';
154
+ estimatedDaysBySource?: {
155
+ metrics?: string[];
156
+ ma7?: string[];
157
+ ma14?: string[];
158
+ ma?: string[];
159
+ };
160
+ actualShare?: number;
161
+ estimatedShare?: number;
162
+ };
163
+ children?: EstimationTreeNode[];
27
164
  }
28
165
  export interface DecompositionTreeEntry {
166
+ /** e.g., "2025-01" for calendar month, "2025-01-01_2025-01-31" for billing period */
29
167
  period: string;
30
168
  startDate: string;
31
169
  endDate: string;
@@ -35,4 +173,84 @@ export interface DecompositionTreeSummary {
35
173
  entries: DecompositionTreeEntry[];
36
174
  lastUpdated: string;
37
175
  }
176
+ /** Type of change detected in cost analysis */
177
+ export type ChangeType = 'increase' | 'decrease' | 'no_change' | 'new_resource' | 'removed_resource';
178
+ /** Specific reason types for cost changes */
179
+ export declare enum ChangeReasonType {
180
+ NEW_RESOURCE = "new_resource",
181
+ REMOVED_RESOURCE = "removed_resource",
182
+ QUANTITY_INCREASE = "quantity_increase",
183
+ QUANTITY_DECREASE = "quantity_decrease",
184
+ RATE_CHANGE = "rate_change",
185
+ SKU_CHANGE = "sku_change",
186
+ NEW_METER = "new_meter",
187
+ REMOVED_METER = "removed_meter"
188
+ }
189
+ export type BillingModifierType = 'reservation' | 'savings_plan' | 'spot' | 'promotion' | 'other';
190
+ export interface BillingModifierDetail {
191
+ type: BillingModifierType;
192
+ name?: string;
193
+ coverageHours?: number;
194
+ coveragePercent?: number;
195
+ previousCoveragePercent?: number;
196
+ coveragePercentDelta?: number;
197
+ notes?: string;
198
+ }
199
+ export interface RateChangeContext {
200
+ previousEffectiveRate?: number;
201
+ currentEffectiveRate?: number;
202
+ previousPaidRate?: number;
203
+ currentPaidRate?: number;
204
+ totalHours?: number;
205
+ paidHours?: number;
206
+ coveredHours?: number;
207
+ previousCoveredHours?: number;
208
+ previousCoveredPercent?: number;
209
+ currentCoveredPercent?: number;
210
+ coverageDeltaPercent?: number;
211
+ modifier?: BillingModifierDetail;
212
+ }
213
+ /** Details about a specific change reason */
214
+ export interface ChangeReasonDetails {
215
+ /** The meter name (e.g., "P1 v3 App") */
216
+ meter?: string;
217
+ /** The meter category (e.g., "Azure App Service") */
218
+ meterCategory?: string;
219
+ /** The meter sub-category */
220
+ meterSubCategory?: string;
221
+ /** Previous value (could be cost, quantity, rate, or SKU name) */
222
+ oldValue?: string | number;
223
+ /** New value (could be cost, quantity, rate, or SKU name) */
224
+ newValue?: string | number;
225
+ /** Human-readable description of the change */
226
+ description: string;
227
+ /** Additional rate-change context (coverage shifts, modifier attribution, etc.) */
228
+ rateContext?: RateChangeContext;
229
+ /** Optional narrative fragments to help surface a story in the UI */
230
+ storyFragments?: string[];
231
+ }
232
+ /** A single reason explaining a cost change */
233
+ export interface ChangeReason {
234
+ /** Type of change */
235
+ type: ChangeReasonType;
236
+ /** Dollar impact of this change (can be positive or negative) */
237
+ impact: number;
238
+ /** Percentage of total change this reason represents */
239
+ impactPercent: number;
240
+ /** Detailed information about the change */
241
+ details: ChangeReasonDetails;
242
+ /** Optional narrative fragments tied to this reason */
243
+ storyFragments?: string[];
244
+ }
245
+ /** Complete analysis of cost changes for a resource */
246
+ export interface CostChangeAnalysis {
247
+ /** Overall type of change */
248
+ changeType: ChangeType;
249
+ /** List of specific reasons for the change, ordered by impact */
250
+ changeReasons: ChangeReason[];
251
+ /** Human-readable summary of the changes */
252
+ summary: string;
253
+ /** Optional narrative fragments surfaced for display */
254
+ storyFragments?: string[];
255
+ }
38
256
  //# sourceMappingURL=reports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../src/azure/reports.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;KAC/D,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../src/azure/reports.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChangeReasonType = void 0;
4
+ /** Specific reason types for cost changes */
5
+ var ChangeReasonType;
6
+ (function (ChangeReasonType) {
7
+ ChangeReasonType["NEW_RESOURCE"] = "new_resource";
8
+ ChangeReasonType["REMOVED_RESOURCE"] = "removed_resource";
9
+ ChangeReasonType["QUANTITY_INCREASE"] = "quantity_increase";
10
+ ChangeReasonType["QUANTITY_DECREASE"] = "quantity_decrease";
11
+ ChangeReasonType["RATE_CHANGE"] = "rate_change";
12
+ ChangeReasonType["SKU_CHANGE"] = "sku_change";
13
+ ChangeReasonType["NEW_METER"] = "new_meter";
14
+ ChangeReasonType["REMOVED_METER"] = "removed_meter";
15
+ })(ChangeReasonType || (exports.ChangeReasonType = ChangeReasonType = {}));
3
16
  //# sourceMappingURL=reports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../src/azure/reports.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../src/azure/reports.ts"],"names":[],"mappings":";;;AA8LA,6CAA6C;AAC7C,IAAY,gBASX;AATD,WAAY,gBAAgB;IAC1B,iDAA6B,CAAA;IAC7B,yDAAqC,CAAA;IACrC,2DAAuC,CAAA;IACvC,2DAAuC,CAAA;IACvC,+CAA2B,CAAA;IAC3B,6CAAyB,CAAA;IACzB,2CAAuB,CAAA;IACvB,mDAA+B,CAAA;AACjC,CAAC,EATW,gBAAgB,gCAAhB,gBAAgB,QAS3B"}
@@ -1,32 +1,46 @@
1
1
  export interface ResourcesByType {
2
2
  type: string;
3
3
  resources: number;
4
+ /** total spend in the current billing period */
4
5
  spendBilling?: number;
6
+ /** total amortized spend in the current billing period */
5
7
  spendBillingAmortized?: number;
8
+ /** total spend in the previous billing period */
6
9
  spendPreviousBilling?: number;
7
10
  spendPreviousBillingAmortized?: number;
11
+ /** total spend over the last 30 days */
8
12
  spend30Days?: number;
9
13
  spend30DaysAmortized?: number;
14
+ /** total spend over the previous 30 days */
10
15
  spendPrevious30Days?: number;
11
16
  spendPrevious30DaysAmortized?: number;
17
+ /** total spend over the last 7 days */
12
18
  spend7Days?: number;
13
19
  spend7DaysAmortized?: number;
20
+ /** total spend over the previous 7 days */
14
21
  spendPrevious7Days?: number;
15
22
  spendPrevious7DaysAmortized?: number;
16
23
  }
17
24
  export interface ResourceByLocation {
18
25
  location: string;
19
26
  resources: number;
27
+ /** total spend in the current billing period */
20
28
  spendBilling?: number;
29
+ /** total amortized spend in the current billing period */
21
30
  spendBillingAmortized?: number;
31
+ /** total spend in the previous billing period */
22
32
  spendPreviousBilling?: number;
23
33
  spendPreviousBillingAmortized?: number;
34
+ /** total spend over the last 30 days */
24
35
  spend30Days?: number;
25
36
  spend30DaysAmortized?: number;
37
+ /** total spend over the previous 30 days */
26
38
  spendPrevious30Days?: number;
27
39
  spendPrevious30DaysAmortized?: number;
40
+ /** total spend over the last 7 days */
28
41
  spend7Days?: number;
29
42
  spend7DaysAmortized?: number;
43
+ /** total spend over the previous 7 days */
30
44
  spendPrevious7Days?: number;
31
45
  spendPrevious7DaysAmortized?: number;
32
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/azure/resources.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/azure/resources.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iDAAiD;IACjD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iDAAiD;IACjD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}