@spottoai/types-package 1.0.2-beta.29 → 1.0.2-beta.290

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 (317) hide show
  1. package/LICENSE +18 -40
  2. package/README.md +4 -13
  3. package/dist/accounts/accounts.d.ts +446 -3
  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 +76 -0
  16. package/dist/accounts/readPermissions.d.ts.map +1 -0
  17. package/dist/accounts/readPermissions.js +202 -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/assessments/artifact.d.ts +84 -0
  32. package/dist/assessments/artifact.d.ts.map +1 -0
  33. package/dist/assessments/artifact.js +3 -0
  34. package/dist/assessments/artifact.js.map +1 -0
  35. package/dist/assessments/catalogue.d.ts +53 -0
  36. package/dist/assessments/catalogue.d.ts.map +1 -0
  37. package/dist/assessments/catalogue.js +16 -0
  38. package/dist/assessments/catalogue.js.map +1 -0
  39. package/dist/assessments/common.d.ts +27 -0
  40. package/dist/assessments/common.d.ts.map +1 -0
  41. package/dist/assessments/common.js +3 -0
  42. package/dist/assessments/common.js.map +1 -0
  43. package/dist/assessments/evidence.d.ts +78 -0
  44. package/dist/assessments/evidence.d.ts.map +1 -0
  45. package/dist/assessments/evidence.js +3 -0
  46. package/dist/assessments/evidence.js.map +1 -0
  47. package/dist/assessments/export.d.ts +27 -0
  48. package/dist/assessments/export.d.ts.map +1 -0
  49. package/dist/assessments/export.js +3 -0
  50. package/dist/assessments/export.js.map +1 -0
  51. package/dist/assessments/index.d.ts +11 -0
  52. package/dist/assessments/index.d.ts.map +1 -0
  53. package/dist/assessments/index.js +27 -0
  54. package/dist/assessments/index.js.map +1 -0
  55. package/dist/assessments/queue.d.ts +20 -0
  56. package/dist/assessments/queue.d.ts.map +1 -0
  57. package/dist/assessments/queue.js +6 -0
  58. package/dist/assessments/queue.js.map +1 -0
  59. package/dist/assessments/review.d.ts +36 -0
  60. package/dist/assessments/review.d.ts.map +1 -0
  61. package/dist/assessments/review.js +3 -0
  62. package/dist/assessments/review.js.map +1 -0
  63. package/dist/assessments/run.d.ts +62 -0
  64. package/dist/assessments/run.d.ts.map +1 -0
  65. package/dist/assessments/run.js +3 -0
  66. package/dist/assessments/run.js.map +1 -0
  67. package/dist/assessments/sow.d.ts +30 -0
  68. package/dist/assessments/sow.d.ts.map +1 -0
  69. package/dist/assessments/sow.js +3 -0
  70. package/dist/assessments/sow.js.map +1 -0
  71. package/dist/assessments/status.d.ts +27 -0
  72. package/dist/assessments/status.d.ts.map +1 -0
  73. package/dist/assessments/status.js +27 -0
  74. package/dist/assessments/status.js.map +1 -0
  75. package/dist/azure/activityLogs.d.ts +65 -0
  76. package/dist/azure/activityLogs.d.ts.map +1 -0
  77. package/dist/azure/activityLogs.js +6 -0
  78. package/dist/azure/activityLogs.js.map +1 -0
  79. package/dist/azure/advisorScore.d.ts +39 -0
  80. package/dist/azure/advisorScore.d.ts.map +1 -0
  81. package/dist/azure/advisorScore.js +3 -0
  82. package/dist/azure/advisorScore.js.map +1 -0
  83. package/dist/azure/benefits.d.ts +137 -0
  84. package/dist/azure/benefits.d.ts.map +1 -0
  85. package/dist/azure/benefits.js +3 -0
  86. package/dist/azure/benefits.js.map +1 -0
  87. package/dist/azure/billingPlots.d.ts +249 -0
  88. package/dist/azure/billingPlots.d.ts.map +1 -0
  89. package/dist/azure/billingPlots.js +6 -0
  90. package/dist/azure/billingPlots.js.map +1 -0
  91. package/dist/azure/budgets.d.ts +4 -0
  92. package/dist/azure/budgets.d.ts.map +1 -1
  93. package/dist/azure/commitmentsPlanning.d.ts +586 -0
  94. package/dist/azure/commitmentsPlanning.d.ts.map +1 -0
  95. package/dist/azure/commitmentsPlanning.js +3 -0
  96. package/dist/azure/commitmentsPlanning.js.map +1 -0
  97. package/dist/azure/common.d.ts +44 -0
  98. package/dist/azure/common.d.ts.map +1 -1
  99. package/dist/azure/configs.d.ts +75 -2
  100. package/dist/azure/configs.d.ts.map +1 -1
  101. package/dist/azure/costEstimation.d.ts +78 -0
  102. package/dist/azure/costEstimation.d.ts.map +1 -0
  103. package/dist/azure/costEstimation.js +3 -0
  104. package/dist/azure/costEstimation.js.map +1 -0
  105. package/dist/azure/dataProtection.d.ts +229 -0
  106. package/dist/azure/dataProtection.d.ts.map +1 -0
  107. package/dist/azure/dataProtection.js +9 -0
  108. package/dist/azure/dataProtection.js.map +1 -0
  109. package/dist/azure/governance.d.ts +942 -0
  110. package/dist/azure/governance.d.ts.map +1 -0
  111. package/dist/azure/governance.js +18 -0
  112. package/dist/azure/governance.js.map +1 -0
  113. package/dist/azure/metrics.d.ts +81 -4
  114. package/dist/azure/metrics.d.ts.map +1 -1
  115. package/dist/azure/payloads.d.ts +293 -1
  116. package/dist/azure/payloads.d.ts.map +1 -1
  117. package/dist/azure/portalArtifacts.d.ts +6 -0
  118. package/dist/azure/portalArtifacts.d.ts.map +1 -0
  119. package/dist/azure/portalArtifacts.js +5 -0
  120. package/dist/azure/portalArtifacts.js.map +1 -0
  121. package/dist/azure/prices.d.ts +193 -0
  122. package/dist/azure/prices.d.ts.map +1 -1
  123. package/dist/azure/publicIpAddresses.d.ts +171 -0
  124. package/dist/azure/publicIpAddresses.d.ts.map +1 -0
  125. package/dist/azure/publicIpAddresses.js +6 -0
  126. package/dist/azure/publicIpAddresses.js.map +1 -0
  127. package/dist/azure/recommendationAudit.d.ts +113 -0
  128. package/dist/azure/recommendationAudit.d.ts.map +1 -0
  129. package/dist/azure/recommendationAudit.js +10 -0
  130. package/dist/azure/recommendationAudit.js.map +1 -0
  131. package/dist/azure/recommendationState.d.ts +93 -4
  132. package/dist/azure/recommendationState.d.ts.map +1 -1
  133. package/dist/azure/recommendationWorkflow.d.ts +124 -0
  134. package/dist/azure/recommendationWorkflow.d.ts.map +1 -0
  135. package/dist/azure/recommendationWorkflow.js +15 -0
  136. package/dist/azure/recommendationWorkflow.js.map +1 -0
  137. package/dist/azure/recommendations.d.ts +538 -7
  138. package/dist/azure/recommendations.d.ts.map +1 -1
  139. package/dist/azure/recommendations.js.map +1 -1
  140. package/dist/azure/relationships.d.ts +193 -0
  141. package/dist/azure/relationships.d.ts.map +1 -0
  142. package/dist/azure/relationships.js +6 -0
  143. package/dist/azure/relationships.js.map +1 -0
  144. package/dist/azure/reportingTemplates.d.ts +70 -0
  145. package/dist/azure/reportingTemplates.d.ts.map +1 -0
  146. package/dist/azure/reportingTemplates.js +5 -0
  147. package/dist/azure/reportingTemplates.js.map +1 -0
  148. package/dist/azure/reports.d.ts +280 -2
  149. package/dist/azure/reports.d.ts.map +1 -1
  150. package/dist/azure/reports.js +13 -0
  151. package/dist/azure/reports.js.map +1 -1
  152. package/dist/azure/resourceHealth.d.ts +264 -0
  153. package/dist/azure/resourceHealth.d.ts.map +1 -0
  154. package/dist/azure/resourceHealth.js +16 -0
  155. package/dist/azure/resourceHealth.js.map +1 -0
  156. package/dist/azure/resources.d.ts +80 -0
  157. package/dist/azure/resources.d.ts.map +1 -1
  158. package/dist/azure/reviewChecklist.d.ts +139 -0
  159. package/dist/azure/reviewChecklist.d.ts.map +1 -0
  160. package/dist/azure/reviewChecklist.js +3 -0
  161. package/dist/azure/reviewChecklist.js.map +1 -0
  162. package/dist/azure/security.d.ts +11 -1
  163. package/dist/azure/security.d.ts.map +1 -1
  164. package/dist/azure/serviceRetirement.d.ts +28 -0
  165. package/dist/azure/serviceRetirement.d.ts.map +1 -0
  166. package/dist/azure/serviceRetirement.js +3 -0
  167. package/dist/azure/serviceRetirement.js.map +1 -0
  168. package/dist/azure/serviceRetirementState.d.ts +22 -0
  169. package/dist/azure/serviceRetirementState.d.ts.map +1 -0
  170. package/dist/azure/serviceRetirementState.js +3 -0
  171. package/dist/azure/serviceRetirementState.js.map +1 -0
  172. package/dist/azure/storage-inventory.d.ts +241 -0
  173. package/dist/azure/storage-inventory.d.ts.map +1 -0
  174. package/dist/azure/storage-inventory.js +3 -0
  175. package/dist/azure/storage-inventory.js.map +1 -0
  176. package/dist/azure/subscriptions.d.ts +46 -15
  177. package/dist/azure/subscriptions.d.ts.map +1 -1
  178. package/dist/azure/views.d.ts +545 -6
  179. package/dist/azure/views.d.ts.map +1 -1
  180. package/dist/common/index.d.ts +1 -0
  181. package/dist/common/index.d.ts.map +1 -1
  182. package/dist/common/index.js +1 -0
  183. package/dist/common/index.js.map +1 -1
  184. package/dist/common/pagination.d.ts +3 -0
  185. package/dist/common/pagination.d.ts.map +1 -1
  186. package/dist/common/provider.d.ts +9 -0
  187. package/dist/common/provider.d.ts.map +1 -0
  188. package/dist/common/provider.js +9 -0
  189. package/dist/common/provider.js.map +1 -0
  190. package/dist/company/billingAccount.d.ts +30 -0
  191. package/dist/company/billingAccount.d.ts.map +1 -0
  192. package/dist/company/billingAccount.js +3 -0
  193. package/dist/company/billingAccount.js.map +1 -0
  194. package/dist/company/company.d.ts +71 -1
  195. package/dist/company/company.d.ts.map +1 -1
  196. package/dist/company/companyHierarchy.d.ts +53 -0
  197. package/dist/company/companyHierarchy.d.ts.map +1 -0
  198. package/dist/company/companyHierarchy.js +3 -0
  199. package/dist/company/companyHierarchy.js.map +1 -0
  200. package/dist/company/companyNotes.d.ts +288 -0
  201. package/dist/company/companyNotes.d.ts.map +1 -0
  202. package/dist/company/companyNotes.js +42 -0
  203. package/dist/company/companyNotes.js.map +1 -0
  204. package/dist/company/index.d.ts +3 -0
  205. package/dist/company/index.d.ts.map +1 -1
  206. package/dist/company/index.js +3 -0
  207. package/dist/company/index.js.map +1 -1
  208. package/dist/company/notification.d.ts +34 -1
  209. package/dist/company/notification.d.ts.map +1 -1
  210. package/dist/company/notification.js +27 -12
  211. package/dist/company/notification.js.map +1 -1
  212. package/dist/company/survey.d.ts +3 -0
  213. package/dist/company/survey.d.ts.map +1 -1
  214. package/dist/events/alertDefinitionRun.d.ts +23 -0
  215. package/dist/events/alertDefinitionRun.d.ts.map +1 -0
  216. package/dist/events/alertDefinitionRun.js +3 -0
  217. package/dist/events/alertDefinitionRun.js.map +1 -0
  218. package/dist/events/baseAlert.d.ts +130 -0
  219. package/dist/events/baseAlert.d.ts.map +1 -0
  220. package/dist/events/baseAlert.js +3 -0
  221. package/dist/events/baseAlert.js.map +1 -0
  222. package/dist/events/cost.d.ts +371 -0
  223. package/dist/events/cost.d.ts.map +1 -0
  224. package/dist/events/cost.js +3 -0
  225. package/dist/events/cost.js.map +1 -0
  226. package/dist/events/costAnomalies.d.ts +47 -0
  227. package/dist/events/costAnomalies.d.ts.map +1 -0
  228. package/dist/events/costAnomalies.js +3 -0
  229. package/dist/events/costAnomalies.js.map +1 -0
  230. package/dist/events/costViews.d.ts +23 -0
  231. package/dist/events/costViews.d.ts.map +1 -0
  232. package/dist/events/costViews.js +3 -0
  233. package/dist/events/costViews.js.map +1 -0
  234. package/dist/events/eventStatus.d.ts +67 -0
  235. package/dist/events/eventStatus.d.ts.map +1 -0
  236. package/dist/events/eventStatus.js +3 -0
  237. package/dist/events/eventStatus.js.map +1 -0
  238. package/dist/events/index.d.ts +7 -0
  239. package/dist/events/index.d.ts.map +1 -0
  240. package/dist/events/index.js +23 -0
  241. package/dist/events/index.js.map +1 -0
  242. package/dist/features-and-permissions/access.d.ts +137 -0
  243. package/dist/features-and-permissions/access.d.ts.map +1 -0
  244. package/dist/features-and-permissions/access.js +3 -0
  245. package/dist/features-and-permissions/access.js.map +1 -0
  246. package/dist/features-and-permissions/index.d.ts +2 -0
  247. package/dist/features-and-permissions/index.d.ts.map +1 -0
  248. package/dist/features-and-permissions/index.js +18 -0
  249. package/dist/features-and-permissions/index.js.map +1 -0
  250. package/dist/feedbacks/feedback.d.ts +9 -0
  251. package/dist/feedbacks/feedback.d.ts.map +1 -1
  252. package/dist/identity/apikey.d.ts +84 -0
  253. package/dist/identity/apikey.d.ts.map +1 -0
  254. package/dist/identity/apikey.js +3 -0
  255. package/dist/identity/apikey.js.map +1 -0
  256. package/dist/identity/index.d.ts +2 -0
  257. package/dist/identity/index.d.ts.map +1 -0
  258. package/dist/identity/index.js +18 -0
  259. package/dist/identity/index.js.map +1 -0
  260. package/dist/index.d.ts +27 -0
  261. package/dist/index.d.ts.map +1 -1
  262. package/dist/index.js +27 -1
  263. package/dist/index.js.map +1 -1
  264. package/dist/index.vite.d.ts +47 -0
  265. package/dist/index.vite.d.ts.map +1 -0
  266. package/dist/index.vite.js +63 -0
  267. package/dist/index.vite.js.map +1 -0
  268. package/dist/integrations/autotask.d.ts +90 -0
  269. package/dist/integrations/autotask.d.ts.map +1 -0
  270. package/dist/integrations/autotask.js +3 -0
  271. package/dist/integrations/autotask.js.map +1 -0
  272. package/dist/integrations/azureDevOps.d.ts +130 -0
  273. package/dist/integrations/azureDevOps.d.ts.map +1 -0
  274. package/dist/integrations/azureDevOps.js +3 -0
  275. package/dist/integrations/azureDevOps.js.map +1 -0
  276. package/dist/integrations/github.d.ts +96 -0
  277. package/dist/integrations/github.d.ts.map +1 -0
  278. package/dist/integrations/github.js +3 -0
  279. package/dist/integrations/github.js.map +1 -0
  280. package/dist/integrations/halo.d.ts +76 -0
  281. package/dist/integrations/halo.d.ts.map +1 -0
  282. package/dist/integrations/halo.js +3 -0
  283. package/dist/integrations/halo.js.map +1 -0
  284. package/dist/integrations/index.d.ts +6 -0
  285. package/dist/integrations/index.d.ts.map +1 -0
  286. package/dist/integrations/index.js +22 -0
  287. package/dist/integrations/index.js.map +1 -0
  288. package/dist/integrations/integrationTickets.d.ts +67 -0
  289. package/dist/integrations/integrationTickets.d.ts.map +1 -0
  290. package/dist/integrations/integrationTickets.js +3 -0
  291. package/dist/integrations/integrationTickets.js.map +1 -0
  292. package/dist/scheduler/index.d.ts +2 -0
  293. package/dist/scheduler/index.d.ts.map +1 -0
  294. package/dist/scheduler/index.js +18 -0
  295. package/dist/scheduler/index.js.map +1 -0
  296. package/dist/scheduler/scheduler.d.ts +263 -0
  297. package/dist/scheduler/scheduler.d.ts.map +1 -0
  298. package/dist/scheduler/scheduler.js +3 -0
  299. package/dist/scheduler/scheduler.js.map +1 -0
  300. package/dist/tags/index.d.ts +2 -0
  301. package/dist/tags/index.d.ts.map +1 -0
  302. package/dist/tags/index.js +18 -0
  303. package/dist/tags/index.js.map +1 -0
  304. package/dist/tags/tags.d.ts +37 -0
  305. package/dist/tags/tags.d.ts.map +1 -0
  306. package/dist/tags/tags.js +10 -0
  307. package/dist/tags/tags.js.map +1 -0
  308. package/dist/unknown/services.d.ts +12 -0
  309. package/dist/unknown/services.d.ts.map +1 -0
  310. package/dist/unknown/services.js +3 -0
  311. package/dist/unknown/services.js.map +1 -0
  312. package/dist/users/companyUser.d.ts +12 -0
  313. package/dist/users/companyUser.d.ts.map +1 -1
  314. package/dist/users/companyUser.js.map +1 -1
  315. package/dist/users/user.d.ts +18 -1
  316. package/dist/users/user.d.ts.map +1 -1
  317. package/package.json +3 -3
