@spottoai/types-package 1.0.2-beta.27 → 1.0.2-beta.271

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 (261) hide show
  1. package/LICENSE +18 -40
  2. package/README.md +4 -13
  3. package/dist/accounts/accounts.d.ts +426 -2
  4. package/dist/accounts/accounts.d.ts.map +1 -1
  5. package/dist/accounts/accounts.js +123 -0
  6. package/dist/accounts/accounts.js.map +1 -1
  7. package/dist/accounts/azureSpSetup.d.ts +297 -0
  8. package/dist/accounts/azureSpSetup.d.ts.map +1 -0
  9. package/dist/accounts/azureSpSetup.js +3 -0
  10. package/dist/accounts/azureSpSetup.js.map +1 -0
  11. package/dist/accounts/index.d.ts +3 -0
  12. package/dist/accounts/index.d.ts.map +1 -1
  13. package/dist/accounts/index.js +3 -0
  14. package/dist/accounts/index.js.map +1 -1
  15. package/dist/accounts/readPermissions.d.ts +64 -0
  16. package/dist/accounts/readPermissions.d.ts.map +1 -0
  17. package/dist/accounts/readPermissions.js +148 -0
  18. package/dist/accounts/readPermissions.js.map +1 -0
  19. package/dist/accounts/validation.d.ts +91 -0
  20. package/dist/accounts/validation.d.ts.map +1 -0
  21. package/dist/accounts/validation.js +3 -0
  22. package/dist/accounts/validation.js.map +1 -0
  23. package/dist/accounts/writePermissions.d.ts +34 -0
  24. package/dist/accounts/writePermissions.d.ts.map +1 -0
  25. package/dist/accounts/writePermissions.js +37 -0
  26. package/dist/accounts/writePermissions.js.map +1 -0
  27. package/dist/ai/index.d.ts +994 -9
  28. package/dist/ai/index.d.ts.map +1 -1
  29. package/dist/ai/index.js +1 -1
  30. package/dist/ai/index.js.map +1 -1
  31. package/dist/azure/activityLogs.d.ts +65 -0
  32. package/dist/azure/activityLogs.d.ts.map +1 -0
  33. package/dist/azure/activityLogs.js +6 -0
  34. package/dist/azure/activityLogs.js.map +1 -0
  35. package/dist/azure/advisorScore.d.ts +39 -0
  36. package/dist/azure/advisorScore.d.ts.map +1 -0
  37. package/dist/azure/advisorScore.js +3 -0
  38. package/dist/azure/advisorScore.js.map +1 -0
  39. package/dist/azure/benefits.d.ts +137 -0
  40. package/dist/azure/benefits.d.ts.map +1 -0
  41. package/dist/azure/benefits.js +3 -0
  42. package/dist/azure/benefits.js.map +1 -0
  43. package/dist/azure/billingPlots.d.ts +249 -0
  44. package/dist/azure/billingPlots.d.ts.map +1 -0
  45. package/dist/azure/billingPlots.js +6 -0
  46. package/dist/azure/billingPlots.js.map +1 -0
  47. package/dist/azure/budgets.d.ts +4 -0
  48. package/dist/azure/budgets.d.ts.map +1 -1
  49. package/dist/azure/commitmentsPlanning.d.ts +586 -0
  50. package/dist/azure/commitmentsPlanning.d.ts.map +1 -0
  51. package/dist/azure/commitmentsPlanning.js +3 -0
  52. package/dist/azure/commitmentsPlanning.js.map +1 -0
  53. package/dist/azure/common.d.ts +44 -0
  54. package/dist/azure/common.d.ts.map +1 -1
  55. package/dist/azure/configs.d.ts +75 -2
  56. package/dist/azure/configs.d.ts.map +1 -1
  57. package/dist/azure/costEstimation.d.ts +78 -0
  58. package/dist/azure/costEstimation.d.ts.map +1 -0
  59. package/dist/azure/costEstimation.js +3 -0
  60. package/dist/azure/costEstimation.js.map +1 -0
  61. package/dist/azure/governance.d.ts +826 -0
  62. package/dist/azure/governance.d.ts.map +1 -0
  63. package/dist/azure/governance.js +14 -0
  64. package/dist/azure/governance.js.map +1 -0
  65. package/dist/azure/metrics.d.ts +81 -4
  66. package/dist/azure/metrics.d.ts.map +1 -1
  67. package/dist/azure/payloads.d.ts +292 -1
  68. package/dist/azure/payloads.d.ts.map +1 -1
  69. package/dist/azure/portalArtifacts.d.ts +6 -0
  70. package/dist/azure/portalArtifacts.d.ts.map +1 -0
  71. package/dist/azure/portalArtifacts.js +5 -0
  72. package/dist/azure/portalArtifacts.js.map +1 -0
  73. package/dist/azure/prices.d.ts +177 -0
  74. package/dist/azure/prices.d.ts.map +1 -1
  75. package/dist/azure/publicIpAddresses.d.ts +171 -0
  76. package/dist/azure/publicIpAddresses.d.ts.map +1 -0
  77. package/dist/azure/publicIpAddresses.js +6 -0
  78. package/dist/azure/publicIpAddresses.js.map +1 -0
  79. package/dist/azure/recommendationAudit.d.ts +113 -0
  80. package/dist/azure/recommendationAudit.d.ts.map +1 -0
  81. package/dist/azure/recommendationAudit.js +10 -0
  82. package/dist/azure/recommendationAudit.js.map +1 -0
  83. package/dist/azure/recommendationState.d.ts +93 -4
  84. package/dist/azure/recommendationState.d.ts.map +1 -1
  85. package/dist/azure/recommendationWorkflow.d.ts +124 -0
  86. package/dist/azure/recommendationWorkflow.d.ts.map +1 -0
  87. package/dist/azure/recommendationWorkflow.js +15 -0
  88. package/dist/azure/recommendationWorkflow.js.map +1 -0
  89. package/dist/azure/recommendations.d.ts +539 -7
  90. package/dist/azure/recommendations.d.ts.map +1 -1
  91. package/dist/azure/recommendations.js.map +1 -1
  92. package/dist/azure/relationships.d.ts +193 -0
  93. package/dist/azure/relationships.d.ts.map +1 -0
  94. package/dist/azure/relationships.js +6 -0
  95. package/dist/azure/relationships.js.map +1 -0
  96. package/dist/azure/reports.d.ts +279 -1
  97. package/dist/azure/reports.d.ts.map +1 -1
  98. package/dist/azure/reports.js +13 -0
  99. package/dist/azure/reports.js.map +1 -1
  100. package/dist/azure/resourceHealth.d.ts +264 -0
  101. package/dist/azure/resourceHealth.d.ts.map +1 -0
  102. package/dist/azure/resourceHealth.js +16 -0
  103. package/dist/azure/resourceHealth.js.map +1 -0
  104. package/dist/azure/resources.d.ts +80 -0
  105. package/dist/azure/resources.d.ts.map +1 -1
  106. package/dist/azure/reviewChecklist.d.ts +139 -0
  107. package/dist/azure/reviewChecklist.d.ts.map +1 -0
  108. package/dist/azure/reviewChecklist.js +3 -0
  109. package/dist/azure/reviewChecklist.js.map +1 -0
  110. package/dist/azure/security.d.ts +15 -1
  111. package/dist/azure/security.d.ts.map +1 -1
  112. package/dist/azure/serviceRetirement.d.ts +28 -0
  113. package/dist/azure/serviceRetirement.d.ts.map +1 -0
  114. package/dist/azure/serviceRetirement.js +3 -0
  115. package/dist/azure/serviceRetirement.js.map +1 -0
  116. package/dist/azure/serviceRetirementState.d.ts +22 -0
  117. package/dist/azure/serviceRetirementState.d.ts.map +1 -0
  118. package/dist/azure/serviceRetirementState.js +3 -0
  119. package/dist/azure/serviceRetirementState.js.map +1 -0
  120. package/dist/azure/storage-inventory.d.ts +241 -0
  121. package/dist/azure/storage-inventory.d.ts.map +1 -0
  122. package/dist/azure/storage-inventory.js +3 -0
  123. package/dist/azure/storage-inventory.js.map +1 -0
  124. package/dist/azure/subscriptions.d.ts +46 -15
  125. package/dist/azure/subscriptions.d.ts.map +1 -1
  126. package/dist/azure/views.d.ts +543 -6
  127. package/dist/azure/views.d.ts.map +1 -1
  128. package/dist/common/index.d.ts +1 -0
  129. package/dist/common/index.d.ts.map +1 -1
  130. package/dist/common/index.js +1 -0
  131. package/dist/common/index.js.map +1 -1
  132. package/dist/common/pagination.d.ts +3 -0
  133. package/dist/common/pagination.d.ts.map +1 -1
  134. package/dist/common/provider.d.ts +9 -0
  135. package/dist/common/provider.d.ts.map +1 -0
  136. package/dist/common/provider.js +9 -0
  137. package/dist/common/provider.js.map +1 -0
  138. package/dist/company/billingAccount.d.ts +30 -0
  139. package/dist/company/billingAccount.d.ts.map +1 -0
  140. package/dist/company/billingAccount.js +3 -0
  141. package/dist/company/billingAccount.js.map +1 -0
  142. package/dist/company/company.d.ts +60 -1
  143. package/dist/company/company.d.ts.map +1 -1
  144. package/dist/company/companyHierarchy.d.ts +53 -0
  145. package/dist/company/companyHierarchy.d.ts.map +1 -0
  146. package/dist/company/companyHierarchy.js +3 -0
  147. package/dist/company/companyHierarchy.js.map +1 -0
  148. package/dist/company/index.d.ts +2 -0
  149. package/dist/company/index.d.ts.map +1 -1
  150. package/dist/company/index.js +2 -0
  151. package/dist/company/index.js.map +1 -1
  152. package/dist/company/notification.d.ts +34 -1
  153. package/dist/company/notification.d.ts.map +1 -1
  154. package/dist/company/notification.js +27 -12
  155. package/dist/company/notification.js.map +1 -1
  156. package/dist/company/survey.d.ts +3 -0
  157. package/dist/company/survey.d.ts.map +1 -1
  158. package/dist/events/alertDefinitionRun.d.ts +23 -0
  159. package/dist/events/alertDefinitionRun.d.ts.map +1 -0
  160. package/dist/events/alertDefinitionRun.js +3 -0
  161. package/dist/events/alertDefinitionRun.js.map +1 -0
  162. package/dist/events/baseAlert.d.ts +130 -0
  163. package/dist/events/baseAlert.d.ts.map +1 -0
  164. package/dist/events/baseAlert.js +3 -0
  165. package/dist/events/baseAlert.js.map +1 -0
  166. package/dist/events/cost.d.ts +361 -0
  167. package/dist/events/cost.d.ts.map +1 -0
  168. package/dist/events/cost.js +3 -0
  169. package/dist/events/cost.js.map +1 -0
  170. package/dist/events/costAnomalies.d.ts +47 -0
  171. package/dist/events/costAnomalies.d.ts.map +1 -0
  172. package/dist/events/costAnomalies.js +3 -0
  173. package/dist/events/costAnomalies.js.map +1 -0
  174. package/dist/events/costViews.d.ts +23 -0
  175. package/dist/events/costViews.d.ts.map +1 -0
  176. package/dist/events/costViews.js +3 -0
  177. package/dist/events/costViews.js.map +1 -0
  178. package/dist/events/eventStatus.d.ts +67 -0
  179. package/dist/events/eventStatus.d.ts.map +1 -0
  180. package/dist/events/eventStatus.js +3 -0
  181. package/dist/events/eventStatus.js.map +1 -0
  182. package/dist/events/index.d.ts +7 -0
  183. package/dist/events/index.d.ts.map +1 -0
  184. package/dist/events/index.js +23 -0
  185. package/dist/events/index.js.map +1 -0
  186. package/dist/features-and-permissions/access.d.ts +137 -0
  187. package/dist/features-and-permissions/access.d.ts.map +1 -0
  188. package/dist/features-and-permissions/access.js +3 -0
  189. package/dist/features-and-permissions/access.js.map +1 -0
  190. package/dist/features-and-permissions/index.d.ts +2 -0
  191. package/dist/features-and-permissions/index.d.ts.map +1 -0
  192. package/dist/features-and-permissions/index.js +18 -0
  193. package/dist/features-and-permissions/index.js.map +1 -0
  194. package/dist/feedbacks/feedback.d.ts +9 -0
  195. package/dist/feedbacks/feedback.d.ts.map +1 -1
  196. package/dist/identity/apikey.d.ts +84 -0
  197. package/dist/identity/apikey.d.ts.map +1 -0
  198. package/dist/identity/apikey.js +3 -0
  199. package/dist/identity/apikey.js.map +1 -0
  200. package/dist/identity/index.d.ts +2 -0
  201. package/dist/identity/index.d.ts.map +1 -0
  202. package/dist/identity/index.js +18 -0
  203. package/dist/identity/index.js.map +1 -0
  204. package/dist/index.d.ts +24 -0
  205. package/dist/index.d.ts.map +1 -1
  206. package/dist/index.js +24 -1
  207. package/dist/index.js.map +1 -1
  208. package/dist/index.vite.d.ts +44 -0
  209. package/dist/index.vite.d.ts.map +1 -0
  210. package/dist/index.vite.js +60 -0
  211. package/dist/index.vite.js.map +1 -0
  212. package/dist/integrations/autotask.d.ts +90 -0
  213. package/dist/integrations/autotask.d.ts.map +1 -0
  214. package/dist/integrations/autotask.js +3 -0
  215. package/dist/integrations/autotask.js.map +1 -0
  216. package/dist/integrations/azureDevOps.d.ts +130 -0
  217. package/dist/integrations/azureDevOps.d.ts.map +1 -0
  218. package/dist/integrations/azureDevOps.js +3 -0
  219. package/dist/integrations/azureDevOps.js.map +1 -0
  220. package/dist/integrations/github.d.ts +96 -0
  221. package/dist/integrations/github.d.ts.map +1 -0
  222. package/dist/integrations/github.js +3 -0
  223. package/dist/integrations/github.js.map +1 -0
  224. package/dist/integrations/halo.d.ts +76 -0
  225. package/dist/integrations/halo.d.ts.map +1 -0
  226. package/dist/integrations/halo.js +3 -0
  227. package/dist/integrations/halo.js.map +1 -0
  228. package/dist/integrations/index.d.ts +6 -0
  229. package/dist/integrations/index.d.ts.map +1 -0
  230. package/dist/integrations/index.js +22 -0
  231. package/dist/integrations/index.js.map +1 -0
  232. package/dist/integrations/integrationTickets.d.ts +67 -0
  233. package/dist/integrations/integrationTickets.d.ts.map +1 -0
  234. package/dist/integrations/integrationTickets.js +3 -0
  235. package/dist/integrations/integrationTickets.js.map +1 -0
  236. package/dist/scheduler/index.d.ts +2 -0
  237. package/dist/scheduler/index.d.ts.map +1 -0
  238. package/dist/scheduler/index.js +18 -0
  239. package/dist/scheduler/index.js.map +1 -0
  240. package/dist/scheduler/scheduler.d.ts +257 -0
  241. package/dist/scheduler/scheduler.d.ts.map +1 -0
  242. package/dist/scheduler/scheduler.js +3 -0
  243. package/dist/scheduler/scheduler.js.map +1 -0
  244. package/dist/tags/index.d.ts +2 -0
  245. package/dist/tags/index.d.ts.map +1 -0
  246. package/dist/tags/index.js +18 -0
  247. package/dist/tags/index.js.map +1 -0
  248. package/dist/tags/tags.d.ts +37 -0
  249. package/dist/tags/tags.d.ts.map +1 -0
  250. package/dist/tags/tags.js +10 -0
  251. package/dist/tags/tags.js.map +1 -0
  252. package/dist/unknown/services.d.ts +12 -0
  253. package/dist/unknown/services.d.ts.map +1 -0
  254. package/dist/unknown/services.js +3 -0
  255. package/dist/unknown/services.js.map +1 -0
  256. package/dist/users/companyUser.d.ts +6 -0
  257. package/dist/users/companyUser.d.ts.map +1 -1
  258. package/dist/users/companyUser.js.map +1 -1
  259. package/dist/users/user.d.ts +16 -1
  260. package/dist/users/user.d.ts.map +1 -1
  261. package/package.json +3 -3
