@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api AWS IoT
@version 2015-05-28
@auth AWS SigV4
@endpoints 255
@hint download_for_search
@toc accept-certificate-transfer(1), billing-groups(8), thing-groups(9), jobs(9), target-policies(2), principal-policies(3), security-profiles(8), things(14), audit(25), cancel-certificate-transfer(1), detect(5), default-authorizer(3), confirmdestination(1), authorizer(5), certificates(5), certificate-providers(5), custom-metric(4), dimensions(5), domainConfigurations(5), dynamic-thing-groups(3), fleet-metric(4), job-templates(4), keys-and-certificate(1), mitigationactions(5), otaUpdates(4), packages(10), policies(9), provisioning-templates(10), role-aliases(5), streams(5), thing-types(5), rules(7), destinations(5), cacertificate(4), registrationcode(2), v2LoggingLevel(3), endpoint(1), event-configurations(2), indices(7), managed-job-templates(2), thing-registration-tasks(5), behavior-model-training(1), effective-policies(1), indexing(2), loggingOptions(2), package-configuration(2), v2LoggingOptions(2), active-violations(1), attached-policies(1), authorizers(1), cacertificates(1), certificates-by-ca(1), custom-metrics(1), fleet-metrics(1), metric-values(1), certificates-out-going(1), policy-principals(1), principals(1), security-profiles-for-target(1), tags(2), policy-targets(1), violation-events(1), violations(1), certificate(2), reject-certificate-transfer(1), test-authorization(1), transfer-certificate(1), untag(1), security-profile-behaviors(1)

@group accept-certificate-transfer
@endpoint PATCH /accept-certificate-transfer/{certificateId}
@required {certificateId: str}
@optional {setAsActive: bool}

@endgroup

@group billing-groups
@endpoint PUT /billing-groups/addThingToBillingGroup
@optional {billingGroupName: str, billingGroupArn: str, thingName: str, thingArn: str}

@endgroup

@group thing-groups
@endpoint PUT /thing-groups/addThingToThingGroup
@optional {thingGroupName: str, thingGroupArn: str, thingName: str, thingArn: str, overrideDynamicGroups: bool}

@endgroup

@group jobs
@endpoint POST /jobs/{jobId}/targets
@required {jobId: str, targets: [str]}
@optional {namespaceId: str, comment: str}
@returns(200) {jobArn: str?, jobId: str?, description: str?}

@endgroup

@group target-policies
@endpoint PUT /target-policies/{policyName}
@required {policyName: str, target: str}

@endgroup

@group principal-policies
@endpoint PUT /principal-policies/{policyName}
@required {policyName: str, x-amzn-iot-principal: str}

@endgroup

@group security-profiles
@endpoint PUT /security-profiles/{securityProfileName}/targets
@required {securityProfileName: str, securityProfileTargetArn: str}

@endgroup

@group things
@endpoint PUT /things/{thingName}/principals
@required {thingName: str, x-amzn-principal: str}

@endgroup

@group audit
@endpoint PUT /audit/mitigationactions/tasks/{taskId}/cancel
@required {taskId: str}

@endpoint PUT /audit/tasks/{taskId}/cancel
@required {taskId: str}

@endgroup

@group cancel-certificate-transfer
@endpoint PATCH /cancel-certificate-transfer/{certificateId}
@required {certificateId: str}

@endgroup

@group detect
@endpoint PUT /detect/mitigationactions/tasks/{taskId}/cancel
@required {taskId: str}

@endgroup

@group jobs
@endpoint PUT /jobs/{jobId}/cancel
@required {jobId: str}
@optional {force: bool, reasonCode: str, comment: str}
@returns(200) {jobArn: str?, jobId: str?, description: str?}

@endgroup

@group things
@endpoint PUT /things/{thingName}/jobs/{jobId}/cancel
@required {jobId: str, thingName: str}
@optional {force: bool, expectedVersion: int(i64), statusDetails: map<str,str>}

@endgroup

@group default-authorizer
@endpoint DELETE /default-authorizer

@endgroup

@group confirmdestination
@endpoint GET /confirmdestination/{confirmationToken+}
@required {confirmationToken: str}

@endgroup

@group audit
@endpoint POST /audit/suppressions/create
@required {checkName: str, resourceIdentifier: ResourceIdentifier, clientRequestToken: str}
@optional {expirationDate: str(timestamp), suppressIndefinitely: bool, description: str}

@endgroup

@group authorizer
@endpoint POST /authorizer/{authorizerName}
@required {authorizerName: str, authorizerFunctionArn: str}
@optional {tokenKeyName: str, tokenSigningPublicKeys: map<str,str>, status: str, tags: [Tag], signingDisabled: bool, enableCachingForHttp: bool}
@returns(200) {authorizerName: str?, authorizerArn: str?}

@endgroup

@group billing-groups
@endpoint POST /billing-groups/{billingGroupName}
@required {billingGroupName: str}
@optional {billingGroupProperties: BillingGroupProperties, tags: [Tag]}
@returns(200) {billingGroupName: str?, billingGroupArn: str?, billingGroupId: str?}

@endgroup

@group certificates
@endpoint POST /certificates
@required {certificateSigningRequest: str}
@optional {setAsActive: bool}
@returns(200) {certificateArn: str?, certificateId: str?, certificatePem: str?}

@endgroup

@group certificate-providers
@endpoint POST /certificate-providers/{certificateProviderName}
@required {certificateProviderName: str, lambdaFunctionArn: str, accountDefaultForOperations: [str]}
@optional {clientToken: str, tags: [Tag]}
@returns(200) {certificateProviderName: str?, certificateProviderArn: str?}

@endgroup

@group custom-metric
@endpoint POST /custom-metric/{metricName}
@required {metricName: str, metricType: str, clientRequestToken: str}
@optional {displayName: str, tags: [Tag]}
@returns(200) {metricName: str?, metricArn: str?}

@endgroup

@group dimensions
@endpoint POST /dimensions/{name}
@required {name: str, type: str, stringValues: [str], clientRequestToken: str}
@optional {tags: [Tag]}
@returns(200) {name: str?, arn: str?}

@endgroup

@group domainConfigurations
@endpoint POST /domainConfigurations/{domainConfigurationName}
@required {domainConfigurationName: str}
@optional {domainName: str, serverCertificateArns: [str], validationCertificateArn: str, authorizerConfig: AuthorizerConfig, serviceType: str, tags: [Tag], tlsConfig: TlsConfig, serverCertificateConfig: ServerCertificateConfig}
@returns(200) {domainConfigurationName: str?, domainConfigurationArn: str?}

@endgroup

@group dynamic-thing-groups
@endpoint POST /dynamic-thing-groups/{thingGroupName}
@required {thingGroupName: str, queryString: str}
@optional {thingGroupProperties: ThingGroupProperties, indexName: str, queryVersion: str, tags: [Tag]}
@returns(200) {thingGroupName: str?, thingGroupArn: str?, thingGroupId: str?, indexName: str?, queryString: str?, queryVersion: str?}

@endgroup

@group fleet-metric
@endpoint PUT /fleet-metric/{metricName}
@required {metricName: str, queryString: str, aggregationType: AggregationType, period: int, aggregationField: str}
@optional {description: str, queryVersion: str, indexName: str, unit: str, tags: [Tag]}
@returns(200) {metricName: str?, metricArn: str?}

@endgroup

@group jobs
@endpoint PUT /jobs/{jobId}
@required {jobId: str, targets: [str]}
@optional {documentSource: str, document: str, description: str, presignedUrlConfig: PresignedUrlConfig, targetSelection: str, jobExecutionsRolloutConfig: JobExecutionsRolloutConfig, abortConfig: AbortConfig, timeoutConfig: TimeoutConfig, tags: [Tag], namespaceId: str, jobTemplateArn: str, jobExecutionsRetryConfig: JobExecutionsRetryConfig, documentParameters: map<str,str>, schedulingConfig: SchedulingConfig, destinationPackageVersions: [str]}
@returns(200) {jobArn: str?, jobId: str?, description: str?}

@endgroup

@group job-templates
@endpoint PUT /job-templates/{jobTemplateId}
@required {jobTemplateId: str, description: str}
@optional {jobArn: str, documentSource: str, document: str, presignedUrlConfig: PresignedUrlConfig, jobExecutionsRolloutConfig: JobExecutionsRolloutConfig, abortConfig: AbortConfig, timeoutConfig: TimeoutConfig, tags: [Tag], jobExecutionsRetryConfig: JobExecutionsRetryConfig, maintenanceWindows: [MaintenanceWindow], destinationPackageVersions: [str]}
@returns(200) {jobTemplateArn: str?, jobTemplateId: str?}

@endgroup

@group keys-and-certificate
@endpoint POST /keys-and-certificate
@optional {setAsActive: bool}
@returns(200) {certificateArn: str?, certificateId: str?, certificatePem: str?, keyPair: KeyPair?{PublicKey: str?, PrivateKey: str?}}

@endgroup

@group mitigationactions
@endpoint POST /mitigationactions/actions/{actionName}
@required {actionName: str, roleArn: str, actionParams: MitigationActionParams}
@optional {tags: [Tag]}
@returns(200) {actionArn: str?, actionId: str?}

@endgroup

@group otaUpdates
@endpoint POST /otaUpdates/{otaUpdateId}
@required {otaUpdateId: str, targets: [str], files: [OTAUpdateFile], roleArn: str}
@optional {description: str, protocols: [str], targetSelection: str, awsJobExecutionsRolloutConfig: AwsJobExecutionsRolloutConfig, awsJobPresignedUrlConfig: AwsJobPresignedUrlConfig, awsJobAbortConfig: AwsJobAbortConfig, awsJobTimeoutConfig: AwsJobTimeoutConfig, additionalParameters: map<str,str>, tags: [Tag]}
@returns(200) {otaUpdateId: str?, awsIotJobId: str?, otaUpdateArn: str?, awsIotJobArn: str?, otaUpdateStatus: str?}

@endgroup

@group packages
@endpoint PUT /packages/{packageName}
@required {packageName: str}
@optional {clientToken: str, description: str, tags: map<str,str>}
@returns(200) {packageName: str?, packageArn: str?, description: str?}

@endpoint PUT /packages/{packageName}/versions/{versionName}
@required {packageName: str, versionName: str}
@optional {clientToken: str, description: str, attributes: map<str,str>, tags: map<str,str>}
@returns(200) {packageVersionArn: str?, packageName: str?, versionName: str?, description: str?, attributes: map<str,str>?, status: str?, errorReason: str?}

@endgroup

@group policies
@endpoint POST /policies/{policyName}
@required {policyName: str, policyDocument: str}
@optional {tags: [Tag]}
@returns(200) {policyName: str?, policyArn: str?, policyDocument: str?, policyVersionId: str?}

@endpoint POST /policies/{policyName}/version
@required {policyName: str, policyDocument: str}
@optional {setAsDefault: bool}
@returns(200) {policyArn: str?, policyDocument: str?, policyVersionId: str?, isDefaultVersion: bool?}

@endgroup

@group provisioning-templates
@endpoint POST /provisioning-templates/{templateName}/provisioning-claim
@required {templateName: str}
@returns(200) {certificateId: str?, certificatePem: str?, keyPair: KeyPair?{PublicKey: str?, PrivateKey: str?}, expiration: str(timestamp)?}

@endpoint POST /provisioning-templates
@required {templateName: str, templateBody: str, provisioningRoleArn: str}
@optional {description: str, enabled: bool, preProvisioningHook: ProvisioningHook, tags: [Tag], type: str}
@returns(200) {templateArn: str?, templateName: str?, defaultVersionId: int?}

@endpoint POST /provisioning-templates/{templateName}/versions
@required {templateName: str, templateBody: str}
@optional {setAsDefault: bool}
@returns(200) {templateArn: str?, templateName: str?, versionId: int?, isDefaultVersion: bool?}

@endgroup

@group role-aliases
@endpoint POST /role-aliases/{roleAlias}
@required {roleAlias: str, roleArn: str}
@optional {credentialDurationSeconds: int, tags: [Tag]}
@returns(200) {roleAlias: str?, roleAliasArn: str?}

@endgroup

@group audit
@endpoint POST /audit/scheduledaudits/{scheduledAuditName}
@required {scheduledAuditName: str, frequency: str, targetCheckNames: [str]}
@optional {dayOfMonth: str, dayOfWeek: str, tags: [Tag]}
@returns(200) {scheduledAuditArn: str?}

@endgroup

@group security-profiles
@endpoint POST /security-profiles/{securityProfileName}
@required {securityProfileName: str}
@optional {securityProfileDescription: str, behaviors: [Behavior], alertTargets: map<str,AlertTarget>, additionalMetricsToRetain: [str], additionalMetricsToRetainV2: [MetricToRetain], tags: [Tag], metricsExportConfig: MetricsExportConfig}
@returns(200) {securityProfileName: str?, securityProfileArn: str?}

@endgroup

@group streams
@endpoint POST /streams/{streamId}
@required {streamId: str, files: [StreamFile], roleArn: str}
@optional {description: str, tags: [Tag]}
@returns(200) {streamId: str?, streamArn: str?, description: str?, streamVersion: int?}

@endgroup

@group things
@endpoint POST /things/{thingName}
@required {thingName: str}
@optional {thingTypeName: str, attributePayload: AttributePayload, billingGroupName: str}
@returns(200) {thingName: str?, thingArn: str?, thingId: str?}

@endgroup

@group thing-groups
@endpoint POST /thing-groups/{thingGroupName}
@required {thingGroupName: str}
@optional {parentGroupName: str, thingGroupProperties: ThingGroupProperties, tags: [Tag]}
@returns(200) {thingGroupName: str?, thingGroupArn: str?, thingGroupId: str?}

@endgroup

@group thing-types
@endpoint POST /thing-types/{thingTypeName}
@required {thingTypeName: str}
@optional {thingTypeProperties: ThingTypeProperties, tags: [Tag]}
@returns(200) {thingTypeName: str?, thingTypeArn: str?, thingTypeId: str?}

@endgroup

@group rules
@endpoint POST /rules/{ruleName}
@required {ruleName: str, topicRulePayload: TopicRulePayload}
@optional {x-amz-tagging: str}

@endgroup

@group destinations
@endpoint POST /destinations
@required {destinationConfiguration: TopicRuleDestinationConfiguration}
@returns(200) {topicRuleDestination: TopicRuleDestination?{arn: str?, status: str?, createdAt: str(timestamp)?, lastUpdatedAt: str(timestamp)?, statusReason: str?, httpUrlProperties: HttpUrlDestinationProperties?{confirmationUrl: str?}, vpcProperties: VpcDestinationProperties?{subnetIds: [str]?, securityGroups: [str]?, vpcId: str?, roleArn: str?}}}

@endgroup

@group audit
@endpoint DELETE /audit/configuration
@optional {deleteScheduledAudits: bool}

@endpoint POST /audit/suppressions/delete
@required {checkName: str, resourceIdentifier: ResourceIdentifier}

@endgroup

@group authorizer
@endpoint DELETE /authorizer/{authorizerName}
@required {authorizerName: str}

@endgroup

@group billing-groups
@endpoint DELETE /billing-groups/{billingGroupName}
@required {billingGroupName: str}
@optional {expectedVersion: int(i64)}

@endgroup

@group cacertificate
@endpoint DELETE /cacertificate/{caCertificateId}
@required {certificateId: str}

@endgroup

@group certificates
@endpoint DELETE /certificates/{certificateId}
@required {certificateId: str}
@optional {forceDelete: bool}

@endgroup

@group certificate-providers
@endpoint DELETE /certificate-providers/{certificateProviderName}
@required {certificateProviderName: str}

@endgroup

@group custom-metric
@endpoint DELETE /custom-metric/{metricName}
@required {metricName: str}

@endgroup

@group dimensions
@endpoint DELETE /dimensions/{name}
@required {name: str}

@endgroup

@group domainConfigurations
@endpoint DELETE /domainConfigurations/{domainConfigurationName}
@required {domainConfigurationName: str}

@endgroup

@group dynamic-thing-groups
@endpoint DELETE /dynamic-thing-groups/{thingGroupName}
@required {thingGroupName: str}
@optional {expectedVersion: int(i64)}

@endgroup

@group fleet-metric
@endpoint DELETE /fleet-metric/{metricName}
@required {metricName: str}
@optional {expectedVersion: int(i64)}

@endgroup

@group jobs
@endpoint DELETE /jobs/{jobId}
@required {jobId: str}
@optional {force: bool, namespaceId: str}

@endgroup

@group things
@endpoint DELETE /things/{thingName}/jobs/{jobId}/executionNumber/{executionNumber}
@required {jobId: str, thingName: str, executionNumber: int(i64)}
@optional {force: bool, namespaceId: str}

@endgroup

@group job-templates
@endpoint DELETE /job-templates/{jobTemplateId}
@required {jobTemplateId: str}

@endgroup

@group mitigationactions
@endpoint DELETE /mitigationactions/actions/{actionName}
@required {actionName: str}

@endgroup

@group otaUpdates
@endpoint DELETE /otaUpdates/{otaUpdateId}
@required {otaUpdateId: str}
@optional {deleteStream: bool, forceDeleteAWSJob: bool}

@endgroup

@group packages
@endpoint DELETE /packages/{packageName}
@required {packageName: str}
@optional {clientToken: str}

@endpoint DELETE /packages/{packageName}/versions/{versionName}
@required {packageName: str, versionName: str}
@optional {clientToken: str}

@endgroup

@group policies
@endpoint DELETE /policies/{policyName}
@required {policyName: str}

@endpoint DELETE /policies/{policyName}/version/{policyVersionId}
@required {policyName: str, policyVersionId: str}

@endgroup

@group provisioning-templates
@endpoint DELETE /provisioning-templates/{templateName}
@required {templateName: str}

@endpoint DELETE /provisioning-templates/{templateName}/versions/{versionId}
@required {templateName: str, versionId: int}

@endgroup

@group registrationcode
@endpoint DELETE /registrationcode

@endgroup

@group role-aliases
@endpoint DELETE /role-aliases/{roleAlias}
@required {roleAlias: str}

@endgroup

@group audit
@endpoint DELETE /audit/scheduledaudits/{scheduledAuditName}
@required {scheduledAuditName: str}

