

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# AWS IoT operaciones de API de trabajos
<a name="jobs-api"></a>

AWS IoT La API de trabajos se puede utilizar para cualquiera de las siguientes categorías:
+ Tareas administrativas, como la gestión y el control de los trabajos. Este es el *plano de control*.
+ Los dispositivos que realizan esos trabajos. Este es el *plano de datos*, que permite enviar y recibir datos.

La administración y control de los trabajos utilizan una API de protocolo HTTPS. Los dispositivos pueden usar una API de protocolo HTTPS o MQTT. La API del plano de control se ha diseñado para un volumen reducido de llamadas normalmente cuando se crean trabajos y se hace un seguimiento de ellos. Normalmente, abre una conexión para una solicitud única y, a continuación, cierra la conexión después de que se reciba la respuesta. Las API HTTPS y MQTT del plano de datos permiten un sondeo prolongado. Estas operaciones de API se han diseñado para cantidades grandes de tráfico que pueden escalar millones de dispositivos.

Cada API HTTPS de AWS IoT Jobs tiene un comando correspondiente que te permite llamar a la API desde AWS Command Line Interface (AWS CLI). Los comandos están en minúsculas, con guiones entre las palabras que conforman el nombre de la API. Por ejemplo, puede invocar la API `CreateJob` en la CLI escribiendo lo siguiente:

```
aws iot create-job ...
```

Si ocurre un error durante una operación, recibirá una respuesta de error que contiene información acerca de este.

## ErrorResponse
<a name="jobs-mqtt-error-response"></a>

Contiene información acerca de un error que se produjo durante una operación del servicio Jobs de AWS IoT .

En el siguiente ejemplo se muestra la sintaxis de esta operación:

```
{
    "code": "ErrorCode",
    "message": "string",
    "clientToken": "string",
    "timestamp": timestamp,
    "executionState": JobExecutionState
}
```

A continuación se muestra una descripción de esta `ErrorResponse`:

`code`  
ErrorCode se puede configurar de la siguiente manera:    
InvalidTopic  
La solicitud se envió a un tema del espacio de nombres de AWS IoT Jobs que no se corresponde con ninguna operación de la API.  
InvalidJson  
El contenido de la solicitud podría no interpretarse como un formato JSON con codificación UTF-8 válida.  
InvalidRequest  
El contenido de la solicitud no es válido. Por ejemplo, se devuelve este código cuando una solicitud `UpdateJobExecution` contiene detalles de estado no válido. El mensaje contiene detalles acerca del error.  
InvalidStateTransition  
Una actualización intentó cambiar la ejecución del trabajo a un estado que no es válido debido al estado actual de dicha ejecución. Por ejemplo, un intento de cambiar una solicitud en el estado SUCCEEDED al estado IN\$1PROGRESS. En este caso, el cuerpo del mensaje de error también contiene el campo `executionState`.  
ResourceNotFound  
La `JobExecution` especificada por el tema de la solicitud no existe.   
VersionMismatch  
La versión esperada especificada en la solicitud no coincide con la versión de la ejecución del trabajo en el servicio AWS IoT Jobs. En este caso, el cuerpo del mensaje de error también contiene el campo `executionState`.  
InternalError  
Se ha producido un error interno al procesar la solicitud.  
RequestThrottled  
La solicitud se ha limitado.  
TerminalStateReached  
Se produce cuando un comando para describir un trabajo se realiza en un trabajo que está en un estado terminal.

`message`  
Una cadena de mensajes de error.

`clientToken`  
Una cadena arbitraria utilizada para correlacionar una solicitud con su respuesta.

`timestamp`  
El tiempo, en segundos, desde la fecha de inicio.

`executionState`  
Un objeto [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_JobExecutionState.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_JobExecutionState.html). Este campo se incluye solo cuando el campo `code` tiene el valor `InvalidStateTransition` o `VersionMismatch`. Esto hace que no sea necesario en esos casos realizar una solicitud `DescribeJobExecution` independiente para obtener los datos de estado de ejecución de trabajo actuales.

**Topics**
+ [API de administración y control de trabajos y tipos de datos](jobs-management-control-api.md)
+ [Operaciones y tipos de datos de las API MQTT y HTTPS de dispositivos de Jobs](jobs-mqtt-https-api.md)

# API de administración y control de trabajos y tipos de datos
<a name="jobs-management-control-api"></a>

