1{
2  "version":"2.0",
3  "metadata":{
4    "apiVersion":"2017-09-29",
5    "endpointPrefix":"data.jobs.iot",
6    "protocol":"rest-json",
7    "serviceFullName":"AWS IoT Jobs Data Plane",
8    "serviceId":"IoT Jobs Data Plane",
9    "signatureVersion":"v4",
10    "signingName":"iot-jobs-data",
11    "uid":"iot-jobs-data-2017-09-29"
12  },
13  "operations":{
14    "DescribeJobExecution":{
15      "name":"DescribeJobExecution",
16      "http":{
17        "method":"GET",
18        "requestUri":"/things/{thingName}/jobs/{jobId}"
19      },
20      "input":{"shape":"DescribeJobExecutionRequest"},
21      "output":{"shape":"DescribeJobExecutionResponse"},
22      "errors":[
23        {"shape":"InvalidRequestException"},
24        {"shape":"ResourceNotFoundException"},
25        {"shape":"ThrottlingException"},
26        {"shape":"ServiceUnavailableException"},
27        {"shape":"CertificateValidationException"},
28        {"shape":"TerminalStateException"}
29      ]
30    },
31    "GetPendingJobExecutions":{
32      "name":"GetPendingJobExecutions",
33      "http":{
34        "method":"GET",
35        "requestUri":"/things/{thingName}/jobs"
36      },
37      "input":{"shape":"GetPendingJobExecutionsRequest"},
38      "output":{"shape":"GetPendingJobExecutionsResponse"},
39      "errors":[
40        {"shape":"InvalidRequestException"},
41        {"shape":"ResourceNotFoundException"},
42        {"shape":"ThrottlingException"},
43        {"shape":"ServiceUnavailableException"},
44        {"shape":"CertificateValidationException"}
45      ]
46    },
47    "StartNextPendingJobExecution":{
48      "name":"StartNextPendingJobExecution",
49      "http":{
50        "method":"PUT",
51        "requestUri":"/things/{thingName}/jobs/$next"
52      },
53      "input":{"shape":"StartNextPendingJobExecutionRequest"},
54      "output":{"shape":"StartNextPendingJobExecutionResponse"},
55      "errors":[
56        {"shape":"InvalidRequestException"},
57        {"shape":"ResourceNotFoundException"},
58        {"shape":"ThrottlingException"},
59        {"shape":"ServiceUnavailableException"},
60        {"shape":"CertificateValidationException"}
61      ]
62    },
63    "UpdateJobExecution":{
64      "name":"UpdateJobExecution",
65      "http":{
66        "method":"POST",
67        "requestUri":"/things/{thingName}/jobs/{jobId}"
68      },
69      "input":{"shape":"UpdateJobExecutionRequest"},
70      "output":{"shape":"UpdateJobExecutionResponse"},
71      "errors":[
72        {"shape":"InvalidRequestException"},
73        {"shape":"ResourceNotFoundException"},
74        {"shape":"ThrottlingException"},
75        {"shape":"ServiceUnavailableException"},
76        {"shape":"CertificateValidationException"},
77        {"shape":"InvalidStateTransitionException"}
78      ]
79    }
80  },
81  "shapes":{
82    "ApproximateSecondsBeforeTimedOut":{"type":"long"},
83    "BinaryBlob":{"type":"blob"},
84    "CertificateValidationException":{
85      "type":"structure",
86      "members":{
87        "message":{"shape":"errorMessage"}
88      },
89      "error":{"httpStatusCode":400},
90      "exception":true
91    },
92    "DescribeJobExecutionJobId":{
93      "type":"string",
94      "pattern":"[a-zA-Z0-9_-]+|^\\$next"
95    },
96    "DescribeJobExecutionRequest":{
97      "type":"structure",
98      "required":[
99        "jobId",
100        "thingName"
101      ],
102      "members":{
103        "jobId":{
104          "shape":"DescribeJobExecutionJobId",
105          "location":"uri",
106          "locationName":"jobId"
107        },
108        "thingName":{
109          "shape":"ThingName",
110          "location":"uri",
111          "locationName":"thingName"
112        },
113        "includeJobDocument":{
114          "shape":"IncludeJobDocument",
115          "location":"querystring",
116          "locationName":"includeJobDocument"
117        },
118        "executionNumber":{
119          "shape":"ExecutionNumber",
120          "location":"querystring",
121          "locationName":"executionNumber"
122        }
123      }
124    },
125    "DescribeJobExecutionResponse":{
126      "type":"structure",
127      "members":{
128        "execution":{"shape":"JobExecution"}
129      }
130    },
131    "DetailsKey":{
132      "type":"string",
133      "max":128,
134      "min":1,
135      "pattern":"[a-zA-Z0-9:_-]+"
136    },
137    "DetailsMap":{
138      "type":"map",
139      "key":{"shape":"DetailsKey"},
140      "value":{"shape":"DetailsValue"}
141    },
142    "DetailsValue":{
143      "type":"string",
144      "max":1024,
145      "min":1,
146      "pattern":"[^\\p{C}]*+"
147    },
148    "ExecutionNumber":{"type":"long"},
149    "ExpectedVersion":{"type":"long"},
150    "GetPendingJobExecutionsRequest":{
151      "type":"structure",
152      "required":["thingName"],
153      "members":{
154        "thingName":{
155          "shape":"ThingName",
156          "location":"uri",
157          "locationName":"thingName"
158        }
159      }
160    },
161    "GetPendingJobExecutionsResponse":{
162      "type":"structure",
163      "members":{
164        "inProgressJobs":{"shape":"JobExecutionSummaryList"},
165        "queuedJobs":{"shape":"JobExecutionSummaryList"}
166      }
167    },
168    "IncludeExecutionState":{"type":"boolean"},
169    "IncludeJobDocument":{"type":"boolean"},
170    "InvalidRequestException":{
171      "type":"structure",
172      "members":{
173        "message":{"shape":"errorMessage"}
174      },
175      "error":{"httpStatusCode":400},
176      "exception":true
177    },
178    "InvalidStateTransitionException":{
179      "type":"structure",
180      "members":{
181        "message":{"shape":"errorMessage"}
182      },
183      "error":{"httpStatusCode":409},
184      "exception":true
185    },
186    "JobDocument":{
187      "type":"string",
188      "max":32768
189    },
190    "JobExecution":{
191      "type":"structure",
192      "members":{
193        "jobId":{"shape":"JobId"},
194        "thingName":{"shape":"ThingName"},
195        "status":{"shape":"JobExecutionStatus"},
196        "statusDetails":{"shape":"DetailsMap"},
197        "queuedAt":{"shape":"QueuedAt"},
198        "startedAt":{"shape":"StartedAt"},
199        "lastUpdatedAt":{"shape":"LastUpdatedAt"},
200        "approximateSecondsBeforeTimedOut":{"shape":"ApproximateSecondsBeforeTimedOut"},
201        "versionNumber":{"shape":"VersionNumber"},
202        "executionNumber":{"shape":"ExecutionNumber"},
203        "jobDocument":{"shape":"JobDocument"}
204      }
205    },
206    "JobExecutionState":{
207      "type":"structure",
208      "members":{
209        "status":{"shape":"JobExecutionStatus"},
210        "statusDetails":{"shape":"DetailsMap"},
211        "versionNumber":{"shape":"VersionNumber"}
212      }
213    },
214    "JobExecutionStatus":{
215      "type":"string",
216      "enum":[
217        "QUEUED",
218        "IN_PROGRESS",
219        "SUCCEEDED",
220        "FAILED",
221        "TIMED_OUT",
222        "REJECTED",
223        "REMOVED",
224        "CANCELED"
225      ]
226    },
227    "JobExecutionSummary":{
228      "type":"structure",
229      "members":{
230        "jobId":{"shape":"JobId"},
231        "queuedAt":{"shape":"QueuedAt"},
232        "startedAt":{"shape":"StartedAt"},
233        "lastUpdatedAt":{"shape":"LastUpdatedAt"},
234        "versionNumber":{"shape":"VersionNumber"},
235        "executionNumber":{"shape":"ExecutionNumber"}
236      }
237    },
238    "JobExecutionSummaryList":{
239      "type":"list",
240      "member":{"shape":"JobExecutionSummary"}
241    },
242    "JobId":{
243      "type":"string",
244      "max":64,
245      "min":1,
246      "pattern":"[a-zA-Z0-9_-]+"
247    },
248    "LastUpdatedAt":{"type":"long"},
249    "QueuedAt":{"type":"long"},
250    "ResourceNotFoundException":{
251      "type":"structure",
252      "members":{
253        "message":{"shape":"errorMessage"}
254      },
255      "error":{"httpStatusCode":404},
256      "exception":true
257    },
258    "ServiceUnavailableException":{
259      "type":"structure",
260      "members":{
261        "message":{"shape":"errorMessage"}
262      },
263      "error":{"httpStatusCode":503},
264      "exception":true,
265      "fault":true
266    },
267    "StartNextPendingJobExecutionRequest":{
268      "type":"structure",
269      "required":["thingName"],
270      "members":{
271        "thingName":{
272          "shape":"ThingName",
273          "location":"uri",
274          "locationName":"thingName"
275        },
276        "statusDetails":{"shape":"DetailsMap"},
277        "stepTimeoutInMinutes":{"shape":"StepTimeoutInMinutes"}
278      }
279    },
280    "StartNextPendingJobExecutionResponse":{
281      "type":"structure",
282      "members":{
283        "execution":{"shape":"JobExecution"}
284      }
285    },
286    "StartedAt":{"type":"long"},
287    "StepTimeoutInMinutes":{"type":"long"},
288    "TerminalStateException":{
289      "type":"structure",
290      "members":{
291        "message":{"shape":"errorMessage"}
292      },
293      "error":{"httpStatusCode":410},
294      "exception":true
295    },
296    "ThingName":{
297      "type":"string",
298      "max":128,
299      "min":1,
300      "pattern":"[a-zA-Z0-9:_-]+"
301    },
302    "ThrottlingException":{
303      "type":"structure",
304      "members":{
305        "message":{"shape":"errorMessage"},
306        "payload":{"shape":"BinaryBlob"}
307      },
308      "error":{"httpStatusCode":429},
309      "exception":true
310    },
311    "UpdateJobExecutionRequest":{
312      "type":"structure",
313      "required":[
314        "jobId",
315        "thingName",
316        "status"
317      ],
318      "members":{
319        "jobId":{
320          "shape":"JobId",
321          "location":"uri",
322          "locationName":"jobId"
323        },
324        "thingName":{
325          "shape":"ThingName",
326          "location":"uri",
327          "locationName":"thingName"
328        },
329        "status":{"shape":"JobExecutionStatus"},
330        "statusDetails":{"shape":"DetailsMap"},
331        "stepTimeoutInMinutes":{"shape":"StepTimeoutInMinutes"},
332        "expectedVersion":{"shape":"ExpectedVersion"},
333        "includeJobExecutionState":{"shape":"IncludeExecutionState"},
334        "includeJobDocument":{"shape":"IncludeJobDocument"},
335        "executionNumber":{"shape":"ExecutionNumber"}
336      }
337    },
338    "UpdateJobExecutionResponse":{
339      "type":"structure",
340      "members":{
341        "executionState":{"shape":"JobExecutionState"},
342        "jobDocument":{"shape":"JobDocument"}
343      }
344    },
345    "VersionNumber":{"type":"long"},
346    "errorMessage":{"type":"string"}
347  }
348}
349