@@ -1,5 +1,14 @@
1
- import { Comment, RecommendationHistory } from './recommendationState';
2
- import { SecurityAssessmentStatus, 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,33 +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
266
  securityAssessmentStatuses?: SecurityAssessmentStatus[];
46
- subcategory?: string;
267
+ /** Deprecated fields, kept for compatibility */
47
268
  solution?: string;
48
269
  source?: string;
49
270
  service?: string;
271
+ /**
272
+ * Stored as string to allow JSON persistence.
273
+ * Uses a different name to avoid conflict with RecommendationWithState.createdAt.
274
+ */
50
275
  createdTime?: string;
276
+ /** Avoids conflict with RecommendationWithState.updatedAt */
51
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;
52
307
  }
308
+ export interface RecommendationLinkingIds {
309
+ serviceRetirementIds?: string[];
310
+ }
311
+ /** Deprecated **/
53
312
  export interface CostImpactDetails {
313
+ /** e.g. "Saving Plan", "Reserved Instance", "Windows migration to Linux" */
54
314
  name: string;
55
315
  monthlySavings?: number;
56
316
  currentSpend?: number;
317
+ /** e.g. 20 for 20% */
57
318
  savingPercentage?: number;
58
319
  minMonthlySavings?: number;
59
320
  maxMonthlySavings?: number;
@@ -67,17 +328,71 @@ export interface RecommendationSummary {
67
328
  }
68
329
  export interface RecommendationWithResources {
69
330
  recommendation: Recommendation;
331
+ /** Total affected resources when the resources array is trimmed or sampled. */
332
+ resourcesCount?: number;
70
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;
71
354
  }
72
355
  export interface RecommendationResource {
73
356
  id: string;
74
357
  name: string;
75
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
+ };
76
373
  spend: number;
77
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[];
78
388
  }