**Topics**
+ [Tipos de datos de administración y control de trabajo](#jobs-control-plane-data-types)
+ [Operaciones de la API de administración y control del trabajo](#jobs-http-api)

Para determinar el *endpoint-url* parámetro de los comandos CLI, ejecute este comando.

```
aws iot describe-endpoint --endpoint-type=iot:Jobs
```

Este comando devuelve la siguiente salida.

```
{
"endpointAddress": "account-specific-prefix.jobs.iot.aws-region.amazonaws.com"
}
```

**nota**  
El punto de conexión de Jobs no admite la ALPN `x-amzn-http-ca`.  
Si utiliza puntos finales de doble pila (IPv6 y IPv6), utilice el `iot:Data-ATS` punto final. El `iot:Jobs` punto final solo es compatible. IPv4

## Tipos de datos de administración y control de trabajo
<a name="jobs-control-plane-data-types"></a>

Las aplicaciones de administración y control utilizan los siguientes tipos de datos para comunicarse con AWS IoT Jobs.

### Trabajo
<a name="jobs-job"></a>

El objeto `Job` contiene detalles acerca de un trabajo. En el siguiente ejemplo se muestra la sintaxis:

```
{
    "jobArn": "string", 
    "jobId": "string", 
    "status": "IN_PROGRESS|CANCELED|SUCCEEDED", 
    "forceCanceled": boolean,
    "targetSelection": "CONTINUOUS|SNAPSHOT",
    "comment": "string",
    "targets": ["string"], 
    "description": "string",
    "createdAt": timestamp,
    "lastUpdatedAt": timestamp,
    "completedAt": timestamp,
    "jobProcessDetails": {
        "processingTargets": ["string"],
        "numberOfCanceledThings": long, 
        "numberOfSucceededThings": long, 
        "numberOfFailedThings": long,
        "numberOfRejectedThings": long, 
        "numberOfQueuedThings": long, 
        "numberOfInProgressThings": long, 
        "numberOfRemovedThings": long, 
        "numberOfTimedOutThings": long
    }, 
    "presignedUrlConfig": {
        "expiresInSec": number, 
        "roleArn": "string"
    }, 
    "jobExecutionsRolloutConfig": { 
        "exponentialRate": { 
           "baseRatePerMinute": integer,
           "incrementFactor": integer,
           "rateIncreaseCriteria": { 
              "numberOfNotifiedThings": integer, // Set one or the other
              "numberOfSucceededThings": integer // of these two values.
           },
           "maximumPerMinute": integer
      }
    },    
    "abortConfig": { 
       "criteriaList": [ 
          { 
             "action": "string",
             "failureType": "string",
             "minNumberOfExecutedThings": integer,
             "thresholdPercentage": integer
          }
       ]
    },
    "SchedulingConfig": { 
      "startTime": string
      "endTime": string
      "timeZone": string


      "endTimeBehavior": string

   },
    "timeoutConfig": {
        "inProgressTimeoutInMinutes": long
    }
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_Job.html](https://docs.aws.amazon.com/iot/latest/apireference/API_Job.html) o [https://docs.aws.amazon.com/cli/latest/reference/iot/job.html](https://docs.aws.amazon.com/cli/latest/reference/iot/job.html). 

### JobSummary
<a name="jobs-job-summary"></a>

El objeto `JobSummary` contiene un resumen de trabajos. En el siguiente ejemplo se muestra la sintaxis:

```
{
    "jobArn": "string", 
    "jobId": "string",
    "status": "IN_PROGRESS|CANCELED|SUCCEEDED|SCHEDULED", 
    "targetSelection": "CONTINUOUS|SNAPSHOT",
    "thingGroupId": "string",
    "createdAt": timestamp, 
    "lastUpdatedAt": timestamp, 
    "completedAt": timestamp
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_JobSummary.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobSummary.html) o [https://docs.aws.amazon.com/cli/latest/reference/iot/job-summary.html](https://docs.aws.amazon.com/cli/latest/reference/iot/job-summary.html).

### JobExecution
<a name="jobs-job-execution"></a>

El objeto `JobExecution` representa la ejecución de un trabajo en un dispositivo. En el siguiente ejemplo se muestra la sintaxis:

**nota**  
Cuando se utilizan las operaciones de la API del plano de control, el tipo de datos `JobExecution` no contiene ningún campo `JobDocument`. Para obtener esta información, puede utilizar la operación [https://docs.aws.amazon.com/iot/latest/apireference/API_GetJobDocument.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetJobDocument.html) de la API o el comando [https://docs.aws.amazon.com/cli/latest/reference/get-job-document.html](https://docs.aws.amazon.com/cli/latest/reference/get-job-document.html) de la CLI.

```
{
    "approximateSecondsBeforeTimedOut": 50,
    "executionNumber": 1234567890,
    "forceCanceled": true|false,
    "jobId": "string",
    "lastUpdatedAt": timestamp, 
    "queuedAt": timestamp,
    "startedAt": timestamp,
    "status": "QUEUED|IN_PROGRESS|FAILED|SUCCEEDED|CANCELED|TIMED_OUT|REJECTED|REMOVED",
    "forceCanceled": boolean,
    "statusDetails": {
        "detailsMap": { 
            "string": "string" ...
        },
        "status": "string"
    }, 
    "thingArn": "string", 
    "versionNumber": 123
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecution.html) o [https://docs.aws.amazon.com/cli/latest/reference/iot/job-execution.html](https://docs.aws.amazon.com/cli/latest/reference/iot/job-execution.html).

### JobExecutionSummary
<a name="jobs-job-execution-summary"></a>

El objeto `JobExecutionSummary` contiene información del resumen de ejecución de trabajo. En el siguiente ejemplo se muestra la sintaxis:

```
{
    "executionNumber": 1234567890,
    "queuedAt": timestamp,
    "lastUpdatedAt": timestamp,
    "startedAt": timestamp,
    "status": "QUEUED|IN_PROGRESS|FAILED|SUCCEEDED|CANCELED|TIMED_OUT|REJECTED|REMOVED"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummary.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummary.html) o [https://docs.aws.amazon.com/cli/latest/reference/iot/job-execution-summary.html](https://docs.aws.amazon.com/cli/latest/reference/iot/job-execution-summary.html).

### JobExecutionSummaryForJob
<a name="jobs-job-execution-summary-for-job"></a>

El objeto `JobExecutionSummaryForJob` contiene un resumen de información acerca de las ejecuciones de trabajo para un trabajo específico. En el siguiente ejemplo se muestra la sintaxis:

```
{
    "executionSummaries": [
        {
            "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyThing", 
            "jobExecutionSummary": {
                "status": "IN_PROGRESS", 
                "lastUpdatedAt": 1549395301.389, 
                "queuedAt": 1541526002.609, 
                "executionNumber": 1
            }
        }, 
        ...
    ]
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummaryForJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummaryForJob.html) o [https://docs.aws.amazon.com/cli/latest/reference/iot/job-execution-summary-for-job.html](https://docs.aws.amazon.com/cli/latest/reference/iot/job-execution-summary-for-job.html).

### JobExecutionSummaryForThing
<a name="jobs-job-execution-summary-for-thing"></a>

El `JobExecutionSummaryForThing` objeto contiene un resumen de la información sobre la ejecución de un trabajo en un elemento específico. FThe El siguiente ejemplo muestra la sintaxis:

```
{
    "executionSummaries": [
        {
            "jobExecutionSummary": {
                "status": "IN_PROGRESS", 
                "lastUpdatedAt": 1549395301.389, 
                "queuedAt": 1541526002.609, 
                "executionNumber": 1
            }, 
            "jobId": "MyThingJob"
        },
        ...
    ]
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummaryForThing.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummaryForThing.html) o [https://docs.aws.amazon.com/cli/latest/reference/iot/job-execution-summary-for-thing.html](https://docs.aws.amazon.com/cli/latest/reference/iot/job-execution-summary-for-thing.html).

## Operaciones de la API de administración y control del trabajo
<a name="jobs-http-api"></a>

Utilice las siguientes operaciones de la API o comandos de la CLI:

### AssociateTargetsWithJob
<a name="jobs-AssociateTargetsWithJob"></a>

Asocia un grupo a un trabajo continuo. Deben cumplirse los siguientes criterios:
+ El trabajo debe haberse creado con el campo `targetSelection` establecido en `CONTINUOUS`.
+ El estado del trabajo debe ser actualmente `IN_PROGRESS`.
+ El número total de destinos asociados con un trabajo no debe ser superior a 100.

------
#### [ HTTPS request ]

```
POST /jobs/jobId/targets
 
{ 
"targets": [ "string" ],
"comment": "string"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_AssociateTargetsWithJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_AssociateTargetsWithJob.html). 

------
#### [ CLI syntax ]

```
aws iot  associate-targets-with-job \
--targets <value> \
--job-id <value> \
[--comment <value>]  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"targets": [
"string"
],
"jobId": "string",
"comment": "string"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/associate-targets-with-job.html](https://docs.aws.amazon.com/cli/latest/reference/iot/associate-targets-with-job.html).

------

### CancelJob
<a name="jobs-CancelJob"></a>

Cancela un trabajo.

------
#### [ HTTPS request ]

```
PUT /jobs/jobId/cancel
 
{ 
"force": boolean,
"comment": "string",
"reasonCode": "string"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_CancelJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CancelJob.html). 

------
#### [ CLI syntax ]

```
aws iot cancel-job \
    --job-id <value> \
    [--force <value>]  \
    [--comment <value>]  \
    [--reasonCode <value>]  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
    "jobId": "string",
    "force": boolean,
    "comment": "string"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/cancel-job.html](https://docs.aws.amazon.com/cli/latest/reference/iot/cancel-job.html). 

------

### CancelJobExecution
<a name="jobs-CancelJobExecution"></a>

Cancela la ejecución de un trabajo en un dispositivo.

------
#### [ HTTPS request ]

```
PUT /things/thingName/jobs/jobId/cancel
 
{ 
"force": boolean,
"expectedVersion": "string",
"statusDetails": {
    "string": "string"
    ...
}
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_CancelJobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CancelJobExecution.html).

------
#### [ CLI syntax ]

```
aws iot cancel-job-execution \
--job-id <value> \
--thing-name <value> \
[--force | --no-force] \
[--expected-version <value>] \
[--status-details <value>]  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"jobId": "string",
"thingName": "string",
"force": boolean,
"expectedVersion": long,
"statusDetails": {
"string": "string"
}
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/cancel-job-execution.html](https://docs.aws.amazon.com/cli/latest/reference/iot/cancel-job-execution.html).

------

### CreateJob
<a name="jobs-CreateJob"></a>

Crea un trabajo. Puede proporcionar el documento de trabajo como enlace a un archivo en un bucket de Amazon S3 (parámetro `documentSource`) o en el cuerpo de la solicitud (parámetro `document`).

Un trabajo puede ser *continuo* si se establece el parámetro opcional `targetSelection` en `CONTINUOUS` (el predeterminado es `SNAPSHOT`). Un trabajo continuo se puede usar para incorporar o actualizar los dispositivos a medida que se agregan a un grupo, ya que continúa ejecutándose y se lanza cuando se agregan nuevos objetos. Esto puede ocurrir incluso después de que los objetos del grupo en el momento en que se creó el trabajo lo hayan completado.

Un trabajo puede tener una opción [TimeoutConfig](https://docs.aws.amazon.com//iot/latest/apireference/API_TimeoutConfig.html), que establece el valor del temporizador en curso. El temporizador en curso no se puede actualizar y se aplica a todas las ejecuciones del trabajo.

Se realizan las siguientes validaciones en los argumentos para la API `CreateJob`:
+ El `targets` argumento debe ser una lista de cosas o grupos ARNs de cosas válidos. Todas las cosas y grupos de cosas deben estar en su Cuenta de AWS.
+ El argumento `documentSource` debe ser una URL de Amazon S3 válida para un documento de trabajo. Amazon S3 URLs tienen el formato:`https://s3.amazonaws.com/bucketName/objectName`.
+ El documento almacenado en la URL especificada por el argumento `documentSource` debe ser un documento JSON con codificación UTF-8.
+ El tamaño del documento de trabajo está limitado a 32 KB debido al límite del tamaño de un mensaje MQTT (128 KB) y el cifrado.
+ `jobId`Debe ser único en tu Cuenta de AWS.

------
#### [ HTTPS request ]

```
PUT /jobs/jobId
 
{
"targets": [ "string" ],
"document": "string",
"documentSource": "string",
"description": "string",
"jobTemplateArn": "string",
"presignedUrlConfigData": {
    "roleArn": "string", 
    "expiresInSec": "integer" 
},
"targetSelection": "CONTINUOUS|SNAPSHOT",
"jobExecutionsRolloutConfig": { 
    "exponentialRate": { 
       "baseRatePerMinute": integer,
       "incrementFactor": integer,
       "rateIncreaseCriteria": { 
          "numberOfNotifiedThings": integer, // Set one or the other
          "numberOfSucceededThings": integer // of these two values.
       },
       "maximumPerMinute": integer
  }
},
"abortConfig": { 
   "criteriaList": [ 
      { 
         "action": "string",
         "failureType": "string",
         "minNumberOfExecutedThings": integer,
         "thresholdPercentage": integer
      }
   ]
},
"SchedulingConfig": { 
    "startTime": string
    "endTime": string
    "timeZone": string


    "endTimeBehavior": string

   }
"timeoutConfig": { 
  "inProgressTimeoutInMinutes": long
}
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html). 

------
#### [ CLI syntax ]

```
aws iot create-job \
    --job-id <value> \
    --targets <value> \
    [--document-source <value>] \
    [--document <value>] \
    [--description <value>] \
    [--job-template-arn <value>] \
    [--presigned-url-config <value>] \
    [--target-selection <value>] \
    [--job-executions-rollout-config <value>] \
    [--abort-config <value>] \
    [--timeout-config <value>] \
    [--document-parameters <value>]  \
    [--cli-input-json <value>] \
    [--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
    "jobId": "string",
    "targets": [ "string" ],
    "documentSource": "string",
    "document": "string",
    "description": "string",
    "jobTemplateArn": "string",
    "presignedUrlConfig": {
        "roleArn": "string",
        "expiresInSec": long
     },
    "targetSelection": "string",
    "jobExecutionsRolloutConfig": { 
          "exponentialRate": { 
              "baseRatePerMinute": integer,
              "incrementFactor": integer,
              "rateIncreaseCriteria": { 
                 "numberOfNotifiedThings": integer, // Set one or the other
                 "numberOfSucceededThings": integer // of these two values.
              },
      "maximumPerMinute": integer
      }
    }, 
    "abortConfig": { 
    "criteriaList": [ 
        { 
           "action": "string",
           "failureType": "string",
           "minNumberOfExecutedThings": integer,
           "thresholdPercentage": integer
         }
      ]
    },
    "timeoutConfig": { 
          "inProgressTimeoutInMinutes": long
    },
    "documentParameters": {
    "string": "string"
    }
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/create-job.html](https://docs.aws.amazon.com/cli/latest/reference/iot/create-job.html). 

------

### DeleteJob
<a name="jobs-DeleteJob"></a>

Elimina un trabajo y sus ejecuciones de trabajo relacionadas.

La eliminación de un trabajo puede tardar tiempo, en función del número de ejecuciones de trabajo creadas para el trabajo y otros factores diversos. Aunque el trabajo se está eliminando, el estado del trabajo se muestra como "DELETION\$1IN\$1PROGRESS". Si se intenta eliminar o cancelar un trabajo cuyo estado ya es DELETION\$1IN\$1PROGRESS, se producirá un error.

------
#### [ HTTPS request ]

```
DELETE /jobs/jobId?force=force 
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteJob.html).

------
#### [ CLI syntax ]

```
aws iot  delete-job \
--job-id <value> \
[--force | --no-force]  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"jobId": "string",
"force": boolean
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/delete-job.html](https://docs.aws.amazon.com/cli/latest/reference/iot/delete-job.html).

------

### DeleteJobExecution
<a name="jobs-DeleteJobExecution"></a>

Elimina una ejecución de trabajo.

------
#### [ HTTPS request ]

```
DELETE /things/thingName/jobs/jobId/executionNumber/executionNumber?force=force
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteJobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteJobExecution.html).

------
#### [ CLI syntax ]

```
aws iot  delete-job-execution \
--job-id <value> \
--thing-name <value> \
--execution-number <value> \
[--force | --no-force]  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"jobId": "string",
"thingName": "string",
"executionNumber": long,
"force": boolean
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/delete-job-execution.html](https://docs.aws.amazon.com/cli/latest/reference/iot/delete-job-execution.html).

------

### DescribeJob
<a name="jobs-DescribeJob"></a>

Obtiene los detalles de la ejecución de trabajo.

------
#### [ HTTPS request ]

```
GET /jobs/jobId
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJob.html).

------
#### [ CLI syntax ]

```
aws iot describe-job \
--job-id <value>  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"jobId": "string"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/describe-job.html](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-job.html).

------

### DescribeJobExecution
<a name="jobs-DescribeJobExecution"></a>

Obtiene los detalles de una ejecución de trabajo. El estado de la ejecución del trabajo debe ser `SUCCEEDED` o `FAILED`.

------
#### [ HTTPS request ]

```
GET /things/thingName/jobs/jobId?executionNumber=executionNumber
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJobExecution.html).

------
#### [ CLI syntax ]

```
aws iot  describe-job-execution \
--job-id <value> \
--thing-name <value> \
[--execution-number <value>]  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"jobId": "string",
"thingName": "string",
"executionNumber": long
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/describe-job-execution.html](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-job-execution.html).

------

### GetJobDocument
<a name="jobs-GetJobDocument"></a>

Obtiene el documento de trabajo para un trabajo.

**nota**  
 URLs Los marcadores de posición no se sustituyen por Amazon S3 prefirmado URLs en el documento devuelto. Los prefirmados solo URLs se generan cuando el servicio AWS IoT Jobs recibe una solicitud a través de MQTT.

------
#### [ HTTPS request ]

```
GET /jobs/jobId/job-document
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_GetJobDocument.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetJobDocument.html).

------
#### [ CLI syntax ]

```
aws iot get-job-document \
--job-id <value>  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"jobId": "string"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/get-job-document.html](https://docs.aws.amazon.com/cli/latest/reference/iot/get-job-document.html).

------

### ListJobExecutionsForJob
<a name="jobs-listJobExecutionsForJob"></a>

Obtiene una lista de ejecuciones de trabajo para un trabajo.

------
#### [ HTTPS request ]

```
GET /jobs/jobId/things?status=status&maxResults=maxResults&nextToken=nextToken
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_ListJobExecutionsForJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_ListJobExecutionsForJob.html).

------
#### [ CLI syntax ]

```
aws iot  list-job-executions-for-job \
--job-id <value> \
[--status <value>] \
[--max-results <value>] \
[--next-token <value>]  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"jobId": "string",
"status": "string",
"maxResults": "integer",
"nextToken": "string"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/list-job-executions-for-job.html](https://docs.aws.amazon.com/cli/latest/reference/iot/list-job-executions-for-job.html).

------

### ListJobExecutionsForThing
<a name="jobs-ListJobExecutionsForThing"></a>

Obtiene una lista de ejecuciones de trabajo para un objeto.

------
#### [ HTTPS request ]

```
GET /things/thingName/jobs?status=status&maxResults=maxResults&nextToken=nextToken
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_ListJobExecutionsForThing.html](https://docs.aws.amazon.com/iot/latest/apireference/API_ListJobExecutionsForThing.html).

------
#### [ CLI syntax ]

```
aws iot list-job-executions-for-thing \
--thing-name <value> \
[--status <value>] \
[--max-results <value>] \
[--next-token <value>]  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"thingName": "string",
"status": "string",
"maxResults": "integer",
"nextToken": "string"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/list-job-executions-for-thing.html](https://docs.aws.amazon.com/cli/latest/reference/iot/list-job-executions-for-thing.html).

------

### ListJobs
<a name="jobs-listJobs"></a>

Obtiene una lista de los trabajos que tiene en su. Cuenta de AWS

------
#### [ HTTPS request ]

```
GET /jobs?status=status&targetSelection=targetSelection&thingGroupName=thingGroupName&thingGroupId=thingGroupId&maxResults=maxResults&nextToken=nextToken
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_ListJobs.html](https://docs.aws.amazon.com/iot/latest/apireference/API_ListJobs.html).

------
#### [ CLI syntax ]

```
aws iot list-jobs \
[--status <value>] \
[--target-selection <value>] \
[--max-results <value>] \
[--next-token <value>] \
[--thing-group-name <value>] \
[--thing-group-id <value>]  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"status": "string",
"targetSelection": "string",
"maxResults": "integer",
"nextToken": "string",
"thingGroupName": "string",
"thingGroupId": "string"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/list-jobs.html](https://docs.aws.amazon.com/cli/latest/reference/iot/list-jobs.html).

------

### UpdateJob
<a name="jobs-UpdateJob"></a>

Actualiza los campos admitidos del trabajo especificado. Los valores actualizados de `timeoutConfig` surten efecto solo en lanzamientos recientemente en curso. Actualmente, los lanzamientos en curso siguen lanzándose con la configuración de tiempo de espera anterior.

------
#### [ HTTPS request ]

```
PATCH /jobs/jobId
{
"description": "string",
"presignedUrlConfig": { 
  "expiresInSec": number,
  "roleArn": "string"
},
"jobExecutionsRolloutConfig": { 
  "exponentialRate": { 
     "baseRatePerMinute": number,
     "incrementFactor": number,
     "rateIncreaseCriteria": { 
        "numberOfNotifiedThings": number,
        "numberOfSucceededThings": number
     }, 
  "maximumPerMinute": number
  },
"abortConfig": { 
  "criteriaList": [ 
     { 
        "action": "string",
        "failureType": "string",
        "minNumberOfExecutedThings": number,
        "thresholdPercentage": number
     }
  ]
},
"timeoutConfig": { 
  "inProgressTimeoutInMinutes": number
}
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateJob.html](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateJob.html).

------
#### [ CLI syntax ]

```
aws iot  update-job \
--job-id <value> \
[--description <value>] \
[--presigned-url-config <value>] \
[--job-executions-rollout-config <value>] \
[--abort-config <value>] \
[--timeout-config <value>] \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"description": "string",
"presignedUrlConfig": { 
  "expiresInSec": number,
  "roleArn": "string"
},
"jobExecutionsRolloutConfig": { 
  "exponentialRate": { 
     "baseRatePerMinute": number,
     "incrementFactor": number,
     "rateIncreaseCriteria": { 
        "numberOfNotifiedThings": number,
        "numberOfSucceededThings": number
     }
  },
  "maximumPerMinute": number
},
"abortConfig": { 
  "criteriaList": [ 
     { 
        "action": "string",
        "failureType": "string",
        "minNumberOfExecutedThings": number,
        "thresholdPercentage": number
     }
  ]
},
"timeoutConfig": { 
  "inProgressTimeoutInMinutes": number
}
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot/update-job.html](https://docs.aws.amazon.com/cli/latest/reference/iot/update-job.html).

------

# Operaciones y tipos de datos de las API MQTT y HTTPS de dispositivos de Jobs
<a name="jobs-mqtt-https-api"></a>

Los siguientes comandos están disponibles a través de los protocolos MQTT y HTTPS. Utilice estas operaciones de API en el plano de datos para los dispositivos que ejecutan los trabajos.

## Tipos de datos de MQTT y HTTPS de dispositivos de Jobs
<a name="jobs-data-plane-data-types"></a>

Los siguientes tipos de datos se utilizan para comunicarse con el servicio AWS IoT Jobs a través de los protocolos MQTT y HTTPS.

### JobExecution
<a name="jobs-mqtt-job-execution-data"></a>

El objeto `JobExecution` representa la ejecución de un trabajo en un dispositivo. En el siguiente ejemplo se muestra la sintaxis:

**nota**  
Cuando se utilizan las operaciones de la API del plano de datos HTTP y MQTT, el tipo de datos `JobExecution`contiene un campo `JobDocument`. Sus dispositivos pueden usar esta información para recuperar el documento de trabajo de la ejecución de un trabajo.

```
{
    "jobId" : "string",
    "thingName" : "string",
    "jobDocument" : "string",
    "status": "QUEUED|IN_PROGRESS|FAILED|SUCCEEDED|CANCELED|TIMED_OUT|REJECTED|REMOVED",
    "statusDetails": {
        "string": "string"
    },
    "queuedAt" : "timestamp",
    "startedAt" : "timestamp",
    "lastUpdatedAt" : "timestamp",
    "versionNumber" : "number",
    "executionNumber": long
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_JobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_JobExecution.html) o [https://docs.aws.amazon.com/cli/latest/reference/iot-data/job-execution.html](https://docs.aws.amazon.com/cli/latest/reference/iot-data/job-execution.html).

### JobExecutionState
<a name="jobs-mqtt-job-execution-state"></a>

El `JobExecutionState` contiene información sobre el estado de la ejecución de un trabajo. En el siguiente ejemplo se muestra la sintaxis:

```
{
    "status": "QUEUED|IN_PROGRESS|FAILED|SUCCEEDED|CANCELED|TIMED_OUT|REJECTED|REMOVED",
    "statusDetails": {
        "string": "string"
        ...
    }
    "versionNumber": "number"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_JobExecutionState.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_JobExecutionState.html) o [https://docs.aws.amazon.com/cli/latest/reference/iot-data/job-execution-state.html](https://docs.aws.amazon.com/cli/latest/reference/iot-data/job-execution-state.html).

### JobExecutionSummary
<a name="jobs-mqtt-job-execution-summary"></a>

Contiene una subred de información acerca de una ejecución de trabajo. En el siguiente ejemplo se muestra la sintaxis:

```
{
    "jobId": "string",
    "queuedAt": timestamp,
    "startedAt": timestamp,
    "lastUpdatedAt": timestamp,
    "versionNumber": "number",
    "executionNumber": long 
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_JobExecutionSummary.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_JobExecutionSummary.html) o [https://docs.aws.amazon.com/cli/latest/reference/iot-data/job-execution-summary.html](https://docs.aws.amazon.com/cli/latest/reference/iot-data/job-execution-summary.html).

**Topics**
+ [Tipos de datos de MQTT y HTTPS de dispositivos de Jobs](#jobs-data-plane-data-types)
+ [Operaciones de la API MQTT de dispositivos de Jobs](jobs-mqtt-api.md)
+ [API HTTP de dispositivos de Jobs](jobs-http-device-api.md)

# Operaciones de la API MQTT de dispositivos de Jobs
<a name="jobs-mqtt-api"></a><a name="jobs-mqtt-note"></a>

Puede emitir comandos de dispositivos de Jobs publicando los mensajes MQTT en los [Temas reservados utilizados para comandos de Jobs](reserved-topics.md#reserved-topics-job). 

El cliente del dispositivo debe estar suscrito a los temas de los mensajes de respuesta de estos comandos. Si utiliza el cliente de AWS IoT dispositivo, su dispositivo se suscribirá automáticamente a los temas de respuesta. Esto significa que el agente de mensajes publicará los temas de los mensajes de respuesta en el cliente que publicó el mensaje de comando, independientemente de que su cliente se haya suscrito o no a los temas de los mensajes de respuesta. Estos mensajes de respuesta no pasan por el agente de mensajes y otros clientes o reglas no pueden suscribirse a ellos.

Al suscribirse al trabajo y a los temas de eventos `jobExecution` de su solución de monitoreo de flota, primero habilite los [eventos de trabajos y ejecución de trabajos](iot-events.md) para recibir cualquier evento en la nube. Los mensajes de progreso del trabajo que se procesan a través del agente de mensajes y que las reglas de AWS IoT pueden utilizar se publican como [Eventos de trabajos](events-jobs.md). Como el agente de mensajes publica los mensajes de respuesta, incluso sin una suscripción explícita a ellos, el cliente debe estar configurado para recibir e identificar los mensajes que recibe. El cliente también debe confirmar que el *thingName* tema del mensaje entrante se aplica al nombre del cliente antes de que el cliente actúe en función del mensaje.

**nota**  
Los mensajes que se AWS IoT envían en respuesta a los comandos de la API MQTT Jobs se cargan a su cuenta, independientemente de que se haya suscrito a ellos de forma explícita o no.

A continuación se muestran las operaciones de la API MQTT y su sintaxis de solicitud y respuesta. Todas las operaciones de la API MQTT presentan los siguientes parámetros:

clientToken  
Un token de cliente opcional utilizado para correlacionar solicitudes y respuestas. Introduzca un valor arbitrario aquí y se reflejará en la respuesta.

`timestamp`  
El tiempo, en segundos, desde la fecha de inicio, cuando se envió el mensaje.

## GetPendingJobExecutions
<a name="mqtt-getpendingjobexecutions"></a>

Obtiene la lista de todos los trabajos que no están en un estado terminal, respecto de un objeto especificado.

Para invocar esta API, publique un mensaje en `$aws/things/thingName/jobs/get`.

Carga de solicitud:

```
{ "clientToken": "string" }
```

El agente de mensajes publicará `$aws/things/thingName/jobs/get/accepted` e `$aws/things/thingName/jobs/get/rejected` incluso sin una suscripción específica a ellos. Sin embargo, para que su cliente reciba los mensajes, debe estar escuchándolos. Para obtener más información, consulte [la nota sobre los mensajes de la API de trabajos](#jobs-mqtt-note).

Carga de respuesta:

```
{
"inProgressJobs" : [ JobExecutionSummary ... ], 
"queuedJobs" : [ JobExecutionSummary ... ],
"timestamp" : 1489096425069,
"clientToken" : "client-001"
}
```

Donde `inProgressJobs` y `queuedJobs` devuelven una lista de objetos [JobExecutionSummary](jobs-mqtt-https-api.md#jobs-mqtt-job-execution-summary) cuyo estado es `IN_PROGRESS` o `QUEUED`.

## StartNextPendingJobExecution
<a name="mqtt-startnextpendingjobexecution"></a>

Obtiene y comienza la siguiente ejecución de trabajos pendientes de un objeto (estado `IN_PROGRESS` o `QUEUED`). 
+ Las ejecuciones de trabajo con el estado `IN_PROGRESS` se devuelven en primer lugar.
+ Las ejecuciones de trabajo se devuelven en el orden en el que se pusieron en cola. Cuando añada o elimine algo del grupo de destino de su trabajo, confirme el orden de despliegue de las ejecuciones de trabajos nuevos en comparación con las ejecuciones de trabajos existentes.
+ Si la siguiente ejecución de trabajo pendiente es `QUEUED`, su estado cambia a `IN_PROGRESS` y los detalles del estado de la ejecución de trabajo se establecen según se haya especificado.
+ Si la siguiente ejecución de trabajo pendiente está ya en `IN_PROGRESS`, los detalles del estado no cambiarán.
+ Si no hay ejecuciones de trabajo pendientes, la respuesta no incluirá el campo `execution`.
+ Opcionalmente, puede crear un temporizador de pasos estableciendo un valor para la propiedad `stepTimeoutInMinutes`. Si no actualiza el valor de esta propiedad mediante la ejecución de `UpdateJobExecution`, la ejecución del trabajo agotará el tiempo de espera cuando venza el temporizador de pasos.

Para invocar esta API, publique un mensaje en `$aws/things/thingName/jobs/start-next`.

Carga de solicitud:

```
{ 
"statusDetails": {
    "string": "job-execution-state"
    ...
},
"stepTimeoutInMinutes": long,
"clientToken": "string"
}
```

`statusDetails`  
Un conjunto de pares nombre-valor que describen el estado de ejecución del trabajo. Si no se especifica, `statusDetails` no se modifica.

`stepTimeOutInMinutes`  
Especifica la cantidad de tiempo que tiene este dispositivo para finalizar la ejecución de este trabajo. Si el estado de ejecución del trabajo no se ha establecido en un estado terminal antes de que este temporizador venza o antes de que se restablezca el temporizador (llamando a `UpdateJobExecution`, estableciendo el estado en `IN_PROGRESS` y especificando un valor de tiempo de espera nuevo en el campo `stepTimeoutInMinutes`) el estado de ejecución se establece automáticamente en `TIMED_OUT`. Configurar este tiempo de espera no tiene ningún efecto en el tiempo de espera de la ejecución de ese trabajo que se pueda haber especificado cuando se creó el trabajo (`CreateJob` con el campo `timeoutConfig`).   
Los valores válidos para este parámetro están comprendidos entre 1 y 10 080 (1 minuto a 7 días). El valor -1 también es válido y cancelará el temporizador de pasos actual (creado por el uso anterior de UpdateJobExecutionRequest).

El agente de mensajes publicará `$aws/things/thingName/jobs/start-next/accepted` e `$aws/things/thingName/jobs/start-next/rejected` incluso sin una suscripción específica a ellos. Sin embargo, para que su cliente reciba los mensajes, debe estar escuchándolos. Para obtener más información, consulte [la nota sobre los mensajes de la API de trabajos](#jobs-mqtt-note).

Carga de respuesta:

```
{
"execution" : JobExecutionData,
"timestamp" : timestamp,
"clientToken" : "string"
}
```

Donde `execution` es un objeto [JobExecution](jobs-mqtt-https-api.md#jobs-mqtt-job-execution-data). Por ejemplo:

```
{
"execution" : {
    "jobId" : "022",
    "thingName" : "MyThing",
    "jobDocument" : "< contents of job document >",
    "status" : "IN_PROGRESS",
    "queuedAt" : 1489096123309,
    "lastUpdatedAt" : 1489096123309,
    "versionNumber" : 1,
    "executionNumber" : 1234567890
},
"clientToken" : "client-1",
"timestamp" : 1489088524284,
}
```

## DescribeJobExecution
<a name="mqtt-describejobexecution"></a>

Obtiene información detallada acerca de una ejecución de trabajo.

Puede establecer `jobId` en `$next` para devolver la siguiente ejecución de trabajo pendiente para un objeto (estado `IN_PROGRESS` o `QUEUED`).

Para invocar esta API, publique un mensaje en `$aws/things/thingName/jobs/jobId/get`. 

Carga de solicitud:

```
{ 
"jobId" : "022",
"thingName" : "MyThing",
"executionNumber": long,
"includeJobDocument": boolean,
"clientToken": "string" 
}
```

`thingName`  
El nombre del objeto asociado con el dispositivo.

`jobId`  
El identificador único asignado a este trabajo cuando se creó.   
También puede usar `$next` para devolver la siguiente ejecución de trabajo pendiente para un objeto (estado `IN_PROGRESS` o `QUEUED`). En este caso, las ejecuciones de trabajo con el estado `IN_PROGRESS` se devuelven en primer lugar. Las ejecuciones de trabajo se devuelven en el orden en el que se crearon.

`executionNumber`  
(Opcional) Un número que identifica la ejecución de un trabajo en un dispositivo. Si no se especifica, se devuelve la ejecución de trabajo más reciente.

`includeJobDocument`  
(Opcional) Cuando no se establece en `false`, la respuesta contiene el documento de trabajo. El valor predeterminado es `true`.

El agente de mensajes publicará `$aws/things/thingName/jobs/jobId/get/accepted` e `$aws/things/thingName/jobs/jobId/get/rejected` incluso sin una suscripción específica a ellos. Sin embargo, para que su cliente reciba los mensajes, debe estar escuchándolos. Para obtener más información, consulte [la nota sobre los mensajes de la API de trabajos](#jobs-mqtt-note).

Carga de respuesta:

```
{
"execution" : JobExecutionData,
"timestamp": "timestamp",
"clientToken": "string"
}
```

Donde `execution` es un objeto [JobExecution](jobs-mqtt-https-api.md#jobs-mqtt-job-execution-data).

## UpdateJobExecution
<a name="mqtt-updatejobexecution"></a>

Actualiza el estado de una ejecución de trabajo. Si lo prefiere, puede crear un temporizador de pasos estableciendo un valor para la propiedad `stepTimeoutInMinutes`. Si no actualiza el valor de esta propiedad ejecutando `UpdateJobExecution` otra vez, la ejecución del trabajo agotará el tiempo de espera cuando venza el temporizador de pasos.

Para invocar esta API, publique un mensaje en `$aws/things/thingName/jobs/jobId/update`. 

Carga de solicitud:

```
{
"status": "job-execution-state",
"statusDetails": { 
    "string": "string"
    ...
},
"expectedVersion": "number",
"executionNumber": long,
"includeJobExecutionState": boolean,
"includeJobDocument": boolean,
"stepTimeoutInMinutes": long,
"clientToken": "string"
}
```

`status`  
El nuevo estado de ejecución del trabajo (`IN_PROGRESS`, `FAILED`, `SUCCEEDED` o `REJECTED`). Debe especificarse en cada actualización.

`statusDetails`  
Un conjunto de pares nombre-valor que describen el estado de ejecución del trabajo. Si no se especifica, `statusDetails` no se modifica.

`expectedVersion`  
La versión actual esperada de la ejecución de trabajos. Cada vez que actualiza la ejecución de trabajos, aumenta su versión. Si la versión de la ejecución del trabajo almacenada en el servicio AWS IoT Jobs no coincide, la actualización se rechaza con un `VersionMismatch` error. También se devuelve una [ErrorResponse](jobs-api.md#jobs-mqtt-error-response) que contiene los datos del estado actual de ejecución del trabajo. (Esto hace que no sea necesario realizar una solicitud `DescribeJobExecution` aparte para obtener los datos de estado de ejecución del trabajo).

`executionNumber`  
(Opcional) Un número que identifica la ejecución de un trabajo en un dispositivo. Si no se especifica, se utiliza la ejecución de trabajo más reciente.

`includeJobExecutionState`  
(Opcional) Cuando se incluye y establece en `true`, la respuesta contiene el campo `JobExecutionState`. El valor predeterminado es `false`.

`includeJobDocument`  
(Opcional) Cuando se incluye y establece en `true`, la respuesta contiene el `JobDocument`. El valor predeterminado es `false`.

`stepTimeoutInMinutes`  
Especifica la cantidad de tiempo que tiene este dispositivo para finalizar la ejecución de este trabajo. Si el estado de ejecución del trabajo no se ha establecido en un estado terminal antes de que este temporizador venza, o antes de que se restablezca, el estado de ejecución del trabajo se establece en `TIMED_OUT`. Configurar o restablecer este tiempo de espera no tiene ningún efecto en el tiempo de espera de la ejecución del trabajo que se pueda haber especificado cuando se creó el trabajo. 

El agente de mensajes publicará `$aws/things/thingName/jobs/jobId/update/accepted` e `$aws/things/thingName/jobs/jobId/update/rejected` incluso sin una suscripción específica a ellos. Sin embargo, para que su cliente reciba los mensajes, debe estar escuchándolos. Para obtener más información, consulte [la nota sobre los mensajes de la API de trabajos](#jobs-mqtt-note).

Carga de respuesta:

```
{
"executionState": JobExecutionState,
"jobDocument": "string",
"timestamp": timestamp,
"clientToken": "string"
}
```

`executionState`  
Un objeto [JobExecutionState](jobs-mqtt-https-api.md#jobs-mqtt-job-execution-state).

`jobDocument`  
Un objeto [documento de trabajo](key-concepts-jobs.md).  
En las respuestas de MQTT, el campo `jobDocument` es un objeto JSON. En las respuestas de HTTP, es una representación de cadena del objeto JSON.

`timestamp`  
El tiempo, en segundos, desde la fecha de inicio, cuando se envió el mensaje.

`clientToken`  
Un token de cliente utilizado para correlacionar solicitudes y respuestas.

Al utilizar el protocolo MQTT, también puede realizar las siguientes actualizaciones:

## JobExecutionsChanged
<a name="mqtt-jobexecutionschanged"></a>

Se envía cuando se añade una ejecución de trabajo a la lista de ejecuciones de trabajo pendientes para un objeto, o cuando se quita de dicha lista.

Utilice el tema :

`$aws/things/thingName/jobs/notify`

Carga útil de mensaje:

```
{
"jobs" : {
    "JobExecutionState": [ [https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummary.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummary.html) ... ]
         },
    "timestamp": timestamp
}
```

## NextJobExecutionChanged
<a name="mqtt-nextjobexecutionchanged"></a>

Se envía cuando se produce un cambio en el que la ejecución de trabajo es la siguiente en la lista de ejecuciones de trabajo pendientes para un objeto, como se define para [https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJobExecution.html) con `jobId` `$next`. Este mensaje no se envía cuando cambian los detalles de ejecución del siguiente trabajo, solo cuando el siguiente trabajo que devolvería `DescribeJobExecution` con `jobId` `$next` ha cambiado. Considere las ejecuciones de trabajo J1 y J2 con el estado `QUEUED`. J1 es el siguiente elemento de la lista de ejecuciones de trabajo pendientes. Si el estado de J2 cambia a `IN_PROGRESS` mientras el estado de J1 permanece invariable, se envía esta notificación y contiene los detalles de J2.

Utilice el tema :

`$aws/things/thingName/jobs/notify-next`

Carga útil de mensaje:

```
{
"execution" : [https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecution.html),
"timestamp": timestamp,
}
```

# API HTTP de dispositivos de Jobs
<a name="jobs-http-device-api"></a>

Los dispositivos pueden comunicarse con AWS IoT Jobs mediante la firma HTTP, versión 4, en el puerto 443. Este es el método utilizado por la CLI AWS SDKs y. Para obtener más información sobre estas herramientas, consulte [Referencia de AWS CLI comandos: iot-jobs-data](https://docs.aws.amazon.com/cli/latest/reference/iot-jobs-data/index.html) o [AWS SDKs and Tools](https://aws.amazon.com/tools/#sdk).

Los siguientes comandos están disponibles para los dispositivos que ejecutan los trabajos. Para obtener información sobre el uso de las operaciones de la API con el protocolo MQTT, consulte[Operaciones de la API MQTT de dispositivos de Jobs](jobs-mqtt-api.md).

## GetPendingJobExecutions
<a name="http-getpendingjobexecutions"></a>

Obtiene la lista de todos los trabajos que no están en un estado terminal, respecto de un objeto especificado.

------
#### [ HTTPS request ]

```
GET /things/thingName/jobs
```

Respuesta:

```
{
"inProgressJobs" : [ JobExecutionSummary ... ], 
"queuedJobs" : [ JobExecutionSummary ... ]
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_GetPendingJobExecutions.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_GetPendingJobExecutions.html). 

------
#### [ CLI syntax ]

```
aws iot-jobs-data get-pending-job-executions \
--thing-name <value>  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"thingName": "string"
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot-jobs-data/get-pending-job-executions.html](https://docs.aws.amazon.com/cli/latest/reference/iot-jobs-data/get-pending-job-executions.html).

------

## StartNextPendingJobExecution
<a name="http-startnextpendingjobexecution"></a>

Obtiene y comienza la siguiente ejecución de trabajos pendientes de un objeto (con un estado `IN_PROGRESS` o `QUEUED`). 
+ Las ejecuciones de trabajo con el estado `IN_PROGRESS` se devuelven en primer lugar.
+ Las ejecuciones de trabajo se devuelven en el orden en el que se crearon.
+ Si la siguiente ejecución de trabajo pendiente es `QUEUED`, su estado cambia a `IN_PROGRESS` y los detalles del estado de la ejecución de trabajo se establecen según se haya especificado.
+ Si la siguiente ejecución de trabajo pendiente está ya en `IN_PROGRESS`, los detalles del estado no cambiarán.
+ Si no hay ejecuciones de trabajo pendientes, la respuesta no incluirá el campo `execution`.
+ Opcionalmente, puede crear un temporizador de pasos estableciendo un valor para la propiedad `stepTimeoutInMinutes`. Si no actualiza el valor de esta propiedad mediante la ejecución de `UpdateJobExecution`, la ejecución del trabajo agotará el tiempo de espera cuando venza el temporizador de pasos.

------
#### [ HTTPS request ]

En el siguiente ejemplo se muestra la sintaxis de la solicitud:

```
PUT /things/thingName/jobs/$next
{
"statusDetails": { 
    "string": "string" 
    ... 
},
"stepTimeoutInMinutes": long
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_StartNextPendingJobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_StartNextPendingJobExecution.html).

------
#### [ CLI syntax ]

**Sinopsis:**

```
aws iot-jobs-data  start-next-pending-job-execution \
--thing-name <value> \
{--step-timeout-in-minutes <value>] \
[--status-details <value>]  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"thingName": "string",
"statusDetails": {
"string": "string"
},
"stepTimeoutInMinutes": long
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot-jobs-data/start-next-pending-job-execution.html](https://docs.aws.amazon.com/cli/latest/reference/iot-jobs-data/start-next-pending-job-execution.html).

------

## DescribeJobExecution
<a name="http-describejobexecution"></a>

Obtiene información detallada acerca de una ejecución de trabajo.

Puede establecer el `jobId` en `$next` para devolver la siguiente ejecución de trabajo pendiente para un objeto. El estado de la ejecución del trabajo debe ser `QUEUED` o `IN_PROGRESS`.

------
#### [ HTTPS request ]

Solicitud:

```
GET /things/thingName/jobs/jobId?executionNumber=executionNumber&includeJobDocument=includeJobDocument
```

Response: (Respuesta:)

```
{
"execution" : JobExecution,
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_DescribeJobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_DescribeJobExecution.html).

------
#### [ CLI syntax ]

**Sinopsis:**

```
aws iot-jobs-data  describe-job-execution \
--job-id <value> \
--thing-name <value> \
[--include-job-document | --no-include-job-document] \
[--execution-number <value>]  \
[--cli-input-json <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"jobId": "string",
"thingName": "string",
"includeJobDocument": boolean,
"executionNumber": long
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot-data/describe-job-execution.html](https://docs.aws.amazon.com/cli/latest/reference/iot-data/describe-job-execution.html).

------

## UpdateJobExecution
<a name="http-updatejobexecution"></a>

Actualiza el estado de una ejecución de trabajo. Opcionalmente, puede crear un temporizador de pasos estableciendo un valor para la propiedad `stepTimeoutInMinutes`. Si no actualiza el valor de esta propiedad ejecutando `UpdateJobExecution` otra vez, la ejecución del trabajo agotará el tiempo de espera cuando venza el temporizador de pasos.

------
#### [ HTTPS request ]

Solicitud:

```
POST /things/thingName/jobs/jobId
{
"status": "job-execution-state",
"statusDetails": { 
    "string": "string"
    ...
},
"expectedVersion": "number",
"includeJobExecutionState": boolean,
"includeJobDocument": boolean,
"stepTimeoutInMinutes": long,
"executionNumber": long 
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_UpdateJobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_UpdateJobExecution.html).

------
#### [ CLI syntax ]

**Sinopsis:**

```
aws iot-jobs-data  update-job-execution \
--job-id <value> \
--thing-name <value> \
--status <value> \
[--status-details <value>] \
[--expected-version <value>] \
[--include-job-execution-state | --no-include-job-execution-state] \
[--include-job-document | --no-include-job-document] \
[--execution-number <value>]  \
[--cli-input-json <value>] \
[--step-timeout-in-minutes <value>] \
[--generate-cli-skeleton]
```

 `cli-input-json` formato:

```
{
"jobId": "string",
"thingName": "string",
"status": "string",
"statusDetails": {
"string": "string"
},
"stepTimeoutInMinutes": number,
"expectedVersion": long,
"includeJobExecutionState": boolean,
"includeJobDocument": boolean,
"executionNumber": long
}
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/iot-data/update-job-execution.html](https://docs.aws.amazon.com/cli/latest/reference/iot-data/update-job-execution.html).

------