@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api AWS Compute Optimizer
@version 2019-11-01
@auth AWS SigV4
@endpoints 26
@hint download_for_search
@toc root(26)

@endpoint POST /
@required {resourceType: str, recommendationPreferenceNames: [str]}
@optional {scope: Scope}

@endpoint POST /
@optional {jobIds: [str], filters: [JobFilter], nextToken: str, maxResults: int}
@returns(200) {recommendationExportJobs: [RecommendationExportJob]?, nextToken: str?}

@endpoint POST /
@required {s3DestinationConfig: S3DestinationConfig}
@optional {accountIds: [str], filters: [Filter], fieldsToExport: [str], fileFormat: str, includeMemberAccounts: bool, recommendationPreferences: RecommendationPreferences}
@returns(200) {jobId: str?, s3Destination: S3Destination?{bucket: str?, key: str?, metadataKey: str?}}

@endpoint POST /
@required {s3DestinationConfig: S3DestinationConfig}
@optional {accountIds: [str], filters: [EBSFilter], fieldsToExport: [str], fileFormat: str, includeMemberAccounts: bool}
@returns(200) {jobId: str?, s3Destination: S3Destination?{bucket: str?, key: str?, metadataKey: str?}}

@endpoint POST /
@required {s3DestinationConfig: S3DestinationConfig}
@optional {accountIds: [str], filters: [Filter], fieldsToExport: [str], fileFormat: str, includeMemberAccounts: bool, recommendationPreferences: RecommendationPreferences}
@returns(200) {jobId: str?, s3Destination: S3Destination?{bucket: str?, key: str?, metadataKey: str?}}

@endpoint POST /
@required {s3DestinationConfig: S3DestinationConfig}
@optional {accountIds: [str], filters: [ECSServiceRecommendationFilter], fieldsToExport: [str], fileFormat: str, includeMemberAccounts: bool}
@returns(200) {jobId: str?, s3Destination: S3Destination?{bucket: str?, key: str?, metadataKey: str?}}

@endpoint POST /
@required {s3DestinationConfig: S3DestinationConfig}
@optional {accountIds: [str], filters: [LambdaFunctionRecommendationFilter], fieldsToExport: [str], fileFormat: str, includeMemberAccounts: bool}
@returns(200) {jobId: str?, s3Destination: S3Destination?{bucket: str?, key: str?, metadataKey: str?}}

@endpoint POST /
@required {s3DestinationConfig: S3DestinationConfig}
@optional {accountIds: [str], filters: [LicenseRecommendationFilter], fieldsToExport: [str], fileFormat: str, includeMemberAccounts: bool}
@returns(200) {jobId: str?, s3Destination: S3Destination?{bucket: str?, key: str?, metadataKey: str?}}

@endpoint POST /
@required {s3DestinationConfig: S3DestinationConfig}
@optional {accountIds: [str], filters: [RDSDBRecommendationFilter], fieldsToExport: [str], fileFormat: str, includeMemberAccounts: bool, recommendationPreferences: RecommendationPreferences}
@returns(200) {jobId: str?, s3Destination: S3Destination?{bucket: str?, key: str?, metadataKey: str?}}

@endpoint POST /
@optional {accountIds: [str], autoScalingGroupArns: [str], nextToken: str, maxResults: int, filters: [Filter], recommendationPreferences: RecommendationPreferences}
@returns(200) {nextToken: str?, autoScalingGroupRecommendations: [AutoScalingGroupRecommendation]?, errors: [GetRecommendationError]?}

@endpoint POST /
@optional {volumeArns: [str], nextToken: str, maxResults: int, filters: [EBSFilter], accountIds: [str]}
@returns(200) {nextToken: str?, volumeRecommendations: [VolumeRecommendation]?, errors: [GetRecommendationError]?}

@endpoint POST /
@optional {instanceArns: [str], nextToken: str, maxResults: int, filters: [Filter], accountIds: [str], recommendationPreferences: RecommendationPreferences}
@returns(200) {nextToken: str?, instanceRecommendations: [InstanceRecommendation]?, errors: [GetRecommendationError]?}

