@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api AWS IoT Core Device Advisor
@version 2020-09-18
@auth AWS SigV4
@endpoints 14
@toc suiteDefinitions(9), endpoint(1), suiteRuns(1), tags(3)

@group suiteDefinitions
@endpoint POST /suiteDefinitions
@required {suiteDefinitionConfiguration: SuiteDefinitionConfiguration}
@optional {tags: map<str,str>}
@returns(200) {suiteDefinitionId: str?, suiteDefinitionArn: str?, suiteDefinitionName: str?, createdAt: str(timestamp)?}

@endpoint DELETE /suiteDefinitions/{suiteDefinitionId}
@required {suiteDefinitionId: str}

@endgroup

@group endpoint
@endpoint GET /endpoint
@optional {thingArn: str, certificateArn: str, deviceRoleArn: str, authenticationMethod: str}
@returns(200) {endpoint: str?}

@endgroup

@group suiteDefinitions
@endpoint GET /suiteDefinitions/{suiteDefinitionId}
@required {suiteDefinitionId: str}
@optional {suiteDefinitionVersion: str}
@returns(200) {suiteDefinitionId: str?, suiteDefinitionArn: str?, suiteDefinitionVersion: str?, latestVersion: str?, suiteDefinitionConfiguration: SuiteDefinitionConfiguration?{suiteDefinitionName: str, devices: [DeviceUnderTest]?, intendedForQualification: bool?, isLongDurationTest: bool?, rootGroup: str, devicePermissionRoleArn: str, protocol: str?}, createdAt: str(timestamp)?, lastModifiedAt: str(timestamp)?, tags: map<str,str>?}

@endpoint GET /suiteDefinitions/{suiteDefinitionId}/suiteRuns/{suiteRunId}
@required {suiteDefinitionId: str, suiteRunId: str}
@returns(200) {suiteDefinitionId: str?, suiteDefinitionVersion: str?, suiteRunId: str?, suiteRunArn: str?, suiteRunConfiguration: SuiteRunConfiguration?{primaryDevice: DeviceUnderTest{thingArn: str?, certificateArn: str?, deviceRoleArn: str?}, selectedTestList: [str]?, parallelRun: bool?}, testResult: TestResult?{groups: [GroupResult]?}, startTime: str(timestamp)?, endTime: str(timestamp)?, status: str?, errorReason: str?, tags: map<str,str>?}

@endpoint GET /suiteDefinitions/{suiteDefinitionId}/suiteRuns/{suiteRunId}/report
@required {suiteDefinitionId: str, suiteRunId: str}
@returns(200) {qualificationReportDownloadUrl: str?}

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

@endgroup

@group suiteRuns
@endpoint GET /suiteRuns
@optional {suiteDefinitionId: str, suiteDefinitionVersion: str, maxResults: int, nextToken: str}
@returns(200) {suiteRunsList: [SuiteRunInformation]?, nextToken: str?}

@endgroup

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

@endgroup

@group suiteDefinitions
@endpoint POST /suiteDefinitions/{suiteDefinitionId}/suiteRuns
@required {suiteDefinitionId: str, suiteRunConfiguration: SuiteRunConfiguration}
@optional {suiteDefinitionVersion: str, tags: map<str,str>}
@returns(200) {suiteRunId: str?, suiteRunArn: str?, createdAt: str(timestamp)?, endpoint: str?}

@endpoint POST /suiteDefinitions/{suiteDefinitionId}/suiteRuns/{suiteRunId}/stop
@required {suiteDefinitionId: str, suiteRunId: str}

@endgroup

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

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

@endgroup

@group suiteDefinitions
@endpoint PATCH /suiteDefinitions/{suiteDefinitionId}
@required {suiteDefinitionId: str, suiteDefinitionConfiguration: SuiteDefinitionConfiguration}
@returns(200) {suiteDefinitionId: str?, suiteDefinitionArn: str?, suiteDefinitionName: str?, suiteDefinitionVersion: str?, createdAt: str(timestamp)?, lastUpdatedAt: str(timestamp)?}

@endgroup

@end