@endgroup

@group security-profiles
@endpoint DELETE /security-profiles/{securityProfileName}
@required {securityProfileName: str}
@optional {expectedVersion: int(i64)}

@endgroup

@group streams
@endpoint DELETE /streams/{streamId}
@required {streamId: str}

@endgroup

@group things
@endpoint DELETE /things/{thingName}
@required {thingName: str}
@optional {expectedVersion: int(i64)}

@endgroup

@group thing-groups
@endpoint DELETE /thing-groups/{thingGroupName}
@required {thingGroupName: str}
@optional {expectedVersion: int(i64)}

@endgroup

@group thing-types
@endpoint DELETE /thing-types/{thingTypeName}
@required {thingTypeName: str}

@endgroup

@group rules
@endpoint DELETE /rules/{ruleName}
@required {ruleName: str}

@endgroup

@group destinations
@endpoint DELETE /destinations/{arn+}
@required {arn: str}

@endgroup

@group v2LoggingLevel
@endpoint DELETE /v2LoggingLevel
@required {targetType: str, targetName: str}

@endgroup

@group thing-types
@endpoint POST /thing-types/{thingTypeName}/deprecate
@required {thingTypeName: str}
@optional {undoDeprecate: bool}

@endgroup

@group audit
@endpoint GET /audit/configuration
@returns(200) {roleArn: str?, auditNotificationTargetConfigurations: map<str,AuditNotificationTarget>?, auditCheckConfigurations: map<str,AuditCheckConfiguration>?}

@endpoint GET /audit/findings/{findingId}
@required {findingId: str}
@returns(200) {finding: AuditFinding?{findingId: str?, taskId: str?, checkName: str?, taskStartTime: str(timestamp)?, findingTime: str(timestamp)?, severity: str?, nonCompliantResource: NonCompliantResource?{resourceType: str?, resourceIdentifier: ResourceIdentifier?{deviceCertificateId: str?, caCertificateId: str?, cognitoIdentityPoolId: str?, clientId: str?, policyVersionIdentifier: PolicyVersionIdentifier?, account: str?, iamRoleArn: str?, roleAliasArn: str?, issuerCertificateIdentifier: IssuerCertificateIdentifier?, deviceCertificateArn: str?}, additionalInfo: map<str,str>?}, relatedResources: [RelatedResource]?, reasonForNonCompliance: str?, reasonForNonComplianceCode: str?, isSuppressed: bool?}}

@endpoint GET /audit/mitigationactions/tasks/{taskId}
@required {taskId: str}
@returns(200) {taskStatus: str?, startTime: str(timestamp)?, endTime: str(timestamp)?, taskStatistics: map<str,TaskStatisticsForAuditCheck>?, target: AuditMitigationActionsTaskTarget?{auditTaskId: str?, findingIds: [str]?, auditCheckToReasonCodeFilter: map<str,[str]>?}, auditCheckToActionsMapping: map<str,[str]>?, actionsDefinition: [MitigationAction]?}

@endpoint POST /audit/suppressions/describe
@required {checkName: str, resourceIdentifier: ResourceIdentifier}
@returns(200) {checkName: str?, resourceIdentifier: ResourceIdentifier?{deviceCertificateId: str?, caCertificateId: str?, cognitoIdentityPoolId: str?, clientId: str?, policyVersionIdentifier: PolicyVersionIdentifier?{policyName: str?, policyVersionId: str?}, account: str?, iamRoleArn: str?, roleAliasArn: str?, issuerCertificateIdentifier: IssuerCertificateIdentifier?{issuerCertificateSubject: str?, issuerId: str?, issuerCertificateSerialNumber: str?}, deviceCertificateArn: str?}, expirationDate: str(timestamp)?, suppressIndefinitely: bool?, description: str?}

@endpoint GET /audit/tasks/{taskId}
@required {taskId: str}
@returns(200) {taskStatus: str?, taskType: str?, taskStartTime: str(timestamp)?, taskStatistics: TaskStatistics?{totalChecks: int?, inProgressChecks: int?, waitingForDataCollectionChecks: int?, compliantChecks: int?, nonCompliantChecks: int?, failedChecks: int?, canceledChecks: int?}, scheduledAuditName: str?, auditDetails: map<str,AuditCheckDetails>?}

@endgroup

@group authorizer
@endpoint GET /authorizer/{authorizerName}
@required {authorizerName: str}
@returns(200) {authorizerDescription: AuthorizerDescription?{authorizerName: str?, authorizerArn: str?, authorizerFunctionArn: str?, tokenKeyName: str?, tokenSigningPublicKeys: map<str,str>?, status: str?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?, signingDisabled: bool?, enableCachingForHttp: bool?}}

@endgroup

@group billing-groups
@endpoint GET /billing-groups/{billingGroupName}
@required {billingGroupName: str}
@returns(200) {billingGroupName: str?, billingGroupId: str?, billingGroupArn: str?, version: int(i64)?, billingGroupProperties: BillingGroupProperties?{billingGroupDescription: str?}, billingGroupMetadata: BillingGroupMetadata?{creationDate: str(timestamp)?}}

@endgroup

@group cacertificate
@endpoint GET /cacertificate/{caCertificateId}
@required {certificateId: str}
@returns(200) {certificateDescription: CACertificateDescription?{certificateArn: str?, certificateId: str?, status: str?, certificatePem: str?, ownedBy: str?, creationDate: str(timestamp)?, autoRegistrationStatus: str?, lastModifiedDate: str(timestamp)?, customerVersion: int?, generationId: str?, validity: CertificateValidity?{notBefore: str(timestamp)?, notAfter: str(timestamp)?}, certificateMode: str?}, registrationConfig: RegistrationConfig?{templateBody: str?, roleArn: str?, templateName: str?}}

@endgroup

@group certificates
@endpoint GET /certificates/{certificateId}
@required {certificateId: str}
@returns(200) {certificateDescription: CertificateDescription?{certificateArn: str?, certificateId: str?, caCertificateId: str?, status: str?, certificatePem: str?, ownedBy: str?, previousOwnedBy: str?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?, customerVersion: int?, transferData: TransferData?{transferMessage: str?, rejectReason: str?, transferDate: str(timestamp)?, acceptDate: str(timestamp)?, rejectDate: str(timestamp)?}, generationId: str?, validity: CertificateValidity?{notBefore: str(timestamp)?, notAfter: str(timestamp)?}, certificateMode: str?}}

@endgroup

@group certificate-providers
@endpoint GET /certificate-providers/{certificateProviderName}
@required {certificateProviderName: str}
@returns(200) {certificateProviderName: str?, certificateProviderArn: str?, lambdaFunctionArn: str?, accountDefaultForOperations: [str]?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?}

@endgroup

@group custom-metric
@endpoint GET /custom-metric/{metricName}
@required {metricName: str}
@returns(200) {metricName: str?, metricArn: str?, metricType: str?, displayName: str?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?}

@endgroup

@group default-authorizer
@endpoint GET /default-authorizer
@returns(200) {authorizerDescription: AuthorizerDescription?{authorizerName: str?, authorizerArn: str?, authorizerFunctionArn: str?, tokenKeyName: str?, tokenSigningPublicKeys: map<str,str>?, status: str?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?, signingDisabled: bool?, enableCachingForHttp: bool?}}

@endgroup

@group detect
@endpoint GET /detect/mitigationactions/tasks/{taskId}
@required {taskId: str}
@returns(200) {taskSummary: DetectMitigationActionsTaskSummary?{taskId: str?, taskStatus: str?, taskStartTime: str(timestamp)?, taskEndTime: str(timestamp)?, target: DetectMitigationActionsTaskTarget?{violationIds: [str]?, securityProfileName: str?, behaviorName: str?}, violationEventOccurrenceRange: ViolationEventOccurrenceRange?{startTime: str(timestamp), endTime: str(timestamp)}, onlyActiveViolationsIncluded: bool?, suppressedAlertsIncluded: bool?, actionsDefinition: [MitigationAction]?, taskStatistics: DetectMitigationActionsTaskStatistics?{actionsExecuted: int(i64)?, actionsSkipped: int(i64)?, actionsFailed: int(i64)?}}}

@endgroup

@group dimensions
@endpoint GET /dimensions/{name}
@required {name: str}
@returns(200) {name: str?, arn: str?, type: str?, stringValues: [str]?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?}

@endgroup

@group domainConfigurations
@endpoint GET /domainConfigurations/{domainConfigurationName}
@required {domainConfigurationName: str}
@returns(200) {domainConfigurationName: str?, domainConfigurationArn: str?, domainName: str?, serverCertificates: [ServerCertificateSummary]?, authorizerConfig: AuthorizerConfig?{defaultAuthorizerName: str?, allowAuthorizerOverride: bool?}, domainConfigurationStatus: str?, serviceType: str?, domainType: str?, lastStatusChangeDate: str(timestamp)?, tlsConfig: TlsConfig?{securityPolicy: str?}, serverCertificateConfig: ServerCertificateConfig?{enableOCSPCheck: bool?}}

@endgroup

@group endpoint
@endpoint GET /endpoint
@optional {endpointType: str}
@returns(200) {endpointAddress: str?}

@endgroup