@@ -1,5 +1,14 @@
1
- import { Comment, RecommendationHistory } from './recommendationState';
2
- import { SecurityImpact } from './security';
1
+ import type { Comment, CommentScope, RecommendationHistory } from './recommendationState';
2
+ import type { ProviderScope } from '../common/provider';
3
+ import { SecurityAssessmentStatus, SecurityImpact, SubscriptionSecurityStatus } from './security';
4
+ import { SubscriptionSummaryLite } from './subscriptions';
5
+ import { CostSavingsAggregationPolicy, CostSavingsSummary, SavingsPotential, VmPricePerformanceInsights } from './views';
6
+ import type { HaloRoutingOverrides } from '../integrations/halo';
7
+ import type { AutotaskShareOverrides } from '../integrations/autotask';
8
+ import type { AzureDevOpsShareOverrides } from '../integrations/azureDevOps';
9
+ import type { GitHubShareOverrides } from '../integrations/github';
10
+ import type { Tags } from '../tags';
11
+ import type { AzurePortalVersionedArtifact } from './portalArtifacts';
3
12
  export declare enum RecommendationCategory {
4
13
  Cost = "Cost",
5
14
  Performance = "Performance",
@@ -9,14 +18,211 @@ export declare enum RecommendationCategory {
9
18
  OperationalExcellence = "OperationalExcellence",
10
19
  OperationalExcellenceAlternative = "Operational Excellence"
11
20
  }
21
+ export type RecommendationPriorityTier = 'must_do' | 'normal';
22
+ export type EffortEstimateProfileName = 'clickops' | 'devops' | 'enterprise';
23
+ export interface RecommendationBaseScores {
24
+ cost_optimization: number;
25
+ security: number;
26
+ performance: number;
27
+ reliability: number;
28
+ compliance: number;
29
+ operational_excellence: number;
30
+ }
31
+ export interface RecommendationEffortEstimateBreakdown {
32
+ discovery: number;
33
+ implementation: number;
34
+ validation: number;
35
+ rollbackPlanning: number;
36
+ coordination: number;
37
+ }
38
+ export interface RecommendationEffortEstimateProfile {
39
+ effortHours: number;
40
+ breakdown: RecommendationEffortEstimateBreakdown;
41
+ reason: string;
42
+ }
43
+ export interface RecommendationEffortEstimateProfiles {
44
+ clickops: RecommendationEffortEstimateProfile;
45
+ devops: RecommendationEffortEstimateProfile;
46
+ enterprise: RecommendationEffortEstimateProfile;
47
+ }
48
+ export interface RecommendationBulkEffortEstimateProfile {
49
+ setupHours: number;
50
+ perResourceHours: number;
51
+ validationHours: number;
52
+ }
53
+ export interface RecommendationBulkEffortEstimateProfiles {
54
+ clickops: RecommendationBulkEffortEstimateProfile;
55
+ devops: RecommendationBulkEffortEstimateProfile;
56
+ enterprise: RecommendationBulkEffortEstimateProfile;
57
+ }
58
+ export interface RecommendationBulkEffortEstimates {
59
+ supported: boolean;
60
+ threshold: number;
61
+ profiles: RecommendationBulkEffortEstimateProfiles;
62
+ }
63
+ export interface RecommendationEffortEstimates {
64
+ profiles: RecommendationEffortEstimateProfiles;
65
+ bulk: RecommendationBulkEffortEstimates;
66
+ overridden?: boolean;
67
+ lastUpdatedAt?: string;
68
+ notes?: string;
69
+ }
70
+ export interface RecommendationActionImpactAssessment {
71
+ downtime: string;
72
+ dataLoss: string;
73
+ accessImpact: string;
74
+ dependencies: string;
75
+ }
76
+ export type RecommendationActionRiskLevel = 'low' | 'medium' | 'high';
77
+ export interface RecommendationActionRollback {
78
+ supported: boolean;
79
+ description: string;
80
+ limitations: string[];
81
+ }
82
+ export interface RecommendationActionCheck {
83
+ label: string;
84
+ description: string;
85
+ }
86
+ export interface RecommendationActionLink {
87
+ label: string;
88
+ url: string;
89
+ }
90
+ export interface RecommendationActionPostValidation {
91
+ label: string;
92
+ description: string;
93
+ expectedResult: string;
94
+ links?: RecommendationActionLink[];
95
+ }
96
+ export type RecommendationActionPermissionProvider = 'azure-rbac';
97
+ export type RecommendationActionPermissionScope = 'targetResource' | 'resourceGroup' | 'subscription' | 'tenant';
98
+ export interface RecommendationActionPermissionRequirement {
99
+ label: string;
100
+ name: string;
101
+ reason: string;
102
+ links?: RecommendationActionLink[];
103
+ }
104
+ export interface RecommendationActionLeastPrivilegeRole {
105
+ label: string;
106
+ description: string;
107
+ }
108
+ export interface RecommendationActionSuggestedRole {
109
+ label: string;
110
+ roleName: string;
111
+ roleDefinitionId?: string;
112
+ reason: string;
113
+ }
114
+ export interface RecommendationActionRequiredPermissions {
115
+ provider: RecommendationActionPermissionProvider;
116
+ scope: RecommendationActionPermissionScope;
117
+ actions: RecommendationActionPermissionRequirement[];
118
+ dataActions: RecommendationActionPermissionRequirement[];
119
+ leastPrivilegeRole?: RecommendationActionLeastPrivilegeRole;
120
+ suggestedRoles?: RecommendationActionSuggestedRole[];
121
+ }
122
+ export interface RecommendationActionDefinition {
123
+ verified: boolean;
124
+ actionDefinitionId?: string;
125
+ title: string;
126
+ description: string;
127
+ estimatedDuration: string;
128
+ riskLevel: RecommendationActionRiskLevel;
129
+ requiredPermissions?: RecommendationActionRequiredPermissions;
130
+ impactAssessment: RecommendationActionImpactAssessment;
131
+ rollback: RecommendationActionRollback;
132
+ humanPreChecks: RecommendationActionCheck[];
133
+ postValidation: RecommendationActionPostValidation[];
134
+ }
135
+ export type RecommendationActionMetadata = RecommendationActionDefinition;
136
+ export type RecommendationImplementActionImpactAssessment = RecommendationActionImpactAssessment;
137
+ export type RecommendationImplementAction = RecommendationActionMetadata;
12
138
  export interface RecommendationResources {
13
139
  recommendation: CustomAzureRecommendation;
14
140
  resourceIds: string[];
15
141
  }
142
+ export type HddSsdMigrationTargetTier = 'standardSsd' | 'premiumSsd';
143
+ export type HddDiskPricingRedundancy = 'LRS' | 'ZRS';
144
+ export interface HddOsRetirementCurrentDiskPricing {
145
+ storageTier: 'standardHdd';
146
+ skuName: string;
147
+ pricingRedundancy?: HddDiskPricingRedundancy;
148
+ sizeGiB: number;
149
+ monthlyActual: number;
150
+ monthlyRetail: number;
151
+ }
152
+ export interface HddOsRetirementTargetDiskPricing {
153
+ storageTier: HddSsdMigrationTargetTier;
154
+ skuName: string;
155
+ pricingRedundancy?: HddDiskPricingRedundancy;
156
+ sizeGiB: number;
157
+ monthlyRetail: number;
158
+ }
159
+ export interface HddOsRetirementDiskRenderItem {
160
+ resourceId: string;
161
+ resourceName: string;
162
+ resourceType: string;
163
+ /** Canonical location key used for pricing lookup, e.g. "westus". */
164
+ pricingLocation?: string;
165
+ current: HddOsRetirementCurrentDiskPricing;
166
+ standardSsd: HddOsRetirementTargetDiskPricing & {
167
+ storageTier: 'standardSsd';
168
+ };
169
+ premiumSsd: HddOsRetirementTargetDiskPricing & {
170
+ storageTier: 'premiumSsd';
171
+ };
172
+ defaultSelection?: HddSsdMigrationTargetTier;
173
+ }
174
+ export interface HddOsRetirementRenderStrategyPayload {
175
+ retirementDate: string;
176
+ retirementLink: string;
177
+ currencyCode?: string;
178
+ currencySymbol?: string;
179
+ defaultTargetTier?: HddSsdMigrationTargetTier;
180
+ impactedDiskCount: number;
181
+ currentMonthlyActual: number;
182
+ currentMonthlyRetail: number;
183
+ standardSsdMonthlyRetail: number;
184
+ premiumSsdMonthlyRetail: number;
185
+ standardSsdMonthlyDelta: number;
186
+ premiumSsdMonthlyDelta: number;
187
+ disks: HddOsRetirementDiskRenderItem[];
188
+ }
189
+ export type RecommendationKnownRenderData = HddOsRetirementRenderStrategyPayload | VmPricePerformanceInsights;
190
+ export type AnyRecommendationRenderData = Record<string, unknown>;
191
+ export type RecommendationDecisionRelationshipKind = 'review_first' | 'alternative' | 'trade_off' | 'follow_up' | 'unlocks' | 'conflicts_with';
192
+ export type RecommendationDecisionContextRole = 'primary' | 'alternative' | 'trade_off' | 'follow_up' | 'supporting';
193
+ export type RecommendationDecisionReviewPriority = 'review_first' | 'normal';
194
+ /**
195
+ * Resource-specific relationship from one recommendation to another.
196
+ * Used by UIs to explain alternatives and follow-ups without changing recommendation state.
197
+ */
198
+ export interface RecommendationDecisionLink {
199
+ recommendationId: string;
200
+ kind: RecommendationDecisionRelationshipKind;
201
+ label?: string;
202
+ reason?: string;
203
+ condition?: string;
204
+ }
205
+ /**
206
+ * Resource-specific decision context for an existing recommendation.
207
+ * The recommendation remains independently visible and actionable by recommendationId.
208
+ */
209
+ export interface RecommendationDecisionContext {
210
+ recommendationId: string;
211
+ role?: RecommendationDecisionContextRole;
212
+ reviewPriority?: RecommendationDecisionReviewPriority;
213
+ groupId?: string;
214
+ title?: string;
215
+ explanation?: string;
216
+ links: RecommendationDecisionLink[];
217
+ }
16
218
  export interface Recommendation {
219
+ /** Business identity of a recommendation record (routing/state/sharing/dedupe). */
17
220
  id: string;
18
221
  name: string;
19
222
  category: RecommendationCategory;
223
+ subCategory?: string;
224
+ aggregateDescription?: string;
225
+ /** custom */
20
226
  type?: string;
21
227
  description?: string;
22
228
  remediation?: string;
@@ -27,32 +233,88 @@ export interface Recommendation {
27
233
  url: string;
28
234
  }[];
29
235
  considerations?: string;
236
+ currency?: string;
30
237
  potentialBenefits?: string;
238
+ potentialMonthlySavings?: number;
31
239
  effort?: string;
32
240
  effortReason?: string;
241
+ /** e.g. 10 hours */
242
+ effortHours?: number;
243
+ /** Detailed implementation estimates by delivery profile and bulk rollout mode. */
244
+ effortEstimates?: RecommendationEffortEstimates;
33
245
  risk?: string;
34
246
  riskReason?: string;
247
+ severity?: string;
248
+ /** Could deprecate later */
35
249
  costImpact?: number;
36
250
  costImpactReason?: string;
37
- costImpactDetails?: CostImpactDetails;
251
+ /*** costImpactDetails is deprecated **/
38
252
  performanceImpact?: number;
39
253
  performanceImpactReason?: string;
40
254
  confidencePercentage?: number;
41
255
  confidenceReason?: string;
256
+ /** array of resources that have this recommendation */
42
257
  resources?: ResourceReference[];
258
+ /** Compact resource references for resource-specific detail payloads. */
259
+ resourceIds?: string[];
260
+ /** Total affected resources when resourceIds is trimmed or sampled. */
261
+ resourcesCount?: number;
262
+ /** only for security recommendations */
43
263
  securityImpactDetails?: SecurityImpact;
264
+ /** whether the recommendation has been resolved or not, eg, Security Assessment is "Healthy" should be true */
44
265
  resolved?: boolean;
45
- subcategory?: string;
266
+ securityAssessmentStatuses?: SecurityAssessmentStatus[];
267
+ /** Deprecated fields, kept for compatibility */
46
268
  solution?: string;
47
269
  source?: string;
48
270
  service?: string;
271
+ /**
272
+ * Stored as string to allow JSON persistence.
273
+ * Uses a different name to avoid conflict with RecommendationWithState.createdAt.
274
+ */
49
275
  createdTime?: string;
276
+ /** Avoids conflict with RecommendationWithState.updatedAt */
50
277
  lastUpdatedTime?: string;
278
+ /** Business story properties */
279
+ title?: string;
280
+ headline?: string;
281
+ bottomLine?: string;
282
+ plainSummary?: string;
283
+ quickSteps?: string[];
284
+ businessOwner?: string;
285
+ keyConstraint?: string;
286
+ validationEvidence?: string;
287
+ read?: boolean;
288
+ /** Technical playbook (only for multi-step implementations) */
289
+ technicalPlaybook?: string;
290
+ /** Static recommendation scoring metadata (library-level). */
291
+ baseScores?: RecommendationBaseScores;
292
+ overallBaseScore?: number;
293
+ overallBaseReason?: string;
294
+ priorityTier?: RecommendationPriorityTier;
295
+ /** Runtime scoring metadata (per company/tenant). */
296
+ adjustedScore?: number;
297
+ objectiveMultiplier?: number;
298
+ finalScore?: number;
299
+ /** UI display-only normalized score (0-100). */
300
+ normalizedScore?: number;
301
+ /** Cross-feature linkage IDs used for deep links and related views. */
302
+ linkingIds?: RecommendationLinkingIds;
303
+ /** Optional UI render payload consumed by recommendation-specific components. */
304
+ renderData?: RecommendationKnownRenderData | AnyRecommendationRenderData;
305
+ /** Optional action definition for implement-capable recommendations. */
306
+ action?: RecommendationActionMetadata;
51
307
  }
308
+ export interface RecommendationLinkingIds {
309
+ serviceRetirementIds?: string[];
310
+ }
311
+ /** Deprecated **/
52
312
  export interface CostImpactDetails {
313
+ /** e.g. "Saving Plan", "Reserved Instance", "Windows migration to Linux" */
53
314
  name: string;
54
315
  monthlySavings?: number;
55
316
  currentSpend?: number;
317
+ /** e.g. 20 for 20% */
56
318
  savingPercentage?: number;
57
319
  minMonthlySavings?: number;
58
320
  maxMonthlySavings?: number;
@@ -66,17 +328,71 @@ export interface RecommendationSummary {
66
328
  }
67
329
  export interface RecommendationWithResources {
68
330
  recommendation: Recommendation;
331
+ /** Total affected resources when the resources array is trimmed or sampled. */
332
+ resourcesCount?: number;
69
333
  resources: RecommendationResource[];
334
+ savings?: SavingsPotential;
335
+ /** Canonical resource ID that owns this recommendation savings amount for aggregation */
336
+ savingsOwnerResourceId?: string;
337
+ /** Resource IDs that may display this recommendation savings amount as context */
338
+ savingsDisplayResourceIds?: string[];
339
+ /** Billable component key used with the owner ID to prevent double counting */
340
+ billableComponentKey?: string;
341
+ /** Aggregation rule for this recommendation savings amount */
342
+ savingsAggregationPolicy?: CostSavingsAggregationPolicy;
343
+ }
344
+ /**
345
+ * Contextual links from one recommendation row to other resources.
346
+ * Used to model "this disk belongs to that VM" style associations
347
+ * without changing which resource owns savings totals.
348
+ */
349
+ export interface RecommendationResourceAssociation {
350
+ id: string;
351
+ name?: string;
352
+ type?: string;
353
+ relationship?: ResourceRelationship;
70
354
  }
71
355
  export interface RecommendationResource {
72
356
  id: string;
73
357
  name: string;
74
358
  type: string;
359
+ resourceGroup?: string;
360
+ location?: string;
361
+ subscriptionId?: string;
362
+ subscriptionName?: string;
363
+ tags?: Record<string, string>;
364
+ spottoTags?: Tags;
365
+ createdTime?: string;
366
+ typeInfo?: {
367
+ name: string;
368
+ icon: string;
369
+ description: string;
370
+ product: string;
371
+ aliases?: string[];
372
+ };
75
373
  spend: number;
76
374
  spendAmortized: number;
375
+ savings?: SavingsPotential;
376
+ /** Canonical resource ID that owns this resource savings amount for aggregation */
377
+ savingsOwnerResourceId?: string;
378
+ /** Resource IDs that may display this resource savings amount as context */
379
+ savingsDisplayResourceIds?: string[];
380
+ /** Billable component key used with the owner ID to prevent double counting */
381
+ billableComponentKey?: string;
382
+ /** Aggregation rule for this resource savings amount */
383
+ savingsAggregationPolicy?: CostSavingsAggregationPolicy;
384
+ currency?: string;
385
+ currencySymbol?: string;
386
+ relationship?: ResourceRelationship;
387
+ associations?: RecommendationResourceAssociation[];
77
388
  }
78
- export interface RecommendationsView {
389
+ export interface RecommendationsView extends AzurePortalVersionedArtifact {
79
390
  recommendations: RecommendationWithResources[];
391
+ securityImpactDetails?: SecurityImpact[];
392
+ subscriptionSecurityStatus?: SubscriptionSecurityStatus;
393
+ savings?: SavingsPotential;
394
+ subscription: SubscriptionSummaryLite;
395
+ costSavingsSummary?: CostSavingsSummary;
80
396
  }
81
397
  export interface ResourceId {
82
398
  id: string;
@@ -84,7 +400,20 @@ export interface ResourceId {
84
400
  export interface ResourceReference {
85
401
  id: string;
86
402
  name: string;
403
+ type?: string;
404
+ subscriptionName?: string;
405
+ savings?: SavingsPotential;
406
+ currency?: string;
407
+ currencySymbol?: string;
408
+ relationship?: ResourceRelationship;
409
+ associations?: RecommendationResourceAssociation[];
87
410
  }
411
+ export type ResourceRelationship = {
412
+ role?: 'primary' | 'related';
413
+ type?: string;
414
+ allocationId?: string;
415
+ metadata?: Record<string, string>;
416
+ };
88
417
  export interface ReliabilityRecommendation extends Recommendation {
89
418
  referenceID: string;
90
419
  resourceType: string;
@@ -92,7 +421,6 @@ export interface ReliabilityRecommendation extends Recommendation {
92
421
  service: string;
93
422
  }
94
423
  export interface CustomAzureRecommendation extends Recommendation {
95
- subcategory: string;
96
424
  service: string;
97
425
  source: string;
98
426
  fileName: string;
@@ -102,6 +430,7 @@ export interface RecommendationCollection {
102
430
  results: ResourceId[];
103
431
  }
104
432
  export interface AzureRecommendationLite {
433
+ /** e.g. Cost, Performance, Reliability, Security, Compliance, OperationalExcellence, Operational Excellence, HighAvailability */
105
434
  category: string;
106
435
  total: number;
107
436
  high: number;
@@ -109,13 +438,18 @@ export interface AzureRecommendationLite {
109
438
  low: number;
110
439
  }
111
440
  export interface RecommendationStats {
441
+ /** total number of recommendations in the subscription */
112
442
  total: number;
443
+ /** total number of high recommendations in the subscription */
113
444
  high: number;
445
+ /** total number of medium recommendations in the subscription */
114
446
  medium: number;
447
+ /** total number of low recommendations in the subscription */
115
448
  low: number;
116
449
  }
450
+ /** Recommendation with state information, name "ExtendedRecommendation" in the portal at the moment */
117
451
  export interface RecommendationWithState extends Recommendation {
118
- status?: 'Active' | 'Prioritized' | 'Postponed' | 'Dismissed' | 'Completed' | 'Archived';
452
+ status?: 'Active' | 'Prioritized' | 'Postponed' | 'Dismissed' | 'Completed' | 'Archived' | 'Implementing' | 'Implemented' | 'Failed';
119
453
  read?: boolean;
120
454
  scheduledAt?: Date;
121
455
  createdAt?: Date;
@@ -124,4 +458,202 @@ export interface RecommendationWithState extends Recommendation {
124
458
  comments?: Comment[];
125
459
  history?: RecommendationHistory[];
126
460
  }
461
+ export interface DismissRecommendationRequest extends RecommendationActionRequest {
462
+ dismissReason: string;
463
+ }
464
+ export interface ShareRecommendationRequest extends RecommendationActionRequest {
465
+ shareType: 'email' | 'slack' | 'teams' | 'jira' | 'halo' | 'connectwise' | 'autotask' | 'azuredevops' | 'github';
466
+ email?: string;
467
+ halo?: HaloRoutingOverrides;
468
+ connectwise?: ConnectWiseRoutingFields;
469
+ autotask?: AutotaskShareOverrides;
470
+ azuredevops?: AzureDevOpsShareOverrides;
471
+ github?: GitHubShareOverrides;
472
+ }
473
+ export type RecommendationActionTargetSelection = 'selectedResources' | 'allAffectedResources';
474
+ export interface RecommendationActionRequest extends ProviderScope {
475
+ /** `providerScope` maps to subscription identity for Azure providers. */
476
+ scope?: CommentScope;
477
+ /** Optional cloud-account identity enriched by trusted server-side callers before queue publish. */
478
+ cloudAccountId?: string;
479
+ /** Optional user-provided reason for queue-backed actions such as implement. */
480
+ reason?: string;
481
+ /** Optional action permission metadata passed into API preflight before queue publish. */
482
+ requiredPermissions?: RecommendationActionRequiredPermissions;
483
+ recommendationId: string;
484
+ recommendationTitle?: string;
485
+ resourceIds: string[];
486
+ /** Whether resourceIds are the exact selected targets or a sampled display subset for an all-affected action. */
487
+ targetSelection?: RecommendationActionTargetSelection;
488
+ resourceGroupName?: string;
489
+ companyId: string;
490
+ byUserId?: string;
491
+ byUserDisplayName?: string;
492
+ }
493
+ export interface RecommendationActionResponse {
494
+ success: boolean;
495
+ message?: string;
496
+ affectedResources?: string[];
497
+ eventId?: string;
498
+ }
499
+ export type RecommendationActionPermissionFailureStatus = 'missing' | 'unknown' | 'unsupported';
500
+ export interface RecommendationActionPermissionFailure {
501
+ resourceId: string;
502
+ azureScope: string;
503
+ status: RecommendationActionPermissionFailureStatus;
504
+ message: string;
505
+ missingActions: string[];
506
+ missingDataActions: string[];
507
+ }
508
+ export interface RecommendationActionPermissionErrorResponse {
509
+ error: 'AzurePermissionMissing';
510
+ message: string;
511
+ action: 'implement';
512
+ providerName: string;
513
+ providerScopeId: string;
514
+ failures: RecommendationActionPermissionFailure[];
515
+ }
516
+ export interface ServiceRetirementRecommendation {
517
+ Id: string;
518
+ ServiceName: string;
519
+ RetiringFeature: string;
520
+ RetirementDate: string;
521
+ Link: string;
522
+ effort: string;
523
+ effortHours: number;
524
+ effortReason: string;
525
+ risk: string;
526
+ riskReason: string;
527
+ considerations: string;
528
+ confidencePercentage: number;
529
+ confidenceReason: string;
530
+ lastProcessedAt: string;
531
+ /** Related recommendation IDs for cross-navigation from retirement tracker. */
532
+ linkedRecommendationIds?: string[];
533
+ }
534
+ export interface JiraShareDetails {
535
+ projectKey?: string;
536
+ epicKey?: string;
537
+ label?: string;
538
+ }
539
+ export interface JiraIntegrationRequestBase {
540
+ siteUrl: string;
541
+ email: string;
542
+ secret?: string;
543
+ useStoredSecret?: boolean;
544
+ }
545
+ export interface JiraIntegrationTestPayload extends JiraIntegrationRequestBase {
546
+ projectKey?: string;
547
+ }
548
+ export interface JiraIntegrationEpicsPayload extends JiraIntegrationRequestBase {
549
+ projectKey: string;
550
+ maxResults?: number;
551
+ }
552
+ export interface JiraIntegrationProjectsPayload extends JiraIntegrationRequestBase {
553
+ maxResults?: number;
554
+ }
555
+ export interface JiraIntegrationLabelsPayload extends JiraIntegrationRequestBase {
556
+ projectKey: string;
557
+ maxResults?: number;
558
+ searchQuery?: string;
559
+ }
560
+ export interface JiraEntity {
561
+ id: string;
562
+ key: string;
563
+ name: string;
564
+ }
565
+ export interface JiraLabel {
566
+ name: string;
567
+ }
568
+ export interface ConnectWiseIntegrationRequestBase {
569
+ siteUrl: string;
570
+ companyId: string;
571
+ publicKey: string;
572
+ secret?: string;
573
+ useStoredSecret?: boolean;
574
+ credentialOwnerCompanyId?: string;
575
+ }
576
+ export type ConnectWiseId = string | number;
577
+ export interface ConnectWiseRoutingFields {
578
+ boardId?: ConnectWiseId;
579
+ boardName?: string;
580
+ statusId?: ConnectWiseId;
581
+ statusName?: string;
582
+ customerId?: ConnectWiseId;
583
+ customerName?: string;
584
+ projectId?: ConnectWiseId;
585
+ projectName?: string;
586
+ typeId?: ConnectWiseId;
587
+ typeName?: string;
588
+ subTypeId?: ConnectWiseId;
589
+ subTypeName?: string;
590
+ itemId?: ConnectWiseId;
591
+ itemName?: string;
592
+ priorityId?: ConnectWiseId;
593
+ priorityName?: string;
594
+ contactId?: ConnectWiseId;
595
+ contactName?: string;
596
+ agreementId?: ConnectWiseId;
597
+ agreementName?: string;
598
+ slaId?: ConnectWiseId;
599
+ slaName?: string;
600
+ source?: string;
601
+ }
602
+ export interface ConnectWiseIntegrationTestPayload extends ConnectWiseIntegrationRequestBase, ConnectWiseRoutingFields {
603
+ }
604
+ export type ConnectWiseBoardsPayload = ConnectWiseIntegrationRequestBase;
605
+ export type ConnectWiseCompaniesPayload = ConnectWiseIntegrationRequestBase;
606
+ export type ConnectWiseProjectsPayload = ConnectWiseIntegrationRequestBase;
607
+ export interface ConnectWiseStatusesPayload extends ConnectWiseIntegrationRequestBase {
608
+ boardId?: string;
609
+ boardName?: string;
610
+ }
611
+ export interface ConnectWiseTypesPayload extends ConnectWiseIntegrationRequestBase {
612
+ boardId?: string;
613
+ boardName?: string;
614
+ }
615
+ export interface ConnectWiseSubTypesPayload extends ConnectWiseIntegrationRequestBase {
616
+ boardId?: string;
617
+ boardName?: string;
618
+ typeId?: string;
619
+ typeName?: string;
620
+ }
621
+ export interface ConnectWiseItemsPayload extends ConnectWiseIntegrationRequestBase {
622
+ boardId?: string;
623
+ boardName?: string;
624
+ typeId?: string;
625
+ typeName?: string;
626
+ subTypeId?: string;
627
+ subTypeName?: string;
628
+ }
629
+ export interface ConnectWiseTypeSubTypeItemAssociationsPayload extends ConnectWiseIntegrationRequestBase {
630
+ boardId?: string;
631
+ boardName?: string;
632
+ }
633
+ export interface ConnectWisePrioritiesPayload extends ConnectWiseIntegrationRequestBase {
634
+ boardId?: string;
635
+ boardName?: string;
636
+ }
637
+ export interface ConnectWiseContactsPayload extends ConnectWiseIntegrationRequestBase {
638
+ searchQuery?: string;
639
+ }
640
+ export type ConnectWiseSourcesPayload = ConnectWiseIntegrationRequestBase;
641
+ export type ConnectWiseAgreementsPayload = ConnectWiseIntegrationRequestBase;
642
+ export type ConnectWiseSlasPayload = ConnectWiseIntegrationRequestBase;
643
+ export interface ConnectWiseEntity {
644
+ id: string | number;
645
+ name: string;
646
+ }
647
+ export interface ConnectWiseTypeSubTypeItemAssociation {
648
+ type?: ConnectWiseEntity;
649
+ subType?: ConnectWiseEntity;
650
+ item?: ConnectWiseEntity;
651
+ }
652
+ export interface ConnectWiseContact extends ConnectWiseEntity {
653
+ email?: string;
654
+ }
655
+ export interface ConnectWiseTicketMetadata extends ConnectWiseRoutingFields {
656
+ ticketId: ConnectWiseId;
657
+ ticketUrl?: string;
658
+ }
127
659
  //# sourceMappingURL=recommendations.d.ts.map