@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
@desc Creates a Device Advisor test suite. Requires permission to access the CreateSuiteDefinition action.
@required {suiteDefinitionConfiguration: SuiteDefinitionConfiguration}
@optional {tags: map<str,str>}
@returns(200) {suiteDefinitionId: str?, suiteDefinitionArn: str?, suiteDefinitionName: str?, createdAt: str(timestamp)?}

@endpoint DELETE /suiteDefinitions/{suiteDefinitionId}
@desc Deletes a Device Advisor test suite. Requires permission to access the DeleteSuiteDefinition action.
@required {suiteDefinitionId: str}

@endgroup

@group endpoint
@endpoint GET /endpoint
@desc Gets information about an Device Advisor endpoint.
@optional {thingArn: str, certificateArn: str, deviceRoleArn: str, authenticationMethod: str}
@returns(200) {endpoint: str?}

@endgroup

@group suiteDefinitions
@endpoint GET /suiteDefinitions/{suiteDefinitionId}
@desc Gets information about a Device Advisor test suite. Requires permission to access the GetSuiteDefinition action.
@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}
@desc Gets information about a Device Advisor test suite run. Requires permission to access the GetSuiteRun action.
@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
@desc Gets a report download link for a successful Device Advisor qualifying test suite run. Requires permission to access the GetSuiteRunReport action.
@required {suiteDefinitionId: str, suiteRunId: str}
@returns(200) {qualificationReportDownloadUrl: str?}

@endpoint GET /suiteDefinitions
@desc Lists the Device Advisor test suites you have created. Requires permission to access the ListSuiteDefinitions action.
@optional {maxResults: int, nextToken: str}
@returns(200) {suiteDefinitionInformationList: [SuiteDefinitionInformation]?, nextToken: str?}

@endgroup

@group suiteRuns
@endpoint GET /suiteRuns
@desc Lists runs of the specified Device Advisor test suite. You can list all runs of the test suite, or the runs of a specific version of the test suite. Requires permission to access the ListSuiteRuns action.
@optional {suiteDefinitionId: str, suiteDefinitionVersion: str, maxResults: int, nextToken: str}
@returns(200) {suiteRunsList: [SuiteRunInformation]?, nextToken: str?}

@endgroup

@group tags
@endpoint GET /tags/{resourceArn}
@desc Lists the tags attached to an IoT Device Advisor resource. Requires permission to access the ListTagsForResource action.
@required {resourceArn: str}
@returns(200) {tags: map<str,str>?}

@endgroup

@group suiteDefinitions
@endpoint POST /suiteDefinitions/{suiteDefinitionId}/suiteRuns
@desc Starts a Device Advisor test suite run. Requires permission to access the StartSuiteRun action.
@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
@desc Stops a Device Advisor test suite run that is currently running. Requires permission to access the StopSuiteRun action.
@required {suiteDefinitionId: str, suiteRunId: str}

@endgroup

@group tags
@endpoint POST /tags/{resourceArn}
@desc Adds to and modifies existing tags of an IoT Device Advisor resource. Requires permission to access the TagResource action.
@required {resourceArn: str, tags: map<str,str>}

@endpoint DELETE /tags/{resourceArn}
@desc Removes tags from an IoT Device Advisor resource. Requires permission to access the UntagResource action.
@required {resourceArn: str, tagKeys: [str]}

@endgroup

@group suiteDefinitions
@endpoint PATCH /suiteDefinitions/{suiteDefinitionId}
@desc Updates a Device Advisor test suite. Requires permission to access the UpdateSuiteDefinition action.
@required {suiteDefinitionId: str, suiteDefinitionConfiguration: SuiteDefinitionConfiguration}
@returns(200) {suiteDefinitionId: str?, suiteDefinitionArn: str?, suiteDefinitionName: str?, suiteDefinitionVersion: str?, createdAt: str(timestamp)?, lastUpdatedAt: str(timestamp)?}

@endgroup

@end