79
- export interface RecommendationsView {
389
+ export interface RecommendationsView extends AzurePortalVersionedArtifact {
80
390
  recommendations: RecommendationWithResources[];
391
+ securityImpactDetails?: SecurityImpact[];
392
+ subscriptionSecurityStatus?: SubscriptionSecurityStatus;
393
+ savings?: SavingsPotential;
394
+ subscription: SubscriptionSummaryLite;
395
+ costSavingsSummary?: CostSavingsSummary;
81
396
  }
82
397
  export interface ResourceId {
83
398
  id: string;
@@ -85,7 +400,20 @@ export interface ResourceId {
85
400
  export interface ResourceReference {
86
401
  id: string;
87
402
  name: string;
403
+ type?: string;
404
+ subscriptionName?: string;
405
+ savings?: SavingsPotential;
406
+ currency?: string;
407
+ currencySymbol?: string;
408
+ relationship?: ResourceRelationship;
409
+ associations?: RecommendationResourceAssociation[];
88
410
  }
411
+ export type ResourceRelationship = {
412
+ role?: 'primary' | 'related';
413
+ type?: string;
414
+ allocationId?: string;
415
+ metadata?: Record<string, string>;
416
+ };
89
417
  export interface ReliabilityRecommendation extends Recommendation {
90
418
  referenceID: string;
91
419
  resourceType: string;
@@ -93,7 +421,6 @@ export interface ReliabilityRecommendation extends Recommendation {
93
421
  service: string;
94
422
  }
95
423
  export interface CustomAzureRecommendation extends Recommendation {
96
- subcategory: string;
97
424
  service: string;
98
425
  source: string;
99
426
  fileName: string;
@@ -103,6 +430,7 @@ export interface RecommendationCollection {
103
430
  results: ResourceId[];
104
431
  }
105
432
  export interface AzureRecommendationLite {
433
+ /** e.g. Cost, Performance, Reliability, Security, Compliance, OperationalExcellence, Operational Excellence, HighAvailability */
106
434
  category: string;
107
435
  total: number;
108
436
  high: number;
@@ -110,13 +438,18 @@ export interface AzureRecommendationLite {
110
438
  low: number;
111
439
  }
112
440
  export interface RecommendationStats {
441
+ /** total number of recommendations in the subscription */
113
442
  total: number;
443
+ /** total number of high recommendations in the subscription */
114
444
  high: number;
445
+ /** total number of medium recommendations in the subscription */
115
446
  medium: number;
447
+ /** total number of low recommendations in the subscription */
116
448
  low: number;
117
449
  }
450
+ /** Recommendation with state information, name "ExtendedRecommendation" in the portal at the moment */
118
451
  export interface RecommendationWithState extends Recommendation {
119
- status?: 'Active' | 'Prioritized' | 'Postponed' | 'Dismissed' | 'Completed' | 'Archived';
452
+ status?: 'Active' | 'Prioritized' | 'Postponed' | 'Dismissed' | 'Completed' | 'Archived' | 'Implementing' | 'Implemented' | 'Failed';
120
453
  read?: boolean;
121
454
  scheduledAt?: Date;
122
455
  createdAt?: Date;
@@ -125,4 +458,202 @@ export interface RecommendationWithState extends Recommendation {
125
458
  comments?: Comment[];
126
459
  history?: RecommendationHistory[];
127
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
+ }
128
659
  //# sourceMappingURL=recommendations.d.ts.map