deleteJob method

Future<void> deleteJob({
  1. required String jobId,
  2. bool? force,
  3. String? namespaceId,
})

Deletes a job and its related job executions.

Deleting a job may take time, depending on the number of job executions created for the job and various other factors. While the job is being deleted, the status of the job will be shown as "DELETION_IN_PROGRESS". Attempting to delete or cancel a job whose status is already "DELETION_IN_PROGRESS" will result in an error.

Only 10 jobs may have status "DELETION_IN_PROGRESS" at the same time, or a LimitExceededException will occur.

May throw InvalidRequestException. May throw InvalidStateTransitionException. May throw ResourceNotFoundException. May throw LimitExceededException. May throw ThrottlingException. May throw ServiceUnavailableException.

Parameter jobId : The ID of the job to be deleted.

After a job deletion is completed, you may reuse this jobId when you create a new job. However, this is not recommended, and you must ensure that your devices are not using the jobId to refer to the deleted job.

Parameter force : (Optional) When true, you can delete a job which is "IN_PROGRESS". Otherwise, you can only delete a job which is in a terminal state ("COMPLETED" or "CANCELED") or an exception will occur. The default is false.

Parameter namespaceId : The namespace used to indicate that a job is a customer-managed job.

When you specify a value for this parameter, AWS IoT Core sends jobs notifications to MQTT topics that contain the value in the following format.

$aws/things/THING_NAME/jobs/JOB_ID/notify-namespace-NAMESPACE_ID/

Implementation

Future<void> deleteJob({
  required String jobId,
  bool? force,
  String? namespaceId,
}) async {
  ArgumentError.checkNotNull(jobId, 'jobId');
  _s.validateStringLength(
    'jobId',
    jobId,
    1,
    64,
    isRequired: true,
  );
  _s.validateStringLength(
    'namespaceId',
    namespaceId,
    1,
    64,
  );
  final $query = <String, List<String>>{
    if (force != null) 'force': [force.toString()],
    if (namespaceId != null) 'namespaceId': [namespaceId],
  };
  await _protocol.send(
    payload: null,
    method: 'DELETE',
    requestUri: '/jobs/${Uri.encodeComponent(jobId)}',
    queryParams: $query,
    exceptionFnMap: _exceptionFns,
  );
}