@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api AWS IoT 1-Click Projects Service
@version 2018-05-14
@auth AWS SigV4
@endpoints 16
@toc projects(13), tags(3)

@group projects
@endpoint PUT /projects/{projectName}/placements/{placementName}/devices/{deviceTemplateName}
@required {projectName: str, placementName: str, deviceTemplateName: str, deviceId: str}

@endpoint POST /projects/{projectName}/placements
@required {projectName: str, placementName: str}
@optional {attributes: map<str,str>}

@endpoint POST /projects
@required {projectName: str}
@optional {description: str, placementTemplate: PlacementTemplate, tags: map<str,str>}

@endpoint DELETE /projects/{projectName}/placements/{placementName}
@required {placementName: str, projectName: str}

@endpoint DELETE /projects/{projectName}
@required {projectName: str}

@endpoint GET /projects/{projectName}/placements/{placementName}
@required {placementName: str, projectName: str}
@returns(200) {placement: PlacementDescription{projectName: str, placementName: str, attributes: map<str,str>, createdDate: str(timestamp), updatedDate: str(timestamp)}}

@endpoint GET /projects/{projectName}
@required {projectName: str}
@returns(200) {project: ProjectDescription{arn: str?, projectName: str, description: str?, createdDate: str(timestamp), updatedDate: str(timestamp), placementTemplate: PlacementTemplate?{defaultAttributes: map<str,str>?, deviceTemplates: map<str,DeviceTemplate>?}, tags: map<str,str>?}}

@endpoint DELETE /projects/{projectName}/placements/{placementName}/devices/{deviceTemplateName}
@required {projectName: str, placementName: str, deviceTemplateName: str}

@endpoint GET /projects/{projectName}/placements/{placementName}/devices
@required {projectName: str, placementName: str}
@returns(200) {devices: map<str,str>}

@endpoint GET /projects/{projectName}/placements
@required {projectName: str}
@optional {nextToken: str, maxResults: int}
@returns(200) {placements: [PlacementSummary], nextToken: str?}

@endpoint GET /projects
@optional {nextToken: str, maxResults: int}
@returns(200) {projects: [ProjectSummary], nextToken: str?}

@endgroup

@group tags
@endpoint GET /tags/{resourceArn}
@required {resourceArn: str}
@returns(200) {tags: map<str,str>?}

@endpoint POST /tags/{resourceArn}
@required {resourceArn: str, tags: map<str,str>}

@endpoint DELETE /tags/{resourceArn}
@required {resourceArn: str, tagKeys: [str]}

@endgroup

@group projects
@endpoint PUT /projects/{projectName}/placements/{placementName}
@required {placementName: str, projectName: str}
@optional {attributes: map<str,str>}

@endpoint PUT /projects/{projectName}
@required {projectName: str}
@optional {description: str, placementTemplate: PlacementTemplate}

@endgroup

@end