@group event-configurations
@endpoint GET /event-configurations
@returns(200) {eventConfigurations: map<str,Configuration>?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?}

@endgroup

@group fleet-metric
@endpoint GET /fleet-metric/{metricName}
@required {metricName: str}
@returns(200) {metricName: str?, queryString: str?, aggregationType: AggregationType?{name: str, values: [str]?}, period: int?, aggregationField: str?, description: str?, queryVersion: str?, indexName: str?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?, unit: str?, version: int(i64)?, metricArn: str?}

@endgroup

@group indices
@endpoint GET /indices/{indexName}
@required {indexName: str}
@returns(200) {indexName: str?, indexStatus: str?, schema: str?}

@endgroup

@group jobs
@endpoint GET /jobs/{jobId}
@required {jobId: str}
@returns(200) {documentSource: str?, job: Job?{jobArn: str?, jobId: str?, targetSelection: str?, status: str?, forceCanceled: bool?, reasonCode: str?, comment: str?, targets: [str]?, description: str?, presignedUrlConfig: PresignedUrlConfig?{roleArn: str?, expiresInSec: int(i64)?}, jobExecutionsRolloutConfig: JobExecutionsRolloutConfig?{maximumPerMinute: int?, exponentialRate: ExponentialRolloutRate?{baseRatePerMinute: int, incrementFactor: num(f64), rateIncreaseCriteria: RateIncreaseCriteria}}, abortConfig: AbortConfig?{criteriaList: [AbortCriteria]}, createdAt: str(timestamp)?, lastUpdatedAt: str(timestamp)?, completedAt: str(timestamp)?, jobProcessDetails: JobProcessDetails?{processingTargets: [str]?, numberOfCanceledThings: int?, numberOfSucceededThings: int?, numberOfFailedThings: int?, numberOfRejectedThings: int?, numberOfQueuedThings: int?, numberOfInProgressThings: int?, numberOfRemovedThings: int?, numberOfTimedOutThings: int?}, timeoutConfig: TimeoutConfig?{inProgressTimeoutInMinutes: int(i64)?}, namespaceId: str?, jobTemplateArn: str?, jobExecutionsRetryConfig: JobExecutionsRetryConfig?{criteriaList: [RetryCriteria]}, documentParameters: map<str,str>?, isConcurrent: bool?, schedulingConfig: SchedulingConfig?{startTime: str?, endTime: str?, endBehavior: str?, maintenanceWindows: [MaintenanceWindow]?}, scheduledJobRollouts: [ScheduledJobRollout]?, destinationPackageVersions: [str]?}}

@endgroup

@group things
@endpoint GET /things/{thingName}/jobs/{jobId}
@required {jobId: str, thingName: str}
@optional {executionNumber: int(i64)}
@returns(200) {execution: JobExecution?{jobId: str?, status: str?, forceCanceled: bool?, statusDetails: JobExecutionStatusDetails?{detailsMap: map<str,str>?}, thingArn: str?, queuedAt: str(timestamp)?, startedAt: str(timestamp)?, lastUpdatedAt: str(timestamp)?, executionNumber: int(i64)?, versionNumber: int(i64)?, approximateSecondsBeforeTimedOut: int(i64)?}}

@endgroup

@group job-templates
@endpoint GET /job-templates/{jobTemplateId}
@required {jobTemplateId: str}
@returns(200) {jobTemplateArn: str?, jobTemplateId: str?, description: str?, documentSource: str?, document: str?, createdAt: str(timestamp)?, presignedUrlConfig: PresignedUrlConfig?{roleArn: str?, expiresInSec: int(i64)?}, jobExecutionsRolloutConfig: JobExecutionsRolloutConfig?{maximumPerMinute: int?, exponentialRate: ExponentialRolloutRate?{baseRatePerMinute: int, incrementFactor: num(f64), rateIncreaseCriteria: RateIncreaseCriteria{numberOfNotifiedThings: int?, numberOfSucceededThings: int?}}}, abortConfig: AbortConfig?{criteriaList: [AbortCriteria]}, timeoutConfig: TimeoutConfig?{inProgressTimeoutInMinutes: int(i64)?}, jobExecutionsRetryConfig: JobExecutionsRetryConfig?{criteriaList: [RetryCriteria]}, maintenanceWindows: [MaintenanceWindow]?, destinationPackageVersions: [str]?}

@endgroup

@group managed-job-templates
@endpoint GET /managed-job-templates/{templateName}
@required {templateName: str}
@optional {templateVersion: str}
@returns(200) {templateName: str?, templateArn: str?, description: str?, templateVersion: str?, environments: [str]?, documentParameters: [DocumentParameter]?, document: str?}

@endgroup

@group mitigationactions
@endpoint GET /mitigationactions/actions/{actionName}
@required {actionName: str}
@returns(200) {actionName: str?, actionType: str?, actionArn: str?, actionId: str?, roleArn: str?, actionParams: MitigationActionParams?{updateDeviceCertificateParams: UpdateDeviceCertificateParams?{action: str}, updateCACertificateParams: UpdateCACertificateParams?{action: str}, addThingsToThingGroupParams: AddThingsToThingGroupParams?{thingGroupNames: [str], overrideDynamicGroups: bool?}, replaceDefaultPolicyVersionParams: ReplaceDefaultPolicyVersionParams?{templateName: str}, enableIoTLoggingParams: EnableIoTLoggingParams?{roleArnForLogging: str, logLevel: str}, publishFindingToSnsParams: PublishFindingToSnsParams?{topicArn: str}}, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?}

@endgroup

@group provisioning-templates
@endpoint GET /provisioning-templates/{templateName}
@required {templateName: str}
@returns(200) {templateArn: str?, templateName: str?, description: str?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?, defaultVersionId: int?, templateBody: str?, enabled: bool?, provisioningRoleArn: str?, preProvisioningHook: ProvisioningHook?{payloadVersion: str?, targetArn: str}, type: str?}

@endpoint GET /provisioning-templates/{templateName}/versions/{versionId}
@required {templateName: str, versionId: int}
@returns(200) {versionId: int?, creationDate: str(timestamp)?, templateBody: str?, isDefaultVersion: bool?}

@endgroup

@group role-aliases
@endpoint GET /role-aliases/{roleAlias}
@required {roleAlias: str}
@returns(200) {roleAliasDescription: RoleAliasDescription?{roleAlias: str?, roleAliasArn: str?, roleArn: str?, owner: str?, credentialDurationSeconds: int?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?}}

@endgroup

@group audit
@endpoint GET /audit/scheduledaudits/{scheduledAuditName}
@required {scheduledAuditName: str}
@returns(200) {frequency: str?, dayOfMonth: str?, dayOfWeek: str?, targetCheckNames: [str]?, scheduledAuditName: str?, scheduledAuditArn: str?}

@endgroup

@group security-profiles
@endpoint GET /security-profiles/{securityProfileName}
@required {securityProfileName: str}
@returns(200) {securityProfileName: str?, securityProfileArn: str?, securityProfileDescription: str?, behaviors: [Behavior]?, alertTargets: map<str,AlertTarget>?, additionalMetricsToRetain: [str]?, additionalMetricsToRetainV2: [MetricToRetain]?, version: int(i64)?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?, metricsExportConfig: MetricsExportConfig?{mqttTopic: str, roleArn: str}}

@endgroup

@group streams
@endpoint GET /streams/{streamId}
@required {streamId: str}
@returns(200) {streamInfo: StreamInfo?{streamId: str?, streamArn: str?, streamVersion: int?, description: str?, files: [StreamFile]?, createdAt: str(timestamp)?, lastUpdatedAt: str(timestamp)?, roleArn: str?}}

@endgroup

@group things
@endpoint GET /things/{thingName}
@required {thingName: str}
@returns(200) {defaultClientId: str?, thingName: str?, thingId: str?, thingArn: str?, thingTypeName: str?, attributes: map<str,str>?, version: int(i64)?, billingGroupName: str?}

@endgroup

@group thing-groups
@endpoint GET /thing-groups/{thingGroupName}
@required {thingGroupName: str}
@returns(200) {thingGroupName: str?, thingGroupId: str?, thingGroupArn: str?, version: int(i64)?, thingGroupProperties: ThingGroupProperties?{thingGroupDescription: str?, attributePayload: AttributePayload?{attributes: map<str,str>?, merge: bool?}}, thingGroupMetadata: ThingGroupMetadata?{parentGroupName: str?, rootToParentThingGroups: [GroupNameAndArn]?, creationDate: str(timestamp)?}, indexName: str?, queryString: str?, queryVersion: str?, status: str?}

@endgroup

@group thing-registration-tasks
@endpoint GET /thing-registration-tasks/{taskId}
@required {taskId: str}
@returns(200) {taskId: str?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?, templateBody: str?, inputFileBucket: str?, inputFileKey: str?, roleArn: str?, status: str?, message: str?, successCount: int?, failureCount: int?, percentageProgress: int?}

@endgroup

@group thing-types
@endpoint GET /thing-types/{thingTypeName}
@required {thingTypeName: str}
@returns(200) {thingTypeName: str?, thingTypeId: str?, thingTypeArn: str?, thingTypeProperties: ThingTypeProperties?{thingTypeDescription: str?, searchableAttributes: [str]?}, thingTypeMetadata: ThingTypeMetadata?{deprecated: bool?, deprecationDate: str(timestamp)?, creationDate: str(timestamp)?}}