@endpoint POST /
@required {instanceArn: str, stat: str, period: int, startTime: str(timestamp), endTime: str(timestamp)}
@optional {recommendationPreferences: RecommendationPreferences}
@returns(200) {recommendedOptionProjectedMetrics: [RecommendedOptionProjectedMetric]?}

@endpoint POST /
@required {serviceArn: str, stat: str, period: int, startTime: str(timestamp), endTime: str(timestamp)}
@returns(200) {recommendedOptionProjectedMetrics: [ECSServiceRecommendedOptionProjectedMetric]?}

@endpoint POST /
@optional {serviceArns: [str], nextToken: str, maxResults: int, filters: [ECSServiceRecommendationFilter], accountIds: [str]}
@returns(200) {nextToken: str?, ecsServiceRecommendations: [ECSServiceRecommendation]?, errors: [GetRecommendationError]?}

@endpoint POST /
@required {resourceArn: str}
@returns(200) {enhancedInfrastructureMetrics: str?, externalMetricsPreference: ExternalMetricsPreference?{source: str?}, lookBackPeriod: str?, utilizationPreferences: [UtilizationPreference]?, preferredResources: [EffectivePreferredResource]?}

@endpoint POST /
@returns(200) {status: str?, statusReason: str?, memberAccountsEnrolled: bool?, lastUpdatedTimestamp: str(timestamp)?, numberOfMemberAccountsOptedIn: int?}

@endpoint POST /
@optional {filters: [EnrollmentFilter], nextToken: str, maxResults: int}
@returns(200) {accountEnrollmentStatuses: [AccountEnrollmentStatus]?, nextToken: str?}

@endpoint POST /
@optional {functionArns: [str], accountIds: [str], filters: [LambdaFunctionRecommendationFilter], nextToken: str, maxResults: int}
@returns(200) {nextToken: str?, lambdaFunctionRecommendations: [LambdaFunctionRecommendation]?}

@endpoint POST /
@optional {resourceArns: [str], nextToken: str, maxResults: int, filters: [LicenseRecommendationFilter], accountIds: [str]}
@returns(200) {nextToken: str?, licenseRecommendations: [LicenseRecommendation]?, errors: [GetRecommendationError]?}

@endpoint POST /
@required {resourceArn: str, stat: str, period: int, startTime: str(timestamp), endTime: str(timestamp)}
@optional {recommendationPreferences: RecommendationPreferences}
@returns(200) {recommendedOptionProjectedMetrics: [RDSDatabaseRecommendedOptionProjectedMetric]?}

@endpoint POST /
@optional {resourceArns: [str], nextToken: str, maxResults: int, filters: [RDSDBRecommendationFilter], accountIds: [str], recommendationPreferences: RecommendationPreferences}
@returns(200) {nextToken: str?, rdsDBRecommendations: [RDSDBRecommendation]?, errors: [GetRecommendationError]?}

@endpoint POST /
@required {resourceType: str}
@optional {scope: Scope, nextToken: str, maxResults: int}
@returns(200) {nextToken: str?, recommendationPreferencesDetails: [RecommendationPreferencesDetail]?}

@endpoint POST /
@optional {accountIds: [str], nextToken: str, maxResults: int}
@returns(200) {nextToken: str?, recommendationSummaries: [RecommendationSummary]?}

@endpoint POST /
@required {resourceType: str}
@optional {scope: Scope, enhancedInfrastructureMetrics: str, inferredWorkloadTypes: str, externalMetricsPreference: ExternalMetricsPreference, lookBackPeriod: str, utilizationPreferences: [UtilizationPreference], preferredResources: [PreferredResource], savingsEstimationMode: str}

@endpoint POST /
@required {status: str}
@optional {includeMemberAccounts: bool}
@returns(200) {status: str?, statusReason: str?}

@end
