@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
@desc This operation clones an existing backend.
@required {AppId: str, BackendEnvironmentName: str, TargetEnvironmentName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend
@desc This operation creates a backend for an Amplify app. Backends are automatically created at the time of app creation.
@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
@desc Creates a new backend API resource.
@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
@desc Creates a new backend authentication resource.
@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
@desc Creates a config object for a backend.
@required {AppId: str}
@optional {BackendManagerAppId: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, JobId: str?, Status: str?}

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

@endpoint POST /backend/{appId}/challenge
@desc Generates a one-time challenge code to authenticate a user into your Amplify Admin UI.
@required {AppId: str}
@returns(200) {AppId: str?, ChallengeCode: str?, SessionId: str?, Ttl: str?}

@endpoint POST /backend/{appId}/environments/{backendEnvironmentName}/remove
@desc Removes an existing environment from your Amplify project.
@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
@desc Deletes an existing backend API resource.
@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
@desc Deletes an existing backend authentication resource.
@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
@desc Removes the specified backend storage resource.
@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
@desc Deletes the challenge token based on the given appId and sessionId.
@required {AppId: str, SessionId: str}
@returns(200) {IsSuccess: bool?}

@endpoint POST /backend/{appId}/api/{backendEnvironmentName}/generateModels
@desc Generates a model schema for an existing backend API resource.
@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
@desc Provides project-level details for your Amplify UI project.
@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
@desc Gets the details for a backend API.
@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
@desc Gets a model introspection schema for an existing backend API resource.
@required {AppId: str, BackendEnvironmentName: str, ResourceName: str}
@returns(200) {Models: str?, Status: str?, ModelIntrospectionSchema: str?}

@endpoint POST /backend/{appId}/auth/{backendEnvironmentName}/details
@desc Gets a backend auth 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}
@desc Returns information about a specific job.
@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
@desc Gets details for a backend storage resource.
@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}
@desc Gets the challenge token based on the given appId and sessionId.
@required {AppId: str, SessionId: str}
@returns(200) {AppId: str?, ChallengeCode: str?, SessionId: str?, Ttl: str?}

@endpoint POST /backend/{appId}/auth/{backendEnvironmentName}/import
@desc Imports an existing backend authentication resource.
@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
@desc Imports an existing backend storage resource.
@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}
@desc Lists the jobs for the backend of an Amplify app.
@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
@desc The list of S3 buckets in your account.
@optional {NextToken: str}
@returns(200) {Buckets: [S3BucketInfo]?, NextToken: str?}

@endgroup

@group backend
@endpoint POST /backend/{appId}/remove
@desc Removes all backend environments from your Amplify project.
@required {AppId: str}
@optional {CleanAmplifyApp: bool}
@returns(200) {AppId: str?, Error: str?, JobId: str?, Operation: str?, Status: str?}

@endpoint POST /backend/{appId}/config/remove
@desc Removes the AWS resources required to access the Amplify Admin UI.
@required {AppId: str}
@returns(200) {Error: str?}

@endpoint POST /backend/{appId}/api/{backendEnvironmentName}
@desc Updates an existing backend API resource.
@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}
@desc Updates an existing backend authentication resource.
@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
@desc Updates the AWS resources required to access the Amplify Admin UI.
@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}
@desc Updates a specific job.
@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}
@desc Updates an existing backend storage resource.
@required {AppId: str, BackendEnvironmentName: str, ResourceConfig: UpdateBackendStorageResourceConfig, ResourceName: str}
@returns(200) {AppId: str?, BackendEnvironmentName: str?, JobId: str?, Status: str?}

@endgroup

@end
