@spottoai/types-package 1.0.2-beta.353 → 1.0.2-beta.356
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.
- package/README.md +17 -0
- package/dist/aws/commitments-planning.d.ts +3 -0
- package/dist/aws/commitments-planning.d.ts.map +1 -0
- package/dist/aws/commitments-planning.js +6 -0
- package/dist/aws/commitments-planning.js.map +1 -0
- package/dist/aws/commitmentsPlanningValidation.d.ts.map +1 -1
- package/dist/aws/commitmentsPlanningValidation.js +2 -0
- package/dist/aws/commitmentsPlanningValidation.js.map +1 -1
- package/dist/aws/index.d.ts +2 -0
- package/dist/aws/index.d.ts.map +1 -1
- package/dist/aws/index.js +2 -0
- package/dist/aws/index.js.map +1 -1
- package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.d.ts +4 -0
- package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.d.ts.map +1 -0
- package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.js +513 -0
- package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.js.map +1 -0
- package/dist/aws/portalCommitmentsPlanningPublicArtifacts.d.ts +13 -0
- package/dist/aws/portalCommitmentsPlanningPublicArtifacts.d.ts.map +1 -0
- package/dist/aws/portalCommitmentsPlanningPublicArtifacts.js +5 -0
- package/dist/aws/portalCommitmentsPlanningPublicArtifacts.js.map +1 -0
- package/dist/aws/portalPublicArtifactHistoryTypes.d.ts +5 -0
- package/dist/aws/portalPublicArtifactHistoryTypes.d.ts.map +1 -1
- package/dist/aws/portalPublicArtifactHistoryTypes.js +6 -0
- package/dist/aws/portalPublicArtifactHistoryTypes.js.map +1 -1
- package/dist/aws/portalPublicArtifacts.d.ts +2 -1
- package/dist/aws/portalPublicArtifacts.d.ts.map +1 -1
- package/dist/aws/portalPublicArtifacts.js.map +1 -1
- package/dist/aws/publicArtifacts.d.ts +1 -1
- package/dist/aws/publicArtifacts.d.ts.map +1 -1
- package/dist/aws/publicArtifacts.js +1 -0
- package/dist/aws/publicArtifacts.js.map +1 -1
- package/dist/aws/relationships.d.ts +4 -0
- package/dist/aws/relationships.d.ts.map +1 -0
- package/dist/aws/relationships.js +6 -0
- package/dist/aws/relationships.js.map +1 -0
- package/dist/azure/commitmentsPlanning.d.ts +3 -1
- package/dist/azure/commitmentsPlanning.d.ts.map +1 -1
- package/dist/esm/accounts/accounts.js +115 -0
- package/dist/esm/accounts/azureSpSetup.js +1 -0
- package/dist/esm/accounts/azureSpSetupDurable.js +1 -0
- package/dist/esm/accounts/index.js +5 -0
- package/dist/esm/accounts/readPermissions.js +198 -0
- package/dist/esm/accounts/validation.js +1 -0
- package/dist/esm/accounts/writePermissions.js +43 -0
- package/dist/esm/ai/index.js +2 -0
- package/dist/esm/assessments/artifact.js +1 -0
- package/dist/esm/assessments/catalogue.js +12 -0
- package/dist/esm/assessments/common.js +1 -0
- package/dist/esm/assessments/evidence.js +1 -0
- package/dist/esm/assessments/export.js +1 -0
- package/dist/esm/assessments/index.js +10 -0
- package/dist/esm/assessments/queue.js +2 -0
- package/dist/esm/assessments/review.js +1 -0
- package/dist/esm/assessments/run.js +1 -0
- package/dist/esm/assessments/sow.js +1 -0
- package/dist/esm/assessments/status.js +23 -0
- package/dist/esm/aws/commitments-planning.js +1 -0
- package/dist/esm/aws/commitmentsPlanningValidation.js +121 -0
- package/dist/esm/aws/estates.js +21 -0
- package/dist/esm/aws/index.js +18 -0
- package/dist/esm/aws/onboarding.js +1 -0
- package/dist/esm/aws/pluginPublicArtifactBodyValidation.js +217 -0
- package/dist/esm/aws/pluginPublicArtifactEvidence.js +1 -0
- package/dist/esm/aws/pluginPublicArtifactManifestValidation.js +255 -0
- package/dist/esm/aws/pluginPublicArtifactSectionValidation.js +464 -0
- package/dist/esm/aws/pluginPublicArtifactValidation.js +2 -0
- package/dist/esm/aws/pluginPublicArtifactValidationHelpers.js +216 -0
- package/dist/esm/aws/pluginPublicArtifacts.js +109 -0
- package/dist/esm/aws/portalCommitmentsPlanningPublicArtifactValidation.js +509 -0
- package/dist/esm/aws/portalCommitmentsPlanningPublicArtifacts.js +1 -0
- package/dist/esm/aws/portalPublicArtifactCurrentValidation.js +328 -0
- package/dist/esm/aws/portalPublicArtifactEvidenceValidation.js +294 -0
- package/dist/esm/aws/portalPublicArtifactHistoryAiValidation.js +368 -0
- package/dist/esm/aws/portalPublicArtifactHistoryTypes.js +40 -0
- package/dist/esm/aws/portalPublicArtifactNestedEvidence.js +1 -0
- package/dist/esm/aws/portalPublicArtifactNestedEvidenceValidation.js +397 -0
- package/dist/esm/aws/portalPublicArtifactValidation.js +2 -0
- package/dist/esm/aws/portalPublicArtifactValidationCommon.js +139 -0
- package/dist/esm/aws/portalPublicArtifacts.js +73 -0
- package/dist/esm/aws/portalRelationshipPublicArtifactValidation.js +334 -0
- package/dist/esm/aws/portalRelationshipPublicArtifacts.js +59 -0
- package/dist/esm/aws/portalRelationshipResourceNodeTypes.js +1 -0
- package/dist/esm/aws/portalRelationshipResourceNodeValidation.js +368 -0
- package/dist/esm/aws/publicArtifacts.js +13 -0
- package/dist/esm/aws/relationships.js +1 -0
- package/dist/esm/aws/requests.js +19 -0
- package/dist/esm/azure/activityLogs.js +2 -0
- package/dist/esm/azure/advisorScore.js +1 -0
- package/dist/esm/azure/benefits.js +1 -0
- package/dist/esm/azure/billingGeneration.js +1 -0
- package/dist/esm/azure/billingPlots.js +4 -0
- package/dist/esm/azure/budgets.js +1 -0
- package/dist/esm/azure/commitmentsPlanning.js +1 -0
- package/dist/esm/azure/common.js +1 -0
- package/dist/esm/azure/configs.js +1 -0
- package/dist/esm/azure/costComposition.js +1 -0
- package/dist/esm/azure/dataProtection.js +5 -0
- package/dist/esm/azure/governance.js +14 -0
- package/dist/esm/azure/licensing.js +1 -0
- package/dist/esm/azure/metrics.js +1 -0
- package/dist/esm/azure/payloads.js +1 -0
- package/dist/esm/azure/portalArtifacts.js +1 -0
- package/dist/esm/azure/prices.js +1 -0
- package/dist/esm/azure/publicIpAddresses.js +2 -0
- package/dist/esm/azure/recommendationAudit.js +16 -0
- package/dist/esm/azure/recommendationState.js +1 -0
- package/dist/esm/azure/recommendationTracks.js +40 -0
- package/dist/esm/azure/recommendationWorkflow.js +13 -0
- package/dist/esm/azure/recommendations.js +10 -0
- package/dist/esm/azure/regulatoryCompliance.js +6 -0
- package/dist/esm/azure/relationships.js +2 -0
- package/dist/esm/azure/reportingTemplates.js +1 -0
- package/dist/esm/azure/reports.js +12 -0
- package/dist/esm/azure/resourceHealth.js +12 -0
- package/dist/esm/azure/resourceOptimization.js +1 -0
- package/dist/esm/azure/resources.js +1 -0
- package/dist/esm/azure/reviewChecklist.js +1 -0
- package/dist/esm/azure/secureScore.js +1 -0
- package/dist/esm/azure/security.js +1 -0
- package/dist/esm/azure/serviceRetirement.js +1 -0
- package/dist/esm/azure/serviceRetirementState.js +1 -0
- package/dist/esm/azure/serviceRetirementWorkManagement.js +1 -0
- package/dist/esm/azure/storage-inventory.js +1 -0
- package/dist/esm/azure/subscriptions.js +1 -0
- package/dist/esm/azure/views.js +32 -0
- package/dist/esm/azure/workManagement.js +4 -0
- package/dist/esm/common/artifactGeneration.js +1 -0
- package/dist/esm/common/capabilityPassport.js +214 -0
- package/dist/esm/common/index.js +7 -0
- package/dist/esm/common/pagination.js +1 -0
- package/dist/esm/common/provider.js +11 -0
- package/dist/esm/common/providerSyncProgress.js +1 -0
- package/dist/esm/common/relationships.js +1 -0
- package/dist/esm/common/syncProgress.js +1 -0
- package/dist/esm/company/billingAccount.js +1 -0
- package/dist/esm/company/company.js +1 -0
- package/dist/esm/company/companyHierarchy.js +1 -0
- package/dist/esm/company/companyNotes.js +38 -0
- package/dist/esm/company/customProperties.js +1 -0
- package/dist/esm/company/index.js +6 -0
- package/dist/esm/company/notification.js +43 -0
- package/dist/esm/company/survey.js +1 -0
- package/dist/esm/customProperties/customProperties.js +1 -0
- package/dist/esm/customProperties/index.js +1 -0
- package/dist/esm/entries/aws.js +3 -0
- package/dist/esm/entries/commitments-planning.js +3 -0
- package/dist/esm/entries/provider.js +3 -0
- package/dist/esm/entries/recommendations.js +3 -0
- package/dist/esm/entries/relationships.js +3 -0
- package/dist/esm/entries/root.js +3 -0
- package/dist/esm/events/actionGroups.js +1 -0
- package/dist/esm/events/alertDefinitionRun.js +1 -0
- package/dist/esm/events/baseAlert.js +1 -0
- package/dist/esm/events/cost.js +1 -0
- package/dist/esm/events/costAnomalies.js +1 -0
- package/dist/esm/events/costViews.js +1 -0
- package/dist/esm/events/eventStatus.js +1 -0
- package/dist/esm/events/index.js +8 -0
- package/dist/esm/events/quickAlerts.js +2 -0
- package/dist/esm/features-and-permissions/access.js +1 -0
- package/dist/esm/features-and-permissions/index.js +1 -0
- package/dist/esm/feedbacks/feedback.js +1 -0
- package/dist/esm/identity/apikey.js +1 -0
- package/dist/esm/identity/index.js +1 -0
- package/dist/esm/index.js +54 -0
- package/dist/esm/index.vite.js +48 -0
- package/dist/esm/integrations/autotask.js +1 -0
- package/dist/esm/integrations/azureDevOps.js +1 -0
- package/dist/esm/integrations/github.js +1 -0
- package/dist/esm/integrations/halo.js +1 -0
- package/dist/esm/integrations/index.js +5 -0
- package/dist/esm/integrations/integrationTickets.js +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/scheduler/index.js +1 -0
- package/dist/esm/scheduler/scheduler.js +1 -0
- package/dist/esm/tags/index.js +1 -0
- package/dist/esm/tags/tags.js +6 -0
- package/dist/esm/unknown/services.js +1 -0
- package/dist/esm/users/companyUser.js +2 -0
- package/dist/esm/users/index.js +2 -0
- package/dist/esm/users/user.js +1 -0
- package/package.json +23 -6
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
import { AWS_PORTAL_RELATIONSHIP_DISCOVERY_FAMILIES } from './portalRelationshipPublicArtifacts.js';
|
|
2
|
+
import { validateResourceBillingEvidence } from './portalPublicArtifactNestedEvidenceValidation.js';
|
|
3
|
+
import { asRecord, assertExactKeys, assertValue, finiteNumber, requiredBoolean, requiredEnum, requiredString, stringArray, } from './portalPublicArtifactValidationCommon.js';
|
|
4
|
+
import { assertAccount, assertRequiredKeys } from './pluginPublicArtifactValidationHelpers.js';
|
|
5
|
+
const RESOURCE_COMMON_KEYS = ['provider', 'accountId', 'family', 'resourceRegion', 'stableKey', 'resourceType', 'tags', 'billing'];
|
|
6
|
+
const RESOURCE_KEYS = {
|
|
7
|
+
'ec2-instance': ['instanceId', 'instanceArn', 'name', 'state', 'instanceType', 'availabilityZone', 'subnetId', 'vpcId'],
|
|
8
|
+
'ebs-volume': ['volumeId', 'volumeArn', 'state', 'availabilityZone', 'volumeType', 'sizeGiB', 'encrypted', 'snapshotId', 'attachments'],
|
|
9
|
+
vpc: [
|
|
10
|
+
'vpcId',
|
|
11
|
+
'vpcArn',
|
|
12
|
+
'state',
|
|
13
|
+
'cidrBlock',
|
|
14
|
+
'dhcpOptionsId',
|
|
15
|
+
'instanceTenancy',
|
|
16
|
+
'isDefault',
|
|
17
|
+
'ownerId',
|
|
18
|
+
'cidrBlockAssociations',
|
|
19
|
+
'ipv6CidrBlockAssociations',
|
|
20
|
+
],
|
|
21
|
+
subnet: [
|
|
22
|
+
'subnetArn',
|
|
23
|
+
'subnetId',
|
|
24
|
+
'vpcId',
|
|
25
|
+
'availabilityZone',
|
|
26
|
+
'availabilityZoneId',
|
|
27
|
+
'state',
|
|
28
|
+
'cidrBlock',
|
|
29
|
+
'availableIpAddressCount',
|
|
30
|
+
'defaultForAz',
|
|
31
|
+
'mapPublicIpOnLaunch',
|
|
32
|
+
'assignIpv6AddressOnCreation',
|
|
33
|
+
'ipv6Native',
|
|
34
|
+
'ownerId',
|
|
35
|
+
'customerOwnedIpv4Pool',
|
|
36
|
+
'mapCustomerOwnedIpOnLaunch',
|
|
37
|
+
'outpostArn',
|
|
38
|
+
'enableDns64',
|
|
39
|
+
'enableLniAtDeviceIndex',
|
|
40
|
+
'privateDnsHostnameType',
|
|
41
|
+
'privateDnsEnableResourceNameDnsARecord',
|
|
42
|
+
'privateDnsEnableResourceNameDnsAAAARecord',
|
|
43
|
+
'ipv6CidrBlockAssociations',
|
|
44
|
+
],
|
|
45
|
+
'route-table': ['routeTableArn', 'routeTableId', 'vpcId', 'ownerId', 'hasMainAssociation', 'associations'],
|
|
46
|
+
'internet-gateway': ['internetGatewayArn', 'internetGatewayId', 'ownerId', 'attachments', 'attachedVpcIds'],
|
|
47
|
+
'virtual-private-gateway': [
|
|
48
|
+
'virtualPrivateGatewayArn',
|
|
49
|
+
'virtualPrivateGatewayId',
|
|
50
|
+
'amazonSideAsn',
|
|
51
|
+
'availabilityZone',
|
|
52
|
+
'state',
|
|
53
|
+
'type',
|
|
54
|
+
'attachments',
|
|
55
|
+
'attachedVpcIds',
|
|
56
|
+
],
|
|
57
|
+
'network-interface': [
|
|
58
|
+
'networkInterfaceId',
|
|
59
|
+
'ownerId',
|
|
60
|
+
'subnetId',
|
|
61
|
+
'vpcId',
|
|
62
|
+
'availabilityZone',
|
|
63
|
+
'status',
|
|
64
|
+
'interfaceType',
|
|
65
|
+
'requesterManaged',
|
|
66
|
+
'requesterId',
|
|
67
|
+
'privateIpAddress',
|
|
68
|
+
'attachmentInstanceId',
|
|
69
|
+
],
|
|
70
|
+
'nat-gateway': [
|
|
71
|
+
'natGatewayId',
|
|
72
|
+
'natGatewayArn',
|
|
73
|
+
'subnetId',
|
|
74
|
+
'vpcId',
|
|
75
|
+
'availabilityZone',
|
|
76
|
+
'state',
|
|
77
|
+
'connectivityType',
|
|
78
|
+
'failureCode',
|
|
79
|
+
'failureMessage',
|
|
80
|
+
'createTime',
|
|
81
|
+
'deleteTime',
|
|
82
|
+
'addresses',
|
|
83
|
+
],
|
|
84
|
+
'security-group': ['groupId', 'securityGroupArn', 'groupName', 'description', 'vpcId', 'ownerId'],
|
|
85
|
+
'rds-db-cluster': [
|
|
86
|
+
'dbClusterResourceId',
|
|
87
|
+
'dbClusterIdentifier',
|
|
88
|
+
'dbClusterArn',
|
|
89
|
+
'engine',
|
|
90
|
+
'engineVersion',
|
|
91
|
+
'engineMode',
|
|
92
|
+
'status',
|
|
93
|
+
'serverlessV2MinCapacityAcu',
|
|
94
|
+
'serverlessV2MaxCapacityAcu',
|
|
95
|
+
'serverlessV2SecondsUntilAutoPause',
|
|
96
|
+
'serverlessV2PlatformVersion',
|
|
97
|
+
'globalClusterIdentifier',
|
|
98
|
+
'clusterScalabilityType',
|
|
99
|
+
'limitlessDatabaseStatus',
|
|
100
|
+
'endpointAddress',
|
|
101
|
+
'readerEndpointAddress',
|
|
102
|
+
'hostedZoneId',
|
|
103
|
+
'endpointPort',
|
|
104
|
+
'availabilityZones',
|
|
105
|
+
'storageEncrypted',
|
|
106
|
+
'kmsKeyId',
|
|
107
|
+
'deletionProtection',
|
|
108
|
+
'copyTagsToSnapshot',
|
|
109
|
+
'dbProxyNames',
|
|
110
|
+
'dbClusterMemberIdentifiers',
|
|
111
|
+
'dbClusterMembers',
|
|
112
|
+
],
|
|
113
|
+
'rds-db-instance': [
|
|
114
|
+
'dbInstanceIdentifier',
|
|
115
|
+
'dbiResourceId',
|
|
116
|
+
'dbInstanceArn',
|
|
117
|
+
'engine',
|
|
118
|
+
'engineVersion',
|
|
119
|
+
'dbInstanceClass',
|
|
120
|
+
'status',
|
|
121
|
+
'availabilityZone',
|
|
122
|
+
'vpcId',
|
|
123
|
+
'dbSubnetGroupName',
|
|
124
|
+
'dbClusterIdentifier',
|
|
125
|
+
],
|
|
126
|
+
'load-balancer-v2': ['loadBalancerArn', 'loadBalancerName', 'loadBalancerType', 'scheme', 'state', 'vpcId', 'subnetIds', 'availabilityZoneNames'],
|
|
127
|
+
'classic-load-balancer': ['loadBalancerName', 'scheme', 'vpcId', 'subnetIds', 'availabilityZoneNames', 'securityGroupIds', 'instanceIds'],
|
|
128
|
+
'elasticache-cache-cluster': [
|
|
129
|
+
'cacheClusterId',
|
|
130
|
+
'cacheClusterArn',
|
|
131
|
+
'engine',
|
|
132
|
+
'engineVersion',
|
|
133
|
+
'status',
|
|
134
|
+
'cacheNodeType',
|
|
135
|
+
'preferredAvailabilityZone',
|
|
136
|
+
'cacheSubnetGroupName',
|
|
137
|
+
'replicationGroupId',
|
|
138
|
+
'replicationGroupGlobalReplicationGroupId',
|
|
139
|
+
'kmsKeyId',
|
|
140
|
+
],
|
|
141
|
+
'elasticache-serverless-cache': ['serverlessCacheName', 'serverlessCacheArn', 'engine', 'majorEngineVersion', 'status', 'subnetIds', 'kmsKeyId'],
|
|
142
|
+
'efs-file-system': ['fileSystemId', 'fileSystemArn', 'name', 'state', 'availabilityZoneName', 'encrypted', 'kmsKeyId'],
|
|
143
|
+
};
|
|
144
|
+
const REQUIRED_RESOURCE_KEYS = {
|
|
145
|
+
'ec2-instance': ['instanceId', 'instanceArn'],
|
|
146
|
+
'ebs-volume': ['volumeId', 'volumeArn', 'attachments'],
|
|
147
|
+
vpc: ['vpcId', 'vpcArn', 'cidrBlockAssociations', 'ipv6CidrBlockAssociations'],
|
|
148
|
+
subnet: ['subnetArn', 'subnetId', 'ipv6CidrBlockAssociations'],
|
|
149
|
+
'route-table': ['routeTableArn', 'routeTableId', 'hasMainAssociation', 'associations'],
|
|
150
|
+
'internet-gateway': ['internetGatewayArn', 'internetGatewayId', 'attachments', 'attachedVpcIds'],
|
|
151
|
+
'virtual-private-gateway': ['virtualPrivateGatewayArn', 'virtualPrivateGatewayId', 'attachments', 'attachedVpcIds'],
|
|
152
|
+
'network-interface': ['networkInterfaceId'],
|
|
153
|
+
'nat-gateway': ['natGatewayId', 'natGatewayArn', 'addresses'],
|
|
154
|
+
'security-group': ['groupId', 'groupName'],
|
|
155
|
+
'rds-db-cluster': [
|
|
156
|
+
'dbClusterResourceId',
|
|
157
|
+
'dbClusterIdentifier',
|
|
158
|
+
'dbClusterArn',
|
|
159
|
+
'availabilityZones',
|
|
160
|
+
'dbProxyNames',
|
|
161
|
+
'dbClusterMemberIdentifiers',
|
|
162
|
+
'dbClusterMembers',
|
|
163
|
+
],
|
|
164
|
+
'rds-db-instance': ['dbInstanceIdentifier', 'dbiResourceId', 'dbInstanceArn'],
|
|
165
|
+
'load-balancer-v2': ['loadBalancerArn', 'loadBalancerName', 'subnetIds', 'availabilityZoneNames'],
|
|
166
|
+
'classic-load-balancer': ['loadBalancerName', 'subnetIds', 'availabilityZoneNames', 'securityGroupIds', 'instanceIds'],
|
|
167
|
+
'elasticache-cache-cluster': ['cacheClusterId', 'cacheClusterArn'],
|
|
168
|
+
'elasticache-serverless-cache': ['serverlessCacheName', 'serverlessCacheArn', 'subnetIds'],
|
|
169
|
+
'efs-file-system': ['fileSystemId', 'fileSystemArn'],
|
|
170
|
+
};
|
|
171
|
+
const STRING_FIELDS = new Set([
|
|
172
|
+
'stableKey',
|
|
173
|
+
'resourceType',
|
|
174
|
+
...Object.values(RESOURCE_KEYS)
|
|
175
|
+
.flat()
|
|
176
|
+
.filter(field => ![
|
|
177
|
+
'attachments',
|
|
178
|
+
'addresses',
|
|
179
|
+
'associations',
|
|
180
|
+
'attachedVpcIds',
|
|
181
|
+
'availabilityZoneNames',
|
|
182
|
+
'availabilityZones',
|
|
183
|
+
'cidrBlockAssociations',
|
|
184
|
+
'dbClusterMemberIdentifiers',
|
|
185
|
+
'dbClusterMembers',
|
|
186
|
+
'dbProxyNames',
|
|
187
|
+
'instanceIds',
|
|
188
|
+
'ipv6CidrBlockAssociations',
|
|
189
|
+
'securityGroupIds',
|
|
190
|
+
'subnetIds',
|
|
191
|
+
'availableIpAddressCount',
|
|
192
|
+
'amazonSideAsn',
|
|
193
|
+
'enableLniAtDeviceIndex',
|
|
194
|
+
'endpointPort',
|
|
195
|
+
'serverlessV2MaxCapacityAcu',
|
|
196
|
+
'serverlessV2MinCapacityAcu',
|
|
197
|
+
'serverlessV2SecondsUntilAutoPause',
|
|
198
|
+
'sizeGiB',
|
|
199
|
+
'assignIpv6AddressOnCreation',
|
|
200
|
+
'copyTagsToSnapshot',
|
|
201
|
+
'defaultForAz',
|
|
202
|
+
'deletionProtection',
|
|
203
|
+
'enableDns64',
|
|
204
|
+
'encrypted',
|
|
205
|
+
'hasMainAssociation',
|
|
206
|
+
'ipv6Native',
|
|
207
|
+
'isDefault',
|
|
208
|
+
'mapCustomerOwnedIpOnLaunch',
|
|
209
|
+
'mapPublicIpOnLaunch',
|
|
210
|
+
'privateDnsEnableResourceNameDnsARecord',
|
|
211
|
+
'privateDnsEnableResourceNameDnsAAAARecord',
|
|
212
|
+
'requesterManaged',
|
|
213
|
+
'storageEncrypted',
|
|
214
|
+
].includes(field)),
|
|
215
|
+
]);
|
|
216
|
+
const NUMBER_FIELDS = new Set([
|
|
217
|
+
'amazonSideAsn',
|
|
218
|
+
'availableIpAddressCount',
|
|
219
|
+
'enableLniAtDeviceIndex',
|
|
220
|
+
'endpointPort',
|
|
221
|
+
'serverlessV2MaxCapacityAcu',
|
|
222
|
+
'serverlessV2MinCapacityAcu',
|
|
223
|
+
'serverlessV2SecondsUntilAutoPause',
|
|
224
|
+
'sizeGiB',
|
|
225
|
+
]);
|
|
226
|
+
const BOOLEAN_FIELDS = new Set([
|
|
227
|
+
'assignIpv6AddressOnCreation',
|
|
228
|
+
'copyTagsToSnapshot',
|
|
229
|
+
'defaultForAz',
|
|
230
|
+
'deletionProtection',
|
|
231
|
+
'enableDns64',
|
|
232
|
+
'encrypted',
|
|
233
|
+
'hasMainAssociation',
|
|
234
|
+
'ipv6Native',
|
|
235
|
+
'isDefault',
|
|
236
|
+
'mapCustomerOwnedIpOnLaunch',
|
|
237
|
+
'mapPublicIpOnLaunch',
|
|
238
|
+
'privateDnsEnableResourceNameDnsARecord',
|
|
239
|
+
'privateDnsEnableResourceNameDnsAAAARecord',
|
|
240
|
+
'requesterManaged',
|
|
241
|
+
'storageEncrypted',
|
|
242
|
+
]);
|
|
243
|
+
const STRING_ARRAY_FIELDS = new Set([
|
|
244
|
+
'attachedVpcIds',
|
|
245
|
+
'availabilityZoneNames',
|
|
246
|
+
'availabilityZones',
|
|
247
|
+
'dbClusterMemberIdentifiers',
|
|
248
|
+
'dbProxyNames',
|
|
249
|
+
'instanceIds',
|
|
250
|
+
'securityGroupIds',
|
|
251
|
+
'subnetIds',
|
|
252
|
+
]);
|
|
253
|
+
export function validateAwsPortalRelationshipResourceNode(data, accountId, regions, field) {
|
|
254
|
+
assertValue(data.provider, 'aws', `${field}.provider`);
|
|
255
|
+
assertAccount(data.accountId, accountId, `${field}.accountId`);
|
|
256
|
+
const resourceRegion = requiredString(data.resourceRegion, `${field}.resourceRegion`);
|
|
257
|
+
if (!regions.has(resourceRegion))
|
|
258
|
+
throw new Error(`${field}.resourceRegion is outside artifact scope.`);
|
|
259
|
+
const family = requiredEnum(data.family, AWS_PORTAL_RELATIONSHIP_DISCOVERY_FAMILIES, `${field}.family`);
|
|
260
|
+
assertExactKeys(data, [...RESOURCE_COMMON_KEYS, ...RESOURCE_KEYS[family]], field);
|
|
261
|
+
assertRequiredKeys(data, ['provider', 'accountId', 'family', 'resourceRegion', 'stableKey', 'resourceType', ...REQUIRED_RESOURCE_KEYS[family]], field);
|
|
262
|
+
for (const key of Object.keys(data)) {
|
|
263
|
+
if (STRING_FIELDS.has(key) && data[key] !== undefined)
|
|
264
|
+
requiredString(data[key], `${field}.${key}`);
|
|
265
|
+
if (NUMBER_FIELDS.has(key) && data[key] !== undefined)
|
|
266
|
+
finiteNumber(data[key], `${field}.${key}`);
|
|
267
|
+
if (BOOLEAN_FIELDS.has(key) && data[key] !== undefined)
|
|
268
|
+
requiredBoolean(data[key], `${field}.${key}`);
|
|
269
|
+
if (STRING_ARRAY_FIELDS.has(key) && data[key] !== undefined)
|
|
270
|
+
stringArray(data[key], `${field}.${key}`);
|
|
271
|
+
}
|
|
272
|
+
if (data.tags !== undefined)
|
|
273
|
+
validateTags(data.tags, `${field}.tags`);
|
|
274
|
+
if (data.billing !== undefined)
|
|
275
|
+
validateResourceBillingEvidence(data.billing, `${field}.billing`);
|
|
276
|
+
validateNativeScopeIdentity(data, accountId, resourceRegion, field);
|
|
277
|
+
validateNestedResourceArrays(data, family, field);
|
|
278
|
+
}
|
|
279
|
+
function validateNativeScopeIdentity(data, accountId, resourceRegion, field) {
|
|
280
|
+
if (data.ownerId !== undefined)
|
|
281
|
+
assertAccount(data.ownerId, accountId, `${field}.ownerId`);
|
|
282
|
+
Object.entries(data).forEach(([key, value]) => {
|
|
283
|
+
if (typeof value !== 'string')
|
|
284
|
+
return;
|
|
285
|
+
if (key.endsWith('Arn') || key === 'stableKey' || key === 'kmsKeyId') {
|
|
286
|
+
if (value.startsWith('arn:'))
|
|
287
|
+
validateScopedArn(value, accountId, resourceRegion, `${field}.${key}`);
|
|
288
|
+
}
|
|
289
|
+
if (['availabilityZone', 'availabilityZoneName', 'preferredAvailabilityZone'].includes(key))
|
|
290
|
+
validateAvailabilityZone(value, resourceRegion, `${field}.${key}`);
|
|
291
|
+
});
|
|
292
|
+
for (const key of ['availabilityZones', 'availabilityZoneNames']) {
|
|
293
|
+
if (!Array.isArray(data[key]))
|
|
294
|
+
continue;
|
|
295
|
+
data[key].forEach((value, index) => {
|
|
296
|
+
if (typeof value === 'string')
|
|
297
|
+
validateAvailabilityZone(value, resourceRegion, `${field}.${key}[${index}]`);
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
function validateScopedArn(value, accountId, resourceRegion, field) {
|
|
302
|
+
const match = /^arn:(aws(?:-[a-z0-9-]+)?):[^:]+:([^:]*):([^:]*):.+$/.exec(value);
|
|
303
|
+
if (!match)
|
|
304
|
+
throw new Error(`${field} must be a canonical AWS ARN.`);
|
|
305
|
+
const [, , arnRegion, arnAccountId] = match;
|
|
306
|
+
if (arnRegion !== resourceRegion)
|
|
307
|
+
throw new Error(`${field} ARN Region must match its resource node.`);
|
|
308
|
+
if (arnAccountId !== accountId)
|
|
309
|
+
throw new Error(`${field} ARN account must match its resource node.`);
|
|
310
|
+
}
|
|
311
|
+
function validateAvailabilityZone(value, resourceRegion, field) {
|
|
312
|
+
if (resourceRegion === 'global' || value === resourceRegion || !value.startsWith(resourceRegion))
|
|
313
|
+
throw new Error(`${field} must belong to its resource Region.`);
|
|
314
|
+
}
|
|
315
|
+
function validateTags(value, field) {
|
|
316
|
+
const tags = asRecord(value, field);
|
|
317
|
+
Object.entries(tags).forEach(([key, tagValue]) => {
|
|
318
|
+
requiredString(key, `${field} key`);
|
|
319
|
+
requiredString(tagValue, `${field}.${key}`);
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
function validateNestedResourceArrays(data, family, field) {
|
|
323
|
+
if (family === 'vpc') {
|
|
324
|
+
validateObjectArray(data.cidrBlockAssociations, ['associationId', 'cidrBlock', 'state'], ['cidrBlock'], `${field}.cidrBlockAssociations`);
|
|
325
|
+
validateObjectArray(data.ipv6CidrBlockAssociations, ['associationId', 'ipv6CidrBlock', 'state'], ['ipv6CidrBlock'], `${field}.ipv6CidrBlockAssociations`);
|
|
326
|
+
}
|
|
327
|
+
else if (family === 'subnet') {
|
|
328
|
+
validateObjectArray(data.ipv6CidrBlockAssociations, ['associationId', 'ipv6CidrBlock', 'state'], ['ipv6CidrBlock'], `${field}.ipv6CidrBlockAssociations`);
|
|
329
|
+
}
|
|
330
|
+
else if (family === 'route-table') {
|
|
331
|
+
validateObjectArray(data.associations, ['associationId', 'subnetId', 'gatewayId', 'main', 'associationState', 'associationStateMessage'], [], `${field}.associations`);
|
|
332
|
+
}
|
|
333
|
+
else if (family === 'internet-gateway' || family === 'virtual-private-gateway') {
|
|
334
|
+
validateObjectArray(data.attachments, ['vpcId', 'state'], [], `${field}.attachments`);
|
|
335
|
+
}
|
|
336
|
+
else if (family === 'ebs-volume') {
|
|
337
|
+
validateObjectArray(data.attachments, ['instanceId', 'device', 'state', 'attachTime', 'deleteOnTermination'], [], `${field}.attachments`);
|
|
338
|
+
}
|
|
339
|
+
else if (family === 'nat-gateway') {
|
|
340
|
+
validateObjectArray(data.addresses, ['allocationId', 'associationId', 'isPrimary', 'networkInterfaceId', 'privateIp', 'publicIp', 'status'], [], `${field}.addresses`);
|
|
341
|
+
}
|
|
342
|
+
else if (family === 'rds-db-cluster') {
|
|
343
|
+
validateObjectArray(data.dbClusterMembers, ['dbInstanceIdentifier', 'isClusterWriter', 'promotionTier'], ['dbInstanceIdentifier'], `${field}.dbClusterMembers`);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
function validateObjectArray(value, keys, required, field) {
|
|
347
|
+
asArray(value, field).forEach((entry, index) => {
|
|
348
|
+
const itemField = `${field}[${index}]`;
|
|
349
|
+
const item = asRecord(entry, itemField);
|
|
350
|
+
assertExactKeys(item, keys, itemField);
|
|
351
|
+
assertRequiredKeys(item, required, itemField);
|
|
352
|
+
Object.entries(item).forEach(([key, itemValue]) => {
|
|
353
|
+
if (itemValue === undefined)
|
|
354
|
+
return;
|
|
355
|
+
if (['main', 'deleteOnTermination', 'isPrimary', 'isClusterWriter'].includes(key))
|
|
356
|
+
requiredBoolean(itemValue, `${itemField}.${key}`);
|
|
357
|
+
else if (key === 'promotionTier')
|
|
358
|
+
finiteNumber(itemValue, `${itemField}.${key}`);
|
|
359
|
+
else
|
|
360
|
+
requiredString(itemValue, `${itemField}.${key}`);
|
|
361
|
+
});
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
function asArray(value, field) {
|
|
365
|
+
if (!Array.isArray(value))
|
|
366
|
+
throw new Error(`${field} must be an array.`);
|
|
367
|
+
return value;
|
|
368
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const AWS_PUBLIC_ARTIFACT_SCHEMA_VERSION = 1;
|
|
2
|
+
export const AWS_PUBLIC_ARTIFACT_TYPES = [
|
|
3
|
+
'resource-collection',
|
|
4
|
+
'resource-collection-history',
|
|
5
|
+
'account-summary',
|
|
6
|
+
'account-summary-history',
|
|
7
|
+
'account-summary-ai-cost-summary',
|
|
8
|
+
'commitments-planning',
|
|
9
|
+
'relationships',
|
|
10
|
+
'lifecycle',
|
|
11
|
+
'plugin-subscription',
|
|
12
|
+
'plugin-resource',
|
|
13
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { validateAwsPortalRelationshipArtifact } from './portalRelationshipPublicArtifactValidation.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Schema version for AWS estate orchestration commands. */
|
|
2
|
+
export const AWS_COMMAND_SCHEMA_VERSION = 1;
|
|
3
|
+
/** Canonical provider wire value for AWS commands. */
|
|
4
|
+
export const AWS_COMMAND_PROVIDER = 'aws';
|
|
5
|
+
/** Entities handled by AWS estate orchestration. */
|
|
6
|
+
export const AWS_COMMAND_ENTITIES = ['estate', 'account', 'billing-source'];
|
|
7
|
+
/** Actions supported across AWS estate orchestration commands. */
|
|
8
|
+
export const AWS_COMMAND_ACTIONS = ['reconcile', 'refresh', 'delete'];
|
|
9
|
+
/** Credential-shaped keys forbidden from shared AWS configuration and commands. */
|
|
10
|
+
export const AWS_FORBIDDEN_CREDENTIAL_FIELDS = [
|
|
11
|
+
'accessKeyId',
|
|
12
|
+
'secretAccessKey',
|
|
13
|
+
'sessionToken',
|
|
14
|
+
'credentials',
|
|
15
|
+
'resolvedCredentials',
|
|
16
|
+
'secret',
|
|
17
|
+
'encryptedSecret',
|
|
18
|
+
'credentialReference',
|
|
19
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const DATA_PROTECTION_SCHEMA_VERSION = '2026-06-24';
|
|
2
|
+
export const DATA_PROTECTION_SOURCE = 'Spotto.DataProtectionPosture';
|
|
3
|
+
export const DATA_PROTECTION_PORTAL_FILE = 'data-protection.json.gz';
|
|
4
|
+
export const DATA_PROTECTION_BACKUP_COST_DIAGNOSTICS_FILE = 'data-protection/backup-costs.json.gz';
|
|
5
|
+
export const DATA_PROTECTION_BILLING_SOURCE_FILE = 'history/billing/cost-last-30-days.json';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const GOVERNANCE_REPORT_SCHEMA_VERSION = '2026-05-01.slim-v1';
|
|
2
|
+
export const GOVERNANCE_GRAPH_SCHEMA_VERSION = '2026-05-02.graph-v1';
|
|
3
|
+
export const GOVERNANCE_ACCESS_SCHEMA_VERSION = '2026-05-14.identity-access-v2';
|
|
4
|
+
export const TENANT_GOVERNANCE_REPORT_SCHEMA_VERSION = '2026-05-02.tenant-slim-v1';
|
|
5
|
+
export const TENANT_GOVERNANCE_GRAPH_SCHEMA_VERSION = '2026-05-02.tenant-graph-v1';
|
|
6
|
+
export const GLOBAL_ADMIN_RAW_SCHEMA_VERSION = '2026-06-24.global-admin-raw-v1';
|
|
7
|
+
export const PRIVILEGED_ROLE_SUMMARY_SCHEMA_VERSION = '2026-06-24.privileged-role-summary-v1';
|
|
8
|
+
export const TENANT_GOVERNANCE_ACCESS_SCHEMA_VERSION = '2026-06-24.tenant-governance-access-v1';
|
|
9
|
+
export const GOVERNANCE_REPORT_PORTAL_FILE = 'governance.json.gz';
|
|
10
|
+
export const GOVERNANCE_GRAPH_PORTAL_FILE = 'governance-graph.json.gz';
|
|
11
|
+
export const GOVERNANCE_ACCESS_PORTAL_FILE = 'governance-access.json.gz';
|
|
12
|
+
export const TENANT_GOVERNANCE_REPORT_PORTAL_FILE = 'governance.json.gz';
|
|
13
|
+
export const TENANT_GOVERNANCE_GRAPH_PORTAL_FILE = 'governance-graph.json.gz';
|
|
14
|
+
export const TENANT_GOVERNANCE_ACCESS_PORTAL_FILE = 'governance-access.json.gz';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const AZURE_PORTAL_ARTIFACT_SCHEMA_VERSION = 1;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const RecommendationAuditRowKinds = {
|
|
2
|
+
resourceTarget: 'resource-view:target',
|
|
3
|
+
subscriptionTarget: 'scope-view:target',
|
|
4
|
+
resourceProviderScopeFeed: 'resource-view:providerScope-feed',
|
|
5
|
+
subscriptionProviderScopeFeed: 'scope-view:providerScope-feed',
|
|
6
|
+
};
|
|
7
|
+
export const RecommendationWorkflowAuditEventTypes = {
|
|
8
|
+
assigned: 'WorkflowAssigned',
|
|
9
|
+
laneChanged: 'WorkflowLaneChanged',
|
|
10
|
+
blocked: 'WorkflowBlocked',
|
|
11
|
+
unblocked: 'WorkflowUnblocked',
|
|
12
|
+
returnedToSuggestions: 'ReturnedToSuggestions',
|
|
13
|
+
repaired: 'WorkflowRepaired',
|
|
14
|
+
sourceChanged: 'WorkflowSourceChanged',
|
|
15
|
+
};
|
|
16
|
+
export const RECOMMENDATION_WORKFLOW_AUDIT_DETAILS_SCHEMA_VERSION = 1;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export const SystemTrackIds = {
|
|
2
|
+
resourceHygiene: 'resource-hygiene',
|
|
3
|
+
capacityRightsizing: 'capacity-rightsizing',
|
|
4
|
+
securityPosture: 'security-posture',
|
|
5
|
+
patchingLifecycle: 'patching-lifecycle',
|
|
6
|
+
commitmentsLicensing: 'commitments-licensing',
|
|
7
|
+
backupRecovery: 'backup-recovery',
|
|
8
|
+
perimeterExposure: 'perimeter-exposure',
|
|
9
|
+
identityPrivilege: 'identity-privilege',
|
|
10
|
+
governanceOwnership: 'governance-ownership',
|
|
11
|
+
spendExceptions: 'spend-exceptions',
|
|
12
|
+
};
|
|
13
|
+
export const RecommendationFocusModes = {
|
|
14
|
+
all: 'all',
|
|
15
|
+
finops: 'finops',
|
|
16
|
+
securityGovernance: 'securityGovernance',
|
|
17
|
+
operationalHealth: 'operationalHealth',
|
|
18
|
+
optimizationDelivery: 'optimizationDelivery',
|
|
19
|
+
serviceDelivery: 'serviceDelivery',
|
|
20
|
+
};
|
|
21
|
+
export const RecommendationTrackFacets = {
|
|
22
|
+
orphaned: 'orphaned',
|
|
23
|
+
unattached: 'unattached',
|
|
24
|
+
idle: 'idle',
|
|
25
|
+
underutilized: 'underutilized',
|
|
26
|
+
unprotected: 'unprotected',
|
|
27
|
+
staleBackup: 'stale-backup',
|
|
28
|
+
expiring: 'expiring',
|
|
29
|
+
unpatched: 'unpatched',
|
|
30
|
+
unsupported: 'unsupported',
|
|
31
|
+
publicIngress: 'public-ingress',
|
|
32
|
+
overprivileged: 'overprivileged',
|
|
33
|
+
missingOwnership: 'missing-ownership',
|
|
34
|
+
missingTags: 'missing-tags',
|
|
35
|
+
costAnomaly: 'cost-anomaly',
|
|
36
|
+
};
|
|
37
|
+
export const SystemTrackCardGranularities = {
|
|
38
|
+
recommendation: 'recommendation',
|
|
39
|
+
resource: 'resource',
|
|
40
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const RecommendationWorkflowLanes = {
|
|
2
|
+
prioritized: 'prioritized',
|
|
3
|
+
todo: 'todo',
|
|
4
|
+
inProgress: 'in-progress',
|
|
5
|
+
blocked: 'blocked',
|
|
6
|
+
completed: 'completed',
|
|
7
|
+
};
|
|
8
|
+
export const RecommendationWorkflowSelectionModes = {
|
|
9
|
+
allAffected: 'all-affected',
|
|
10
|
+
selectedSubset: 'selected-subset',
|
|
11
|
+
subscriptionWide: 'subscription-wide',
|
|
12
|
+
};
|
|
13
|
+
export const RECOMMENDATION_WORKFLOW_REPAIR_PAGE_LIMIT = 250;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export var RecommendationCategory;
|
|
2
|
+
(function (RecommendationCategory) {
|
|
3
|
+
RecommendationCategory["Cost"] = "Cost";
|
|
4
|
+
RecommendationCategory["Performance"] = "Performance";
|
|
5
|
+
RecommendationCategory["Reliability"] = "Reliability";
|
|
6
|
+
RecommendationCategory["Security"] = "Security";
|
|
7
|
+
RecommendationCategory["Compliance"] = "Compliance";
|
|
8
|
+
RecommendationCategory["OperationalExcellence"] = "OperationalExcellence";
|
|
9
|
+
RecommendationCategory["OperationalExcellenceAlternative"] = "Operational Excellence";
|
|
10
|
+
})(RecommendationCategory || (RecommendationCategory = {}));
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const REGULATORY_COMPLIANCE_REPORT_SCHEMA_VERSION = '2026-07-29.regulatory-compliance-v1';
|
|
2
|
+
export const REGULATORY_COMPLIANCE_ASSIGNMENT_DETAIL_SCHEMA_VERSION = '2026-07-29.regulatory-compliance-assignment-v1';
|
|
3
|
+
export const POLICY_EXEMPTION_COMMAND_SCHEMA_VERSION = '2026-07-29.policy-exemption-command-v1';
|
|
4
|
+
export const REGULATORY_COMPLIANCE_PORTAL_FILE = 'regulatory-compliance.json.gz';
|
|
5
|
+
export const REGULATORY_COMPLIANCE_ASSIGNMENT_DETAIL_DIRECTORY = 'regulatory-compliance/assignments';
|
|
6
|
+
export const REGULATORY_COMPLIANCE_NOTE_TARGET_TYPES = ['assignment', 'control', 'policy'];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const REPORTING_TEMPLATE_REPORT_TYPES = ['sdm', 'sow', 'review-checklist', 'architecture-assessment'];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Specific reason types for cost changes */
|
|
2
|
+
export var ChangeReasonType;
|
|
3
|
+
(function (ChangeReasonType) {
|
|
4
|
+
ChangeReasonType["NEW_RESOURCE"] = "new_resource";
|
|
5
|
+
ChangeReasonType["REMOVED_RESOURCE"] = "removed_resource";
|
|
6
|
+
ChangeReasonType["QUANTITY_INCREASE"] = "quantity_increase";
|
|
7
|
+
ChangeReasonType["QUANTITY_DECREASE"] = "quantity_decrease";
|
|
8
|
+
ChangeReasonType["RATE_CHANGE"] = "rate_change";
|
|
9
|
+
ChangeReasonType["SKU_CHANGE"] = "sku_change";
|
|
10
|
+
ChangeReasonType["NEW_METER"] = "new_meter";
|
|
11
|
+
ChangeReasonType["REMOVED_METER"] = "removed_meter";
|
|
12
|
+
})(ChangeReasonType || (ChangeReasonType = {}));
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const RESOURCE_HEALTH_EVENTS_FILE_NAME = 'microsoft.resourcehealth-events.json';
|
|
2
|
+
export const RESOURCE_HEALTH_EVENTS_IMPACTED_RESOURCES_FILE_NAME = 'microsoft.resourcehealth-events-impactedresources.json';
|
|
3
|
+
export const RESOURCE_HEALTH_AVAILABILITY_STATUSES_FILE_NAME = 'microsoft.resourcehealth-availabilitystatuses.json';
|
|
4
|
+
export const RESOURCE_HEALTH_EVENTS_PORTAL_FILE_NAME = 'health-events.json';
|
|
5
|
+
export const RESOURCE_HEALTH_AVAILABILITY_STATUSES_PORTAL_FILE_NAME = 'health-availability-statuses.json';
|
|
6
|
+
export const RESOURCE_HEALTH_INDEX_FILE_NAME = 'history/resource-health/index.json';
|
|
7
|
+
export const AZURE_RESOURCE_HEALTH_EVENTS_SOURCE = 'Microsoft.ResourceHealth/events';
|
|
8
|
+
export const AZURE_RESOURCE_HEALTH_IMPACTED_RESOURCES_SOURCE = 'Microsoft.ResourceHealth/events/impactedResources';
|
|
9
|
+
export const AZURE_RESOURCE_HEALTH_AVAILABILITY_STATUSES_SOURCE = 'Microsoft.ResourceHealth/availabilityStatuses';
|
|
10
|
+
export const RESOURCE_HEALTH_EVENTS_SOURCE = AZURE_RESOURCE_HEALTH_EVENTS_SOURCE;
|
|
11
|
+
export const RESOURCE_HEALTH_EVENTS_IMPACTED_RESOURCES_SOURCE = AZURE_RESOURCE_HEALTH_IMPACTED_RESOURCES_SOURCE;
|
|
12
|
+
export const RESOURCE_HEALTH_AVAILABILITY_STATUSES_SOURCE = AZURE_RESOURCE_HEALTH_AVAILABILITY_STATUSES_SOURCE;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|