@endgroup

@group target-policies
@endpoint POST /target-policies/{policyName}
@required {policyName: str, target: str}

@endgroup

@group principal-policies
@endpoint DELETE /principal-policies/{policyName}
@required {policyName: str, x-amzn-iot-principal: str}

@endgroup

@group security-profiles
@endpoint DELETE /security-profiles/{securityProfileName}/targets
@required {securityProfileName: str, securityProfileTargetArn: str}

@endgroup

@group things
@endpoint DELETE /things/{thingName}/principals
@required {thingName: str, x-amzn-principal: str}

@endgroup

@group rules
@endpoint POST /rules/{ruleName}/disable
@required {ruleName: str}

@endpoint POST /rules/{ruleName}/enable
@required {ruleName: str}

@endgroup

@group behavior-model-training
@endpoint GET /behavior-model-training/summaries
@optional {securityProfileName: str, maxResults: int, nextToken: str}
@returns(200) {summaries: [BehaviorModelTrainingSummary]?, nextToken: str?}

@endgroup

@group indices
@endpoint POST /indices/buckets
@required {queryString: str, aggregationField: str, bucketsAggregationType: BucketsAggregationType}
@optional {indexName: str, queryVersion: str}
@returns(200) {totalCount: int?, buckets: [Bucket]?}

@endpoint POST /indices/cardinality
@required {queryString: str}
@optional {indexName: str, aggregationField: str, queryVersion: str}
@returns(200) {cardinality: int?}

@endgroup

@group effective-policies
@endpoint POST /effective-policies
@optional {thingName: str, principal: str, cognitoIdentityPoolId: str}
@returns(200) {effectivePolicies: [EffectivePolicy]?}

@endgroup

@group indexing
@endpoint GET /indexing/config
@returns(200) {thingIndexingConfiguration: ThingIndexingConfiguration?{thingIndexingMode: str, thingConnectivityIndexingMode: str?, deviceDefenderIndexingMode: str?, namedShadowIndexingMode: str?, managedFields: [Field]?, customFields: [Field]?, filter: IndexingFilter?{namedShadowNames: [str]?, geoLocations: [GeoLocationTarget]?}}, thingGroupIndexingConfiguration: ThingGroupIndexingConfiguration?{thingGroupIndexingMode: str, managedFields: [Field]?, customFields: [Field]?}}

@endgroup

@group jobs
@endpoint GET /jobs/{jobId}/job-document
@required {jobId: str}
@returns(200) {document: str?}

@endgroup

@group loggingOptions
@endpoint GET /loggingOptions
@returns(200) {roleArn: str?, logLevel: str?}

@endgroup

@group otaUpdates
@endpoint GET /otaUpdates/{otaUpdateId}
@required {otaUpdateId: str}
@returns(200) {otaUpdateInfo: OTAUpdateInfo?{otaUpdateId: str?, otaUpdateArn: str?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?, description: str?, targets: [str]?, protocols: [str]?, awsJobExecutionsRolloutConfig: AwsJobExecutionsRolloutConfig?{maximumPerMinute: int?, exponentialRate: AwsJobExponentialRolloutRate?{baseRatePerMinute: int, incrementFactor: num(f64), rateIncreaseCriteria: AwsJobRateIncreaseCriteria}}, awsJobPresignedUrlConfig: AwsJobPresignedUrlConfig?{expiresInSec: int(i64)?}, targetSelection: str?, otaUpdateFiles: [OTAUpdateFile]?, otaUpdateStatus: str?, awsIotJobId: str?, awsIotJobArn: str?, errorInfo: ErrorInfo?{code: str?, message: str?}, additionalParameters: map<str,str>?}}

@endgroup

@group packages
@endpoint GET /packages/{packageName}
@required {packageName: str}
@returns(200) {packageName: str?, packageArn: str?, description: str?, defaultVersionName: str?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?}

@endgroup

@group package-configuration
@endpoint GET /package-configuration
@returns(200) {versionUpdateByJobsConfig: VersionUpdateByJobsConfig?{enabled: bool?, roleArn: str?}}

@endgroup

@group packages
@endpoint GET /packages/{packageName}/versions/{versionName}
@required {packageName: str, versionName: str}
@returns(200) {packageVersionArn: str?, packageName: str?, versionName: str?, description: str?, attributes: map<str,str>?, status: str?, errorReason: str?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?}

@endgroup

@group indices
@endpoint POST /indices/percentiles
@required {queryString: str}
@optional {indexName: str, aggregationField: str, queryVersion: str, percents: [num(f64)]}
@returns(200) {percentiles: [PercentPair]?}

@endgroup

@group policies
@endpoint GET /policies/{policyName}
@required {policyName: str}
@returns(200) {policyName: str?, policyArn: str?, policyDocument: str?, defaultVersionId: str?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?, generationId: str?}

@endpoint GET /policies/{policyName}/version/{policyVersionId}
@required {policyName: str, policyVersionId: str}
@returns(200) {policyArn: str?, policyName: str?, policyDocument: str?, policyVersionId: str?, isDefaultVersion: bool?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?, generationId: str?}

@endgroup

@group registrationcode
@endpoint GET /registrationcode
@returns(200) {registrationCode: str?}

@endgroup

@group indices
@endpoint POST /indices/statistics
@required {queryString: str}
@optional {indexName: str, aggregationField: str, queryVersion: str}
@returns(200) {statistics: Statistics?{count: int?, average: num(f64)?, sum: num(f64)?, minimum: num(f64)?, maximum: num(f64)?, sumOfSquares: num(f64)?, variance: num(f64)?, stdDeviation: num(f64)?}}

@endgroup

@group rules
@endpoint GET /rules/{ruleName}
@required {ruleName: str}
@returns(200) {ruleArn: str?, rule: TopicRule?{ruleName: str?, sql: str?, description: str?, createdAt: str(timestamp)?, actions: [Action]?, ruleDisabled: bool?, awsIotSqlVersion: str?, errorAction: Action?{dynamoDB: DynamoDBAction?{tableName: str, roleArn: str, operation: str?, hashKeyField: str, hashKeyValue: str, hashKeyType: str?, rangeKeyField: str?, rangeKeyValue: str?, rangeKeyType: str?, payloadField: str?}, dynamoDBv2: DynamoDBv2Action?{roleArn: str, putItem: PutItemInput}, lambda: LambdaAction?{functionArn: str}, sns: SnsAction?{targetArn: str, roleArn: str, messageFormat: str?}, sqs: SqsAction?{roleArn: str, queueUrl: str, useBase64: bool?}, kinesis: KinesisAction?{roleArn: str, streamName: str, partitionKey: str?}, republish: RepublishAction?{roleArn: str, topic: str, qos: int?, headers: MqttHeaders?}, s3: S3Action?{roleArn: str, bucketName: str, key: str, cannedAcl: str?}, firehose: FirehoseAction?{roleArn: str, deliveryStreamName: str, separator: str?, batchMode: bool?}, cloudwatchMetric: CloudwatchMetricAction?{roleArn: str, metricNamespace: str, metricName: str, metricValue: str, metricUnit: str, metricTimestamp: str?}, cloudwatchAlarm: CloudwatchAlarmAction?{roleArn: str, alarmName: str, stateReason: str, stateValue: str}, cloudwatchLogs: CloudwatchLogsAction?{roleArn: str, logGroupName: str, batchMode: bool?}, elasticsearch: ElasticsearchAction?{roleArn: str, endpoint: str, index: str, type: str, id: str}, salesforce: SalesforceAction?{token: str, url: str}, iotAnalytics: IotAnalyticsAction?{channelArn: str?, channelName: str?, batchMode: bool?, roleArn: str?}, iotEvents: IotEventsAction?{inputName: str, messageId: str?, batchMode: bool?, roleArn: str}, iotSiteWise: IotSiteWiseAction?{putAssetPropertyValueEntries: [PutAssetPropertyValueEntry], roleArn: str}, stepFunctions: StepFunctionsAction?{executionNamePrefix: str?, stateMachineName: str, roleArn: str}, timestream: TimestreamAction?{roleArn: str, databaseName: str, tableName: str, dimensions: [TimestreamDimension], timestamp: TimestreamTimestamp?}, http: HttpAction?{url: str, confirmationUrl: str?, headers: [HttpActionHeader]?, auth: HttpAuthorization?}, kafka: KafkaAction?{destinationArn: str, topic: str, key: str?, partition: str?, clientProperties: map<str,str>, headers: [KafkaActionHeader]?}, openSearch: OpenSearchAction?{roleArn: str, endpoint: str, index: str, type: str, id: str}, location: LocationAction?{roleArn: str, trackerName: str, deviceId: str, timestamp: LocationTimestamp?, latitude: str, longitude: str}}}}

@endgroup

@group destinations
@endpoint GET /destinations/{arn+}
@required {arn: str}
@returns(200) {topicRuleDestination: TopicRuleDestination?{arn: str?, status: str?, createdAt: str(timestamp)?, lastUpdatedAt: str(timestamp)?, statusReason: str?, httpUrlProperties: HttpUrlDestinationProperties?{confirmationUrl: str?}, vpcProperties: VpcDestinationProperties?{subnetIds: [str]?, securityGroups: [str]?, vpcId: str?, roleArn: str?}}}

@endgroup

@group v2LoggingOptions
@endpoint GET /v2LoggingOptions
@returns(200) {roleArn: str?, defaultLogLevel: str?, disableAllLogs: bool?}

@endgroup

@group active-violations
@endpoint GET /active-violations
@optional {thingName: str, securityProfileName: str, behaviorCriteriaType: str, listSuppressedAlerts: bool, verificationState: str, nextToken: str, maxResults: int}
@returns(200) {activeViolations: [ActiveViolation]?, nextToken: str?}

@endgroup

@group attached-policies
@endpoint POST /attached-policies/{target}
@required {target: str}
@optional {recursive: bool, marker: str, pageSize: int}
@returns(200) {policies: [Policy]?, nextMarker: str?}

@endgroup

@group audit
@endpoint POST /audit/findings
@optional {taskId: str, checkName: str, resourceIdentifier: ResourceIdentifier, maxResults: int, nextToken: str, startTime: str(timestamp), endTime: str(timestamp), listSuppressedFindings: bool}
@returns(200) {findings: [AuditFinding]?, nextToken: str?}

@endpoint GET /audit/mitigationactions/executions
@required {taskId: str, findingId: str}
@optional {actionStatus: str, maxResults: int, nextToken: str}
@returns(200) {actionsExecutions: [AuditMitigationActionExecutionMetadata]?, nextToken: str?}

@endpoint GET /audit/mitigationactions/tasks
@required {startTime: str(timestamp), endTime: str(timestamp)}
@optional {auditTaskId: str, findingId: str, taskStatus: str, maxResults: int, nextToken: str}
@returns(200) {tasks: [AuditMitigationActionsTaskMetadata]?, nextToken: str?}

@endpoint POST /audit/suppressions/list
@optional {checkName: str, resourceIdentifier: ResourceIdentifier, ascendingOrder: bool, nextToken: str, maxResults: int}
@returns(200) {suppressions: [AuditSuppression]?, nextToken: str?}

@endpoint GET /audit/tasks
@required {startTime: str(timestamp), endTime: str(timestamp)}
@optional {taskType: str, taskStatus: str, nextToken: str, maxResults: int}
@returns(200) {tasks: [AuditTaskMetadata]?, nextToken: str?}

@endgroup

@group authorizers
@endpoint GET /authorizers/
@optional {pageSize: int, marker: str, isAscendingOrder: bool, status: str}
@returns(200) {authorizers: [AuthorizerSummary]?, nextMarker: str?}

@endgroup

@group billing-groups
@endpoint GET /billing-groups
@optional {nextToken: str, maxResults: int, namePrefixFilter: str}
@returns(200) {billingGroups: [GroupNameAndArn]?, nextToken: str?}

@endgroup

@group cacertificates
@endpoint GET /cacertificates
@optional {pageSize: int, marker: str, isAscendingOrder: bool, templateName: str}
@returns(200) {certificates: [CACertificate]?, nextMarker: str?}

@endgroup

@group certificate-providers
@endpoint GET /certificate-providers/
@optional {nextToken: str, isAscendingOrder: bool}
@returns(200) {certificateProviders: [CertificateProviderSummary]?, nextToken: str?}

@endgroup

@group certificates
@endpoint GET /certificates
@optional {pageSize: int, marker: str, isAscendingOrder: bool}
@returns(200) {certificates: [Certificate]?, nextMarker: str?}

@endgroup

@group certificates-by-ca
@endpoint GET /certificates-by-ca/{caCertificateId}
@required {caCertificateId: str}
@optional {pageSize: int, marker: str, isAscendingOrder: bool}
@returns(200) {certificates: [Certificate]?, nextMarker: str?}

@endgroup

@group custom-metrics
@endpoint GET /custom-metrics
@optional {nextToken: str, maxResults: int}
@returns(200) {metricNames: [str]?, nextToken: str?}

@endgroup

@group detect
@endpoint GET /detect/mitigationactions/executions
@optional {taskId: str, violationId: str, thingName: str, startTime: str(timestamp), endTime: str(timestamp), maxResults: int, nextToken: str}
@returns(200) {actionsExecutions: [DetectMitigationActionExecution]?, nextToken: str?}

@endpoint GET /detect/mitigationactions/tasks
@required {startTime: str(timestamp), endTime: str(timestamp)}
@optional {maxResults: int, nextToken: str}
@returns(200) {tasks: [DetectMitigationActionsTaskSummary]?, nextToken: str?}

@endgroup

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

@endgroup

@group domainConfigurations
@endpoint GET /domainConfigurations
@optional {marker: str, pageSize: int, serviceType: str}
@returns(200) {domainConfigurations: [DomainConfigurationSummary]?, nextMarker: str?}

@endgroup

@group fleet-metrics
@endpoint GET /fleet-metrics
@optional {nextToken: str, maxResults: int}
@returns(200) {fleetMetrics: [FleetMetricNameAndArn]?, nextToken: str?}

@endgroup

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

@endgroup

@group jobs
@endpoint GET /jobs/{jobId}/things
@required {jobId: str}
@optional {status: str, maxResults: int, nextToken: str}
@returns(200) {executionSummaries: [JobExecutionSummaryForJob]?, nextToken: str?}

@endgroup

@group things
@endpoint GET /things/{thingName}/jobs
@required {thingName: str}
@optional {status: str, namespaceId: str, maxResults: int, nextToken: str, jobId: str}
@returns(200) {executionSummaries: [JobExecutionSummaryForThing]?, nextToken: str?}

@endgroup

@group job-templates
@endpoint GET /job-templates
@optional {maxResults: int, nextToken: str}
@returns(200) {jobTemplates: [JobTemplateSummary]?, nextToken: str?}

@endgroup

@group jobs
@endpoint GET /jobs
@optional {status: str, targetSelection: str, maxResults: int, nextToken: str, thingGroupName: str, thingGroupId: str, namespaceId: str}
@returns(200) {jobs: [JobSummary]?, nextToken: str?}

@endgroup

@group managed-job-templates
@endpoint GET /managed-job-templates
@optional {templateName: str, maxResults: int, nextToken: str}
@returns(200) {managedJobTemplates: [ManagedJobTemplateSummary]?, nextToken: str?}

@endgroup

@group metric-values
@endpoint GET /metric-values
@required {thingName: str, metricName: str, startTime: str(timestamp), endTime: str(timestamp)}
@optional {dimensionName: str, dimensionValueOperator: str, maxResults: int, nextToken: str}
@returns(200) {metricDatumList: [MetricDatum]?, nextToken: str?}

@endgroup

@group mitigationactions
@endpoint GET /mitigationactions/actions
@optional {actionType: str, maxResults: int, nextToken: str}
@returns(200) {actionIdentifiers: [MitigationActionIdentifier]?, nextToken: str?}

@endgroup

@group otaUpdates
@endpoint GET /otaUpdates
@optional {maxResults: int, nextToken: str, otaUpdateStatus: str}
@returns(200) {otaUpdates: [OTAUpdateSummary]?, nextToken: str?}

@endgroup

@group certificates-out-going
@endpoint GET /certificates-out-going
@optional {pageSize: int, marker: str, isAscendingOrder: bool}
@returns(200) {outgoingCertificates: [OutgoingCertificate]?, nextMarker: str?}

@endgroup

@group packages
@endpoint GET /packages/{packageName}/versions
@required {packageName: str}
@optional {status: str, maxResults: int, nextToken: str}
@returns(200) {packageVersionSummaries: [PackageVersionSummary]?, nextToken: str?}

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

@endgroup

@group policies
@endpoint GET /policies
@optional {marker: str, pageSize: int, isAscendingOrder: bool}
@returns(200) {policies: [Policy]?, nextMarker: str?}

@endgroup

@group policy-principals
@endpoint GET /policy-principals
@required {x-amzn-iot-policy: str}
@optional {marker: str, pageSize: int, isAscendingOrder: bool}
@returns(200) {principals: [str]?, nextMarker: str?}

@endgroup

@group policies
@endpoint GET /policies/{policyName}/version
@required {policyName: str}
@returns(200) {policyVersions: [PolicyVersion]?}

@endgroup

@group principal-policies
@endpoint GET /principal-policies
@required {x-amzn-iot-principal: str}
@optional {marker: str, pageSize: int, isAscendingOrder: bool}
@returns(200) {policies: [Policy]?, nextMarker: str?}

@endgroup

@group principals
@endpoint GET /principals/things
@required {x-amzn-principal: str}
@optional {nextToken: str, maxResults: int}
@returns(200) {things: [str]?, nextToken: str?}

@endgroup

@group provisioning-templates
@endpoint GET /provisioning-templates/{templateName}/versions
@required {templateName: str}
@optional {maxResults: int, nextToken: str}
@returns(200) {versions: [ProvisioningTemplateVersionSummary]?, nextToken: str?}

@endpoint GET /provisioning-templates
@optional {maxResults: int, nextToken: str}
@returns(200) {templates: [ProvisioningTemplateSummary]?, nextToken: str?}

