@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api AmplifyBackend
@version 2020-08-11
@auth AWS SigV4
@endpoints 31
@hint download_for_search
@toc backend(30), s3Buckets(1)

@group backend
@endpoint POST /backend/{appId}/environments/{backendEnvironmentName}/clone
@required {AppId: str, BackendEnvironmentName: str, TargetEnvironmentName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend
@required {AppId: str, AppName: str, BackendEnvironmentName: str}
@optional {ResourceConfig: ResourceConfig, ResourceName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend/{appId}/api
@required {AppId: str, BackendEnvironmentName: str, ResourceConfig: BackendAPIResourceConfig, ResourceName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend/{appId}/auth
@required {AppId: str, BackendEnvironmentName: str, ResourceConfig: CreateBackendAuthResourceConfig, ResourceName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend/{appId}/config
@required {AppId: str}
@optional {BackendManagerAppId: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, JobId: str?, Status: str?}

@endpoint POST /backend/{appId}/storage
@required {AppId: str, BackendEnvironmentName: str, ResourceConfig: CreateBackendStorageResourceConfig, ResourceName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, JobId: str?, Status: str?}

@endpoint POST /backend/{appId}/challenge
@required {AppId: str}
@returns(200) {AppId: str?, ChallengeCode: str?, SessionId: str?, Ttl: str?}

@endpoint POST /backend/{appId}/environments/{backendEnvironmentName}/remove
@required {AppId: str, BackendEnvironmentName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend/{appId}/api/{backendEnvironmentName}/remove
@required {AppId: str, BackendEnvironmentName: str, ResourceName: str}
@optional {ResourceConfig: BackendAPIResourceConfig}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend/{appId}/auth/{backendEnvironmentName}/remove
@required {AppId: str, BackendEnvironmentName: str, ResourceName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend/{appId}/storage/{backendEnvironmentName}/remove
@required {AppId: str, BackendEnvironmentName: str, ResourceName: str, ServiceName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, JobId: str?, Status: str?}

@endpoint POST /backend/{appId}/challenge/{sessionId}/remove
@required {AppId: str, SessionId: str}
@returns(200) {IsSuccess: bool?}

@endpoint POST /backend/{appId}/api/{backendEnvironmentName}/generateModels
@required {AppId: str, BackendEnvironmentName: str, ResourceName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend/{appId}/details
@required {AppId: str}
@optional {BackendEnvironmentName: str}
@returns(200) {AmplifyFeatureFlags: str?, AmplifyMetaConfig: str?, AppId: str?, AppName: str?, BackendEnvironmentList: [str]?, BackendEnvironmentName: str?, Error: str?}

@endpoint POST /backend/{appId}/api/{backendEnvironmentName}/details
@required {AppId: str, BackendEnvironmentName: str, ResourceName: str}
@optional {ResourceConfig: BackendAPIResourceConfig}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, ResourceConfig: BackendAPIResourceConfig?{AdditionalAuthTypes: [BackendAPIAuthType]?, ApiName: str?, ConflictResolution: BackendAPIConflictResolution?{ResolutionStrategy: str?}, DefaultAuthType: BackendAPIAuthType?{Mode: str?, Settings: BackendAPIAppSyncAuthSettings?{CognitoUserPoolId: str?, Description: str?, ExpirationTime: num(f64)?, OpenIDAuthTTL: str?, OpenIDClientId: str?, OpenIDIatTTL: str?, OpenIDIssueURL: str?, OpenIDProviderName: str?}}, Service: str?, TransformSchema: str?}, ResourceName: str?}

@endpoint POST /backend/{appId}/api/{backendEnvironmentName}/getModels
@required {AppId: str, BackendEnvironmentName: str, ResourceName: str}
@returns(200) {Models: str?, Status: str?, ModelIntrospectionSchema: str?}

@endpoint POST /backend/{appId}/auth/{backendEnvironmentName}/details
@required {AppId: str, BackendEnvironmentName: str, ResourceName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, ResourceConfig: CreateBackendAuthResourceConfig?{AuthResources: str, IdentityPoolConfigs: CreateBackendAuthIdentityPoolConfig?{IdentityPoolName: str, UnauthenticatedLogin: bool}, Service: str, UserPoolConfigs: CreateBackendAuthUserPoolConfig{ForgotPassword: CreateBackendAuthForgotPasswordConfig?{DeliveryMethod: str, EmailSettings: EmailSettings?, SmsSettings: SmsSettings?}, Mfa: CreateBackendAuthMFAConfig?{MFAMode: str, Settings: Settings?}, OAuth: CreateBackendAuthOAuthConfig?{DomainPrefix: str?, OAuthGrantType: str, OAuthScopes: [str], RedirectSignInURIs: [str], RedirectSignOutURIs: [str], SocialProviderSettings: SocialProviderSettings?}, PasswordPolicy: CreateBackendAuthPasswordPolicyConfig?{AdditionalConstraints: [str]?, MinimumLength: num(f64)}, RequiredSignUpAttributes: [str], SignInMethod: str, UserPoolName: str, VerificationMessage: CreateBackendAuthVerificationMessageConfig?{DeliveryMethod: str, EmailSettings: EmailSettings?, SmsSettings: SmsSettings?}}}, ResourceName: str?}

@endpoint GET /backend/{appId}/job/{backendEnvironmentName}/{jobId}
@required {AppId: str, BackendEnvironmentName: str, JobId: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, CreateTime: str?, Error: str?, JobId: str?, Operation: str?, Status: str?, UpdateTime: str?}

@endpoint POST /backend/{appId}/storage/{backendEnvironmentName}/details
@required {AppId: str, BackendEnvironmentName: str, ResourceName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, ResourceConfig: GetBackendStorageResourceConfig?{BucketName: str?, Imported: bool, Permissions: BackendStoragePermissions?{Authenticated: [str], UnAuthenticated: [str]?}, ServiceName: str}, ResourceName: str?}

@endpoint GET /backend/{appId}/challenge/{sessionId}
@required {AppId: str, SessionId: str}
@returns(200) {AppId: str?, ChallengeCode: str?, SessionId: str?, Ttl: str?}

@endpoint POST /backend/{appId}/auth/{backendEnvironmentName}/import
@required {AppId: str, BackendEnvironmentName: str, NativeClientId: str, UserPoolId: str, WebClientId: str}
@optional {IdentityPoolId: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend/{appId}/storage/{backendEnvironmentName}/import
@required {AppId: str, BackendEnvironmentName: str, ServiceName: str}
@optional {BucketName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, JobId: str?, Status: str?}

@endpoint POST /backend/{appId}/job/{backendEnvironmentName}
@required {AppId: str, BackendEnvironmentName: str}
@optional {JobId: str, MaxResults: int, NextToken: str, Operation: str, Status: str}
@returns(200) {Jobs: [BackendJobRespObj]?, NextToken: str?}

@endgroup

@group s3Buckets
@endpoint POST /s3Buckets
@optional {NextToken: str}
@returns(200) {Buckets: [S3BucketInfo]?, NextToken: str?}

@endgroup

@group backend
@endpoint POST /backend/{appId}/remove
@required {AppId: str}
@optional {CleanAmplifyApp: bool}
@returns(200) {AppId: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend/{appId}/config/remove
@required {AppId: str}
@returns(200) {Error: str?}

@endpoint POST /backend/{appId}/api/{backendEnvironmentName}
@required {AppId: str, BackendEnvironmentName: str, ResourceName: str}
@optional {ResourceConfig: BackendAPIResourceConfig}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend/{appId}/auth/{backendEnvironmentName}
@required {AppId: str, BackendEnvironmentName: str, ResourceConfig: UpdateBackendAuthResourceConfig, ResourceName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend/{appId}/config/update
@required {AppId: str}
@optional {LoginAuthConfig: LoginAuthConfigReqObj}
@returns(200) {AppId: str?, BackendManagerAppId: str?, Error: str?, LoginAuthConfig: LoginAuthConfigReqObj?{AwsCognitoIdentityPoolId: str?, AwsCognitoRegion: str?, AwsUserPoolsId: str?, AwsUserPoolsWebClientId: str?}}

@endpoint POST /backend/{appId}/job/{backendEnvironmentName}/{jobId}
@required {AppId: str, BackendEnvironmentName: str, JobId: str}
@optional {Operation: str, Status: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, CreateTime: str?, Error: str?, JobId: str?, Operation: str?, Status: str?, UpdateTime: str?}

@endpoint POST /backend/{appId}/storage/{backendEnvironmentName}
@required {AppId: str, BackendEnvironmentName: str, ResourceConfig: UpdateBackendStorageResourceConfig, ResourceName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, JobId: str?, Status: str?}

@endgroup

@end
