@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api AWS Mobile
@base http://mobile.{region}.amazonaws.com
@version 2017-07-01
@auth ApiKey Authorization in header
@endpoints 9
@toc projects(3), bundles(3), project#projectId(1), exports(1), update#projectId(1)

@group projects
@endpoint POST /projects
@desc Creates an AWS Mobile Hub project.
@optional {name: str # Name of the project., region: str # Default region where project resources should be created., snapshotId: str # Unique identifier for an exported snapshot of project configuration. This snapshot identifier is included in the share URL when a project is exported., contents: str # Binary file data.}
@returns(200) {details: any} # Success
@errors {480: InternalFailureException, 481: ServiceUnavailableException, 482: UnauthorizedException, 483: TooManyRequestsException, 484: BadRequestException, 485: NotFoundException, 486: LimitExceededException}

@endpoint GET /projects
@desc Lists projects in AWS Mobile Hub.
@optional {maxResults: int # Maximum number of records to list in a single response., nextToken: str # Pagination token. Set to null to start listing projects from start. If non-null pagination token is returned in a result, then pass its value in here in another request to list more projects.}
@returns(200) {projects: [map], nextToken: str} # Success
@errors {480: InternalFailureException, 481: ServiceUnavailableException, 482: UnauthorizedException, 483: TooManyRequestsException, 484: BadRequestException}

@endpoint DELETE /projects/{projectId}
@desc Delets a project in AWS Mobile Hub.
@required {projectId: str # Unique project identifier.}
@returns(200) {deletedResources: any, orphanedResources: any} # Success
@errors {480: InternalFailureException, 481: ServiceUnavailableException, 482: UnauthorizedException, 483: TooManyRequestsException, 484: NotFoundException}

@endgroup

@group bundles
@endpoint GET /bundles/{bundleId}
@desc Get the bundle details for the requested bundle id.
@required {bundleId: str # Unique bundle identifier.}
@returns(200) {details: any} # Success
@errors {480: InternalFailureException, 481: ServiceUnavailableException, 482: UnauthorizedException, 483: TooManyRequestsException, 484: BadRequestException, 485: NotFoundException}

@endpoint POST /bundles/{bundleId}
@desc Generates customized software development kit (SDK) and or tool packages used to integrate mobile web or mobile app clients with backend AWS resources.
@required {bundleId: str # Unique bundle identifier.}
@optional {projectId: str # Unique project identifier., platform: str(OSX/WINDOWS/LINUX/OBJC/SWIFT/ANDROID/JAVASCRIPT) # Developer desktop or target application platform.}
@returns(200) {downloadUrl: any} # Success
@errors {480: InternalFailureException, 481: ServiceUnavailableException, 482: UnauthorizedException, 483: TooManyRequestsException, 484: BadRequestException, 485: NotFoundException}

@endgroup

@group project#projectId
@endpoint GET /project#projectId
@desc Gets details about a project in AWS Mobile Hub.
@required {projectId: str # Unique project identifier.}
@optional {syncFromResources: bool # If set to true, causes AWS Mobile Hub to synchronize information from other services, e.g., update state of AWS CloudFormation stacks in the AWS Mobile Hub project.}
@returns(200) {details: map{name: str, projectId: str, region: str, state: str, createdDate: any, lastUpdatedDate: any, consoleUrl: any, resources: [map]}} # Success
@errors {480: InternalFailureException, 481: ServiceUnavailableException, 482: UnauthorizedException, 483: TooManyRequestsException, 484: BadRequestException, 485: NotFoundException}

@endgroup

@group exports
@endpoint POST /exports/{projectId}
@desc Exports project configuration to a snapshot which can be downloaded and shared. Note that mobile app push credentials are encrypted in exported projects, so they can only be shared successfully within the same AWS account.
@required {projectId: str # Unique project identifier.}
@returns(200) {downloadUrl: any, shareUrl: any, snapshotId: any} # Success
@errors {480: InternalFailureException, 481: ServiceUnavailableException, 482: UnauthorizedException, 483: TooManyRequestsException, 484: BadRequestException, 485: NotFoundException}

@endgroup

@group bundles
@endpoint GET /bundles
@desc List all available bundles.
@optional {maxResults: int # Maximum number of records to list in a single response., nextToken: str # Pagination token. Set to null to start listing bundles from start. If non-null pagination token is returned in a result, then pass its value in here in another request to list more bundles.}
@returns(200) {bundleList: any, nextToken: any} # Success
@errors {480: InternalFailureException, 481: ServiceUnavailableException, 482: UnauthorizedException, 483: TooManyRequestsException, 484: BadRequestException}

@endgroup

@group update#projectId
@endpoint POST /update#projectId
@desc Update an existing project.
@required {projectId: str # Unique project identifier.}
@optional {contents: str # Binary file data.}
@returns(200) {details: any} # Success
@errors {480: InternalFailureException, 481: ServiceUnavailableException, 482: UnauthorizedException, 483: TooManyRequestsException, 484: BadRequestException, 485: NotFoundException, 486: AccountActionRequiredException, 487: LimitExceededException}

@endgroup

@end