@endgroup

@group audit
@endpoint GET /audit/relatedResources
@required {findingId: str}
@optional {nextToken: str, maxResults: int}
@returns(200) {relatedResources: [RelatedResource]?, nextToken: str?}

@endgroup

@group role-aliases
@endpoint GET /role-aliases
@optional {pageSize: int, marker: str, isAscendingOrder: bool}
@returns(200) {roleAliases: [str]?, nextMarker: str?}

@endgroup

@group audit
@endpoint GET /audit/scheduledaudits
@optional {nextToken: str, maxResults: int}
@returns(200) {scheduledAudits: [ScheduledAuditMetadata]?, nextToken: str?}

@endgroup

@group security-profiles
@endpoint GET /security-profiles
@optional {nextToken: str, maxResults: int, dimensionName: str, metricName: str}
@returns(200) {securityProfileIdentifiers: [SecurityProfileIdentifier]?, nextToken: str?}

@endgroup

@group security-profiles-for-target
@endpoint GET /security-profiles-for-target
@required {securityProfileTargetArn: str}
@optional {nextToken: str, maxResults: int, recursive: bool}
@returns(200) {securityProfileTargetMappings: [SecurityProfileTargetMapping]?, nextToken: str?}

@endgroup

@group streams
@endpoint GET /streams
@optional {maxResults: int, nextToken: str, isAscendingOrder: bool}
@returns(200) {streams: [StreamSummary]?, nextToken: str?}

@endgroup

@group tags
@endpoint GET /tags
@required {resourceArn: str}
@optional {nextToken: str}
@returns(200) {tags: [Tag]?, nextToken: str?}

@endgroup

@group policy-targets
@endpoint POST /policy-targets/{policyName}
@required {policyName: str}
@optional {marker: str, pageSize: int}
@returns(200) {targets: [str]?, nextMarker: str?}

@endgroup

@group security-profiles
@endpoint GET /security-profiles/{securityProfileName}/targets
@required {securityProfileName: str}
@optional {nextToken: str, maxResults: int}
@returns(200) {securityProfileTargets: [SecurityProfileTarget]?, nextToken: str?}

@endgroup

@group thing-groups
@endpoint GET /thing-groups
@optional {nextToken: str, maxResults: int, parentGroup: str, namePrefixFilter: str, recursive: bool}
@returns(200) {thingGroups: [GroupNameAndArn]?, nextToken: str?}

@endgroup

@group things
@endpoint GET /things/{thingName}/thing-groups
@required {thingName: str}
@optional {nextToken: str, maxResults: int}
@returns(200) {thingGroups: [GroupNameAndArn]?, nextToken: str?}

@endpoint GET /things/{thingName}/principals
@required {thingName: str}
@optional {nextToken: str, maxResults: int}
@returns(200) {principals: [str]?, nextToken: str?}

@endgroup

@group thing-registration-tasks
@endpoint GET /thing-registration-tasks/{taskId}/reports
@required {taskId: str, reportType: str}
@optional {nextToken: str, maxResults: int}
@returns(200) {resourceLinks: [str]?, reportType: str?, nextToken: str?}

@endpoint GET /thing-registration-tasks
@optional {nextToken: str, maxResults: int, status: str}
@returns(200) {taskIds: [str]?, nextToken: str?}

@endgroup

@group thing-types
@endpoint GET /thing-types
@optional {nextToken: str, maxResults: int, thingTypeName: str}
@returns(200) {thingTypes: [ThingTypeDefinition]?, nextToken: str?}

@endgroup

@group things
@endpoint GET /things
@optional {nextToken: str, maxResults: int, attributeName: str, attributeValue: str, thingTypeName: str, usePrefixAttributeValue: bool}
@returns(200) {things: [ThingAttribute]?, nextToken: str?}

@endgroup

@group billing-groups
@endpoint GET /billing-groups/{billingGroupName}/things
@required {billingGroupName: str}
@optional {nextToken: str, maxResults: int}
@returns(200) {things: [str]?, nextToken: str?}

@endgroup

@group thing-groups
@endpoint GET /thing-groups/{thingGroupName}/things
@required {thingGroupName: str}
@optional {recursive: bool, nextToken: str, maxResults: int}
@returns(200) {things: [str]?, nextToken: str?}

@endgroup

@group destinations
@endpoint GET /destinations
@optional {maxResults: int, nextToken: str}
@returns(200) {destinationSummaries: [TopicRuleDestinationSummary]?, nextToken: str?}

@endgroup

@group rules
@endpoint GET /rules
@optional {topic: str, maxResults: int, nextToken: str, ruleDisabled: bool}
@returns(200) {rules: [TopicRuleListItem]?, nextToken: str?}

@endgroup

@group v2LoggingLevel
@endpoint GET /v2LoggingLevel
@optional {targetType: str, nextToken: str, maxResults: int}
@returns(200) {logTargetConfigurations: [LogTargetConfiguration]?, nextToken: str?}

@endgroup

@group violation-events
@endpoint GET /violation-events
@required {startTime: str(timestamp), endTime: str(timestamp)}
@optional {thingName: str, securityProfileName: str, behaviorCriteriaType: str, listSuppressedAlerts: bool, verificationState: str, nextToken: str, maxResults: int}
@returns(200) {violationEvents: [ViolationEvent]?, nextToken: str?}

@endgroup

@group violations
@endpoint POST /violations/verification-state/{violationId}
@required {violationId: str, verificationState: str}
@optional {verificationStateDescription: str}

@endgroup

@group cacertificate
@endpoint POST /cacertificate
@required {caCertificate: str}
@optional {setAsActive: bool, allowAutoRegistration: bool, verificationCertificate: str, registrationConfig: RegistrationConfig, tags: [Tag], certificateMode: str}
@returns(200) {certificateArn: str?, certificateId: str?}

@endgroup

@group certificate
@endpoint POST /certificate/register
@required {certificatePem: str}
@optional {setAsActive: bool, caCertificatePem: str, status: str}
@returns(200) {certificateArn: str?, certificateId: str?}

@endpoint POST /certificate/register-no-ca
@required {certificatePem: str}
@optional {status: str}
@returns(200) {certificateArn: str?, certificateId: str?}

@endgroup

@group things
@endpoint POST /things
@required {templateBody: str}
@optional {parameters: map<str,str>}
@returns(200) {certificatePem: str?, resourceArns: map<str,str>?}

@endgroup

@group reject-certificate-transfer
@endpoint PATCH /reject-certificate-transfer/{certificateId}
@required {certificateId: str}
@optional {rejectReason: str}

@endgroup

@group billing-groups
@endpoint PUT /billing-groups/removeThingFromBillingGroup
@optional {billingGroupName: str, billingGroupArn: str, thingName: str, thingArn: str}

@endgroup

@group thing-groups
@endpoint PUT /thing-groups/removeThingFromThingGroup
@optional {thingGroupName: str, thingGroupArn: str, thingName: str, thingArn: str}

@endgroup

@group rules
@endpoint PATCH /rules/{ruleName}
@required {ruleName: str, topicRulePayload: TopicRulePayload}

@endgroup

@group indices
@endpoint POST /indices/search
@required {queryString: str}
@optional {indexName: str, nextToken: str, maxResults: int, queryVersion: str}
@returns(200) {nextToken: str?, things: [ThingDocument]?, thingGroups: [ThingGroupDocument]?}

@endgroup

@group default-authorizer
@endpoint POST /default-authorizer
@required {authorizerName: str}
@returns(200) {authorizerName: str?, authorizerArn: str?}

@endgroup

@group policies
@endpoint PATCH /policies/{policyName}/version/{policyVersionId}
@required {policyName: str, policyVersionId: str}

@endgroup

@group loggingOptions
@endpoint POST /loggingOptions
@required {loggingOptionsPayload: LoggingOptionsPayload}

@endgroup

@group v2LoggingLevel
@endpoint POST /v2LoggingLevel
@required {logTarget: LogTarget, logLevel: str}

@endgroup

@group v2LoggingOptions
@endpoint POST /v2LoggingOptions
@optional {roleArn: str, defaultLogLevel: str, disableAllLogs: bool}

@endgroup

@group audit
@endpoint POST /audit/mitigationactions/tasks/{taskId}
@required {taskId: str, target: AuditMitigationActionsTaskTarget, auditCheckToActionsMapping: map<str,[str]>, clientRequestToken: str}
@returns(200) {taskId: str?}

@endgroup

@group detect
@endpoint PUT /detect/mitigationactions/tasks/{taskId}
@required {taskId: str, target: DetectMitigationActionsTaskTarget, actions: [str], clientRequestToken: str}
@optional {violationEventOccurrenceRange: ViolationEventOccurrenceRange, includeOnlyActiveViolations: bool, includeSuppressedAlerts: bool}
@returns(200) {taskId: str?}

@endgroup

@group audit
@endpoint POST /audit/tasks
@required {targetCheckNames: [str]}
@returns(200) {taskId: str?}

@endgroup

@group thing-registration-tasks
@endpoint POST /thing-registration-tasks
@required {templateBody: str, inputFileBucket: str, inputFileKey: str, roleArn: str}
@returns(200) {taskId: str?}

@endpoint PUT /thing-registration-tasks/{taskId}/cancel
@required {taskId: str}

@endgroup

@group tags
@endpoint POST /tags
@required {resourceArn: str, tags: [Tag]}

@endgroup

@group test-authorization
@endpoint POST /test-authorization
@required {authInfos: [AuthInfo]}
@optional {clientId: str, principal: str, cognitoIdentityPoolId: str, policyNamesToAdd: [str], policyNamesToSkip: [str]}
@returns(200) {authResults: [AuthResult]?}

@endgroup

@group authorizer
@endpoint POST /authorizer/{authorizerName}/test
@required {authorizerName: str}
@optional {token: str, tokenSignature: str, httpContext: HttpContext, mqttContext: MqttContext, tlsContext: TlsContext}
@returns(200) {isAuthenticated: bool?, principalId: str?, policyDocuments: [str]?, refreshAfterInSeconds: int?, disconnectAfterInSeconds: int?}

@endgroup

@group transfer-certificate
@endpoint PATCH /transfer-certificate/{certificateId}
@required {certificateId: str, targetAwsAccount: str}
@optional {transferMessage: str}
@returns(200) {transferredCertificateArn: str?}

@endgroup

@group untag
@endpoint POST /untag
@required {resourceArn: str, tagKeys: [str]}

@endgroup

@group audit
@endpoint PATCH /audit/configuration
@optional {roleArn: str, auditNotificationTargetConfigurations: map<str,AuditNotificationTarget>, auditCheckConfigurations: map<str,AuditCheckConfiguration>}

@endpoint PATCH /audit/suppressions/update
@required {checkName: str, resourceIdentifier: ResourceIdentifier}
@optional {expirationDate: str(timestamp), suppressIndefinitely: bool, description: str}

@endgroup

@group authorizer
@endpoint PUT /authorizer/{authorizerName}
@required {authorizerName: str}
@optional {authorizerFunctionArn: str, tokenKeyName: str, tokenSigningPublicKeys: map<str,str>, status: str, enableCachingForHttp: bool}
@returns(200) {authorizerName: str?, authorizerArn: str?}

@endgroup

@group billing-groups
@endpoint PATCH /billing-groups/{billingGroupName}
@required {billingGroupName: str, billingGroupProperties: BillingGroupProperties}
@optional {expectedVersion: int(i64)}
@returns(200) {version: int(i64)?}

@endgroup

@group cacertificate
@endpoint PUT /cacertificate/{caCertificateId}
@required {certificateId: str}
@optional {newStatus: str, newAutoRegistrationStatus: str, registrationConfig: RegistrationConfig, removeAutoRegistration: bool}

@endgroup

@group certificates
@endpoint PUT /certificates/{certificateId}
@required {certificateId: str, newStatus: str}

@endgroup

@group certificate-providers
@endpoint PUT /certificate-providers/{certificateProviderName}
@required {certificateProviderName: str}
@optional {lambdaFunctionArn: str, accountDefaultForOperations: [str]}
@returns(200) {certificateProviderName: str?, certificateProviderArn: str?}

@endgroup

@group custom-metric
@endpoint PATCH /custom-metric/{metricName}
@required {metricName: str, displayName: str}
@returns(200) {metricName: str?, metricArn: str?, metricType: str?, displayName: str?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?}

@endgroup

@group dimensions
@endpoint PATCH /dimensions/{name}
@required {name: str, stringValues: [str]}
@returns(200) {name: str?, arn: str?, type: str?, stringValues: [str]?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?}

@endgroup

@group domainConfigurations
@endpoint PUT /domainConfigurations/{domainConfigurationName}
@required {domainConfigurationName: str}
@optional {authorizerConfig: AuthorizerConfig, domainConfigurationStatus: str, removeAuthorizerConfig: bool, tlsConfig: TlsConfig, serverCertificateConfig: ServerCertificateConfig}
@returns(200) {domainConfigurationName: str?, domainConfigurationArn: str?}

@endgroup

@group dynamic-thing-groups
@endpoint PATCH /dynamic-thing-groups/{thingGroupName}
@required {thingGroupName: str, thingGroupProperties: ThingGroupProperties}
@optional {expectedVersion: int(i64), indexName: str, queryString: str, queryVersion: str}
@returns(200) {version: int(i64)?}

@endgroup

@group event-configurations
@endpoint PATCH /event-configurations
@optional {eventConfigurations: map<str,Configuration>}

@endgroup

@group fleet-metric
@endpoint PATCH /fleet-metric/{metricName}
@required {metricName: str, indexName: str}
@optional {queryString: str, aggregationType: AggregationType, period: int, aggregationField: str, description: str, queryVersion: str, unit: str, expectedVersion: int(i64)}

@endgroup

@group indexing
@endpoint POST /indexing/config
@optional {thingIndexingConfiguration: ThingIndexingConfiguration, thingGroupIndexingConfiguration: ThingGroupIndexingConfiguration}

@endgroup

@group jobs
@endpoint PATCH /jobs/{jobId}
@required {jobId: str}
@optional {namespaceId: str, description: str, presignedUrlConfig: PresignedUrlConfig, jobExecutionsRolloutConfig: JobExecutionsRolloutConfig, abortConfig: AbortConfig, timeoutConfig: TimeoutConfig, jobExecutionsRetryConfig: JobExecutionsRetryConfig}

@endgroup

@group mitigationactions
@endpoint PATCH /mitigationactions/actions/{actionName}
@required {actionName: str}
@optional {roleArn: str, actionParams: MitigationActionParams}
@returns(200) {actionArn: str?, actionId: str?}

@endgroup

@group packages
@endpoint PATCH /packages/{packageName}
@required {packageName: str}
@optional {clientToken: str, description: str, defaultVersionName: str, unsetDefaultVersion: bool}

@endgroup

@group package-configuration
@endpoint PATCH /package-configuration
@optional {clientToken: str, versionUpdateByJobsConfig: VersionUpdateByJobsConfig}

@endgroup

@group packages
@endpoint PATCH /packages/{packageName}/versions/{versionName}
@required {packageName: str, versionName: str}
@optional {clientToken: str, description: str, attributes: map<str,str>, action: str}

@endgroup

@group provisioning-templates
@endpoint PATCH /provisioning-templates/{templateName}
@required {templateName: str}
@optional {description: str, enabled: bool, defaultVersionId: int, provisioningRoleArn: str, preProvisioningHook: ProvisioningHook, removePreProvisioningHook: bool}

@endgroup

@group role-aliases
@endpoint PUT /role-aliases/{roleAlias}
@required {roleAlias: str}
@optional {roleArn: str, credentialDurationSeconds: int}
@returns(200) {roleAlias: str?, roleAliasArn: str?}

@endgroup

@group audit
@endpoint PATCH /audit/scheduledaudits/{scheduledAuditName}
@required {scheduledAuditName: str}
@optional {frequency: str, dayOfMonth: str, dayOfWeek: str, targetCheckNames: [str]}
@returns(200) {scheduledAuditArn: str?}

@endgroup

@group security-profiles
@endpoint PATCH /security-profiles/{securityProfileName}
@required {securityProfileName: str}
@optional {expectedVersion: int(i64), securityProfileDescription: str, behaviors: [Behavior], alertTargets: map<str,AlertTarget>, additionalMetricsToRetain: [str], additionalMetricsToRetainV2: [MetricToRetain], deleteBehaviors: bool, deleteAlertTargets: bool, deleteAdditionalMetricsToRetain: bool, metricsExportConfig: MetricsExportConfig, deleteMetricsExportConfig: bool}
@returns(200) {securityProfileName: str?, securityProfileArn: str?, securityProfileDescription: str?, behaviors: [Behavior]?, alertTargets: map<str,AlertTarget>?, additionalMetricsToRetain: [str]?, additionalMetricsToRetainV2: [MetricToRetain]?, version: int(i64)?, creationDate: str(timestamp)?, lastModifiedDate: str(timestamp)?, metricsExportConfig: MetricsExportConfig?{mqttTopic: str, roleArn: str}}

@endgroup

@group streams
@endpoint PUT /streams/{streamId}
@required {streamId: str}
@optional {description: str, files: [StreamFile], roleArn: str}
@returns(200) {streamId: str?, streamArn: str?, description: str?, streamVersion: int?}

@endgroup

@group things
@endpoint PATCH /things/{thingName}
@required {thingName: str}
@optional {thingTypeName: str, attributePayload: AttributePayload, expectedVersion: int(i64), removeThingType: bool}

@endgroup

@group thing-groups
@endpoint PATCH /thing-groups/{thingGroupName}
@required {thingGroupName: str, thingGroupProperties: ThingGroupProperties}
@optional {expectedVersion: int(i64)}
@returns(200) {version: int(i64)?}

@endpoint PUT /thing-groups/updateThingGroupsForThing
@optional {thingName: str, thingGroupsToAdd: [str], thingGroupsToRemove: [str], overrideDynamicGroups: bool}

@endgroup

@group destinations
@endpoint PATCH /destinations
@required {arn: str, status: str}

@endgroup

@group security-profile-behaviors
@endpoint POST /security-profile-behaviors/validate
@required {behaviors: [Behavior]}
@returns(200) {valid: bool?, validationErrors: [ValidationError]?}

@endgroup

@end
