1{
2    "smithy": "1.0",
3    "metadata": {
4        "suppressions": [
5            {
6                "id": "HttpMethodSemantics",
7                "namespace": "*"
8            },
9            {
10                "id": "HttpResponseCodeSemantics",
11                "namespace": "*"
12            },
13            {
14                "id": "PaginatedTrait",
15                "namespace": "*"
16            },
17            {
18                "id": "HttpHeaderTrait",
19                "namespace": "*"
20            },
21            {
22                "id": "HttpUriConflict",
23                "namespace": "*"
24            },
25            {
26                "id": "Service",
27                "namespace": "*"
28            }
29        ]
30    },
31    "shapes": {
32        "com.amazonaws.iotsecuretunneling#AmazonResourceName": {
33            "type": "string",
34            "traits": {
35                "smithy.api#length": {
36                    "min": 1,
37                    "max": 1011
38                }
39            }
40        },
41        "com.amazonaws.iotsecuretunneling#ClientAccessToken": {
42            "type": "string",
43            "traits": {
44                "smithy.api#sensitive": {}
45            }
46        },
47        "com.amazonaws.iotsecuretunneling#CloseTunnel": {
48            "type": "operation",
49            "input": {
50                "target": "com.amazonaws.iotsecuretunneling#CloseTunnelRequest"
51            },
52            "output": {
53                "target": "com.amazonaws.iotsecuretunneling#CloseTunnelResponse"
54            },
55            "errors": [
56                {
57                    "target": "com.amazonaws.iotsecuretunneling#ResourceNotFoundException"
58                }
59            ],
60            "traits": {
61                "smithy.api#documentation": "<p>Closes a tunnel identified by the unique tunnel id. When a <code>CloseTunnel</code>\n\t\t\trequest is received, we close the WebSocket connections between the client and proxy\n\t\t\tserver so no data can be transmitted.</p>",
62                "smithy.api#http": {
63                    "method": "DELETE",
64                    "uri": "/tunnels/{tunnelId}",
65                    "code": 200
66                }
67            }
68        },
69        "com.amazonaws.iotsecuretunneling#CloseTunnelRequest": {
70            "type": "structure",
71            "members": {
72                "tunnelId": {
73                    "target": "com.amazonaws.iotsecuretunneling#TunnelId",
74                    "traits": {
75                        "smithy.api#documentation": "<p>The ID of the tunnel to close.</p>",
76                        "smithy.api#httpLabel": {},
77                        "smithy.api#required": {}
78                    }
79                },
80                "delete": {
81                    "target": "com.amazonaws.iotsecuretunneling#DeleteFlag",
82                    "traits": {
83                        "smithy.api#box": {},
84                        "smithy.api#documentation": "<p>When set to true, AWS IoT Secure Tunneling deletes the tunnel data\n\t\t\timmediately.</p>",
85                        "smithy.api#httpQuery": "delete"
86                    }
87                }
88            }
89        },
90        "com.amazonaws.iotsecuretunneling#CloseTunnelResponse": {
91            "type": "structure",
92            "members": {}
93        },
94        "com.amazonaws.iotsecuretunneling#ConnectionState": {
95            "type": "structure",
96            "members": {
97                "status": {
98                    "target": "com.amazonaws.iotsecuretunneling#ConnectionStatus",
99                    "traits": {
100                        "smithy.api#documentation": "<p>The connection status of the tunnel. Valid values are <code>CONNECTED</code> and\n\t\t\t\t<code>DISCONNECTED</code>.</p>"
101                    }
102                },
103                "lastUpdatedAt": {
104                    "target": "com.amazonaws.iotsecuretunneling#DateType",
105                    "traits": {
106                        "smithy.api#documentation": "<p>The last time the connection status was updated.</p>"
107                    }
108                }
109            },
110            "traits": {
111                "smithy.api#documentation": "<p>The state of a connection.</p>"
112            }
113        },
114        "com.amazonaws.iotsecuretunneling#ConnectionStatus": {
115            "type": "string",
116            "traits": {
117                "smithy.api#enum": [
118                    {
119                        "value": "CONNECTED",
120                        "name": "CONNECTED"
121                    },
122                    {
123                        "value": "DISCONNECTED",
124                        "name": "DISCONNECTED"
125                    }
126                ]
127            }
128        },
129        "com.amazonaws.iotsecuretunneling#DateType": {
130            "type": "timestamp"
131        },
132        "com.amazonaws.iotsecuretunneling#DeleteFlag": {
133            "type": "boolean"
134        },
135        "com.amazonaws.iotsecuretunneling#DescribeTunnel": {
136            "type": "operation",
137            "input": {
138                "target": "com.amazonaws.iotsecuretunneling#DescribeTunnelRequest"
139            },
140            "output": {
141                "target": "com.amazonaws.iotsecuretunneling#DescribeTunnelResponse"
142            },
143            "errors": [
144                {
145                    "target": "com.amazonaws.iotsecuretunneling#ResourceNotFoundException"
146                }
147            ],
148            "traits": {
149                "smithy.api#documentation": "<p>Gets information about a tunnel identified by the unique tunnel id.</p>",
150                "smithy.api#http": {
151                    "method": "GET",
152                    "uri": "/tunnels/{tunnelId}",
153                    "code": 200
154                }
155            }
156        },
157        "com.amazonaws.iotsecuretunneling#DescribeTunnelRequest": {
158            "type": "structure",
159            "members": {
160                "tunnelId": {
161                    "target": "com.amazonaws.iotsecuretunneling#TunnelId",
162                    "traits": {
163                        "smithy.api#documentation": "<p>The tunnel to describe.</p>",
164                        "smithy.api#httpLabel": {},
165                        "smithy.api#required": {}
166                    }
167                }
168            }
169        },
170        "com.amazonaws.iotsecuretunneling#DescribeTunnelResponse": {
171            "type": "structure",
172            "members": {
173                "tunnel": {
174                    "target": "com.amazonaws.iotsecuretunneling#Tunnel",
175                    "traits": {
176                        "smithy.api#documentation": "<p>The tunnel being described.</p>"
177                    }
178                }
179            }
180        },
181        "com.amazonaws.iotsecuretunneling#Description": {
182            "type": "string",
183            "traits": {
184                "smithy.api#pattern": "[^\\p{C}]{1,2048}"
185            }
186        },
187        "com.amazonaws.iotsecuretunneling#DestinationConfig": {
188            "type": "structure",
189            "members": {
190                "thingName": {
191                    "target": "com.amazonaws.iotsecuretunneling#ThingName",
192                    "traits": {
193                        "smithy.api#documentation": "<p>The name of the IoT thing to which you want to connect.</p>"
194                    }
195                },
196                "services": {
197                    "target": "com.amazonaws.iotsecuretunneling#ServiceList",
198                    "traits": {
199                        "smithy.api#documentation": "<p>A list of service names that identity the target application. The AWS IoT client running on the destination device reads\n\t\t\tthis value and uses it to look up a port or an IP address and a port. The AWS IoT client\n\t\t\tinstantiates the local proxy which uses this information to connect to the destination\n\t\t\tapplication.</p>",
200                        "smithy.api#required": {}
201                    }
202                }
203            },
204            "traits": {
205                "smithy.api#documentation": "<p>The destination configuration.</p>"
206            }
207        },
208        "com.amazonaws.iotsecuretunneling#ErrorMessage": {
209            "type": "string"
210        },
211        "com.amazonaws.iotsecuretunneling#IoTSecuredTunneling": {
212            "type": "service",
213            "version": "2018-10-05",
214            "operations": [
215                {
216                    "target": "com.amazonaws.iotsecuretunneling#CloseTunnel"
217                },
218                {
219                    "target": "com.amazonaws.iotsecuretunneling#DescribeTunnel"
220                },
221                {
222                    "target": "com.amazonaws.iotsecuretunneling#ListTagsForResource"
223                },
224                {
225                    "target": "com.amazonaws.iotsecuretunneling#ListTunnels"
226                },
227                {
228                    "target": "com.amazonaws.iotsecuretunneling#OpenTunnel"
229                },
230                {
231                    "target": "com.amazonaws.iotsecuretunneling#TagResource"
232                },
233                {
234                    "target": "com.amazonaws.iotsecuretunneling#UntagResource"
235                }
236            ],
237            "traits": {
238                "aws.api#service": {
239                    "sdkId": "IoTSecureTunneling",
240                    "arnNamespace": "iotsecuredtunneling",
241                    "cloudFormationName": "IoTSecureTunneling",
242                    "cloudTrailEventSource": "iotsecuretunneling.amazonaws.com",
243                    "endpointPrefix": "api.tunneling.iot"
244                },
245                "aws.auth#sigv4": {
246                    "name": "iotsecuredtunneling"
247                },
248                "aws.protocols#awsJson1_1": {},
249                "smithy.api#documentation": "<fullname>AWS IoT Secure Tunneling</fullname>\n\t\t       <p>AWS IoT Secure Tunnling enables you to create remote connections to devices\n\t\t\tdeployed in the field.</p>\n\t\t\n\t\t       <p>For more information about how AWS IoT Secure Tunneling works, see <a href=\"https://docs.aws.amazon.com/iot/latest/developerguide/secure-tunneling.html\">AWS IoT Secure Tunneling</a>.</p>",
250                "smithy.api#title": "AWS IoT Secure Tunneling"
251            }
252        },
253        "com.amazonaws.iotsecuretunneling#LimitExceededException": {
254            "type": "structure",
255            "members": {
256                "message": {
257                    "target": "com.amazonaws.iotsecuretunneling#ErrorMessage"
258                }
259            },
260            "traits": {
261                "smithy.api#documentation": "<p>Thrown when a tunnel limit is exceeded.</p>",
262                "smithy.api#error": "client",
263                "smithy.api#httpError": 403
264            }
265        },
266        "com.amazonaws.iotsecuretunneling#ListTagsForResource": {
267            "type": "operation",
268            "input": {
269                "target": "com.amazonaws.iotsecuretunneling#ListTagsForResourceRequest"
270            },
271            "output": {
272                "target": "com.amazonaws.iotsecuretunneling#ListTagsForResourceResponse"
273            },
274            "errors": [
275                {
276                    "target": "com.amazonaws.iotsecuretunneling#ResourceNotFoundException"
277                }
278            ],
279            "traits": {
280                "smithy.api#documentation": "<p>Lists the tags for the specified resource.</p>",
281                "smithy.api#http": {
282                    "method": "GET",
283                    "uri": "/tags",
284                    "code": 200
285                }
286            }
287        },
288        "com.amazonaws.iotsecuretunneling#ListTagsForResourceRequest": {
289            "type": "structure",
290            "members": {
291                "resourceArn": {
292                    "target": "com.amazonaws.iotsecuretunneling#AmazonResourceName",
293                    "traits": {
294                        "smithy.api#documentation": "<p>The resource ARN.</p>",
295                        "smithy.api#httpQuery": "resourceArn",
296                        "smithy.api#required": {}
297                    }
298                }
299            }
300        },
301        "com.amazonaws.iotsecuretunneling#ListTagsForResourceResponse": {
302            "type": "structure",
303            "members": {
304                "tags": {
305                    "target": "com.amazonaws.iotsecuretunneling#TagList",
306                    "traits": {
307                        "smithy.api#documentation": "<p>The tags for the specified resource.</p>"
308                    }
309                }
310            }
311        },
312        "com.amazonaws.iotsecuretunneling#ListTunnels": {
313            "type": "operation",
314            "input": {
315                "target": "com.amazonaws.iotsecuretunneling#ListTunnelsRequest"
316            },
317            "output": {
318                "target": "com.amazonaws.iotsecuretunneling#ListTunnelsResponse"
319            },
320            "traits": {
321                "smithy.api#documentation": "<p>List all tunnels for an AWS account. Tunnels are listed by creation time in\n\t\t\tdescending order, newer tunnels will be listed before older tunnels.</p>",
322                "smithy.api#http": {
323                    "method": "GET",
324                    "uri": "/tunnels",
325                    "code": 200
326                },
327                "smithy.api#paginated": {
328                    "inputToken": "nextToken",
329                    "outputToken": "nextToken",
330                    "pageSize": "maxResults"
331                }
332            }
333        },
334        "com.amazonaws.iotsecuretunneling#ListTunnelsRequest": {
335            "type": "structure",
336            "members": {
337                "thingName": {
338                    "target": "com.amazonaws.iotsecuretunneling#ThingName",
339                    "traits": {
340                        "smithy.api#documentation": "<p>The name of the IoT thing associated with the destination device.</p>",
341                        "smithy.api#httpQuery": "thingName"
342                    }
343                },
344                "maxResults": {
345                    "target": "com.amazonaws.iotsecuretunneling#MaxResults",
346                    "traits": {
347                        "smithy.api#box": {},
348                        "smithy.api#documentation": "<p>The maximum number of results to return at once.</p>",
349                        "smithy.api#httpQuery": "maxResults"
350                    }
351                },
352                "nextToken": {
353                    "target": "com.amazonaws.iotsecuretunneling#NextToken",
354                    "traits": {
355                        "smithy.api#documentation": "<p>A token to retrieve the next set of results.</p>",
356                        "smithy.api#httpQuery": "nextToken"
357                    }
358                }
359            }
360        },
361        "com.amazonaws.iotsecuretunneling#ListTunnelsResponse": {
362            "type": "structure",
363            "members": {
364                "tunnelSummaries": {
365                    "target": "com.amazonaws.iotsecuretunneling#TunnelSummaryList",
366                    "traits": {
367                        "smithy.api#documentation": "<p>A short description of the tunnels in an AWS account.</p>"
368                    }
369                },
370                "nextToken": {
371                    "target": "com.amazonaws.iotsecuretunneling#NextToken",
372                    "traits": {
373                        "smithy.api#documentation": "<p>A token to used to retrieve the next set of results.</p>"
374                    }
375                }
376            }
377        },
378        "com.amazonaws.iotsecuretunneling#MaxResults": {
379            "type": "integer",
380            "traits": {
381                "smithy.api#range": {
382                    "min": 1,
383                    "max": 100
384                }
385            }
386        },
387        "com.amazonaws.iotsecuretunneling#NextToken": {
388            "type": "string",
389            "traits": {
390                "smithy.api#pattern": "[a-zA-Z0-9_=-]{1,4096}"
391            }
392        },
393        "com.amazonaws.iotsecuretunneling#OpenTunnel": {
394            "type": "operation",
395            "input": {
396                "target": "com.amazonaws.iotsecuretunneling#OpenTunnelRequest"
397            },
398            "output": {
399                "target": "com.amazonaws.iotsecuretunneling#OpenTunnelResponse"
400            },
401            "errors": [
402                {
403                    "target": "com.amazonaws.iotsecuretunneling#LimitExceededException"
404                }
405            ],
406            "traits": {
407                "smithy.api#documentation": "<p>Creates a new tunnel, and returns two client access tokens for clients to use to\n\t\t\tconnect to the AWS IoT Secure Tunneling proxy server.</p>",
408                "smithy.api#http": {
409                    "method": "POST",
410                    "uri": "/tunnels",
411                    "code": 200
412                }
413            }
414        },
415        "com.amazonaws.iotsecuretunneling#OpenTunnelRequest": {
416            "type": "structure",
417            "members": {
418                "description": {
419                    "target": "com.amazonaws.iotsecuretunneling#Description",
420                    "traits": {
421                        "smithy.api#documentation": "<p>A short text description of the tunnel. </p>"
422                    }
423                },
424                "tags": {
425                    "target": "com.amazonaws.iotsecuretunneling#TagList",
426                    "traits": {
427                        "smithy.api#documentation": "<p>A collection of tag metadata.</p>"
428                    }
429                },
430                "destinationConfig": {
431                    "target": "com.amazonaws.iotsecuretunneling#DestinationConfig",
432                    "traits": {
433                        "smithy.api#documentation": "<p>The destination configuration for the OpenTunnel request.</p>"
434                    }
435                },
436                "timeoutConfig": {
437                    "target": "com.amazonaws.iotsecuretunneling#TimeoutConfig",
438                    "traits": {
439                        "smithy.api#documentation": "<p>Timeout configuration for a tunnel.</p>"
440                    }
441                }
442            }
443        },
444        "com.amazonaws.iotsecuretunneling#OpenTunnelResponse": {
445            "type": "structure",
446            "members": {
447                "tunnelId": {
448                    "target": "com.amazonaws.iotsecuretunneling#TunnelId",
449                    "traits": {
450                        "smithy.api#documentation": "<p>A unique alpha-numeric tunnel ID.</p>"
451                    }
452                },
453                "tunnelArn": {
454                    "target": "com.amazonaws.iotsecuretunneling#TunnelArn",
455                    "traits": {
456                        "smithy.api#documentation": "<p>The Amazon Resource Name for the tunnel. The tunnel ARN format is\n\t\t\t\t<code>arn:aws:tunnel:<region>:<account-id>:tunnel/<tunnel-id></code>\n         </p>"
457                    }
458                },
459                "sourceAccessToken": {
460                    "target": "com.amazonaws.iotsecuretunneling#ClientAccessToken",
461                    "traits": {
462                        "smithy.api#documentation": "<p>The access token the source local proxy uses to connect to AWS IoT Secure\n\t\t\tTunneling.</p>"
463                    }
464                },
465                "destinationAccessToken": {
466                    "target": "com.amazonaws.iotsecuretunneling#ClientAccessToken",
467                    "traits": {
468                        "smithy.api#documentation": "<p>The access token the destination local proxy uses to connect to AWS IoT Secure\n\t\t\tTunneling.</p>"
469                    }
470                }
471            }
472        },
473        "com.amazonaws.iotsecuretunneling#ResourceNotFoundException": {
474            "type": "structure",
475            "members": {
476                "message": {
477                    "target": "com.amazonaws.iotsecuretunneling#ErrorMessage"
478                }
479            },
480            "traits": {
481                "smithy.api#documentation": "<p>Thrown when an operation is attempted on a resource that does not exist.</p>",
482                "smithy.api#error": "client",
483                "smithy.api#httpError": 404
484            }
485        },
486        "com.amazonaws.iotsecuretunneling#Service": {
487            "type": "string",
488            "traits": {
489                "smithy.api#length": {
490                    "min": 1,
491                    "max": 128
492                },
493                "smithy.api#pattern": "[a-zA-Z0-9:_-]+"
494            }
495        },
496        "com.amazonaws.iotsecuretunneling#ServiceList": {
497            "type": "list",
498            "member": {
499                "target": "com.amazonaws.iotsecuretunneling#Service"
500            },
501            "traits": {
502                "smithy.api#length": {
503                    "min": 1
504                }
505            }
506        },
507        "com.amazonaws.iotsecuretunneling#Tag": {
508            "type": "structure",
509            "members": {
510                "key": {
511                    "target": "com.amazonaws.iotsecuretunneling#TagKey",
512                    "traits": {
513                        "smithy.api#documentation": "<p>The key of the tag.</p>",
514                        "smithy.api#required": {}
515                    }
516                },
517                "value": {
518                    "target": "com.amazonaws.iotsecuretunneling#TagValue",
519                    "traits": {
520                        "smithy.api#documentation": "<p>The value of the tag.</p>",
521                        "smithy.api#required": {}
522                    }
523                }
524            },
525            "traits": {
526                "smithy.api#documentation": "<p>An arbitary key/value pair used to add searchable metadata to secure tunnel\n\t\t\tresources.</p>"
527            }
528        },
529        "com.amazonaws.iotsecuretunneling#TagKey": {
530            "type": "string",
531            "traits": {
532                "smithy.api#length": {
533                    "min": 1,
534                    "max": 128
535                },
536                "smithy.api#pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
537            }
538        },
539        "com.amazonaws.iotsecuretunneling#TagKeyList": {
540            "type": "list",
541            "member": {
542                "target": "com.amazonaws.iotsecuretunneling#TagKey"
543            },
544            "traits": {
545                "smithy.api#length": {
546                    "min": 0,
547                    "max": 200
548                }
549            }
550        },
551        "com.amazonaws.iotsecuretunneling#TagList": {
552            "type": "list",
553            "member": {
554                "target": "com.amazonaws.iotsecuretunneling#Tag"
555            },
556            "traits": {
557                "smithy.api#length": {
558                    "min": 1,
559                    "max": 200
560                }
561            }
562        },
563        "com.amazonaws.iotsecuretunneling#TagResource": {
564            "type": "operation",
565            "input": {
566                "target": "com.amazonaws.iotsecuretunneling#TagResourceRequest"
567            },
568            "output": {
569                "target": "com.amazonaws.iotsecuretunneling#TagResourceResponse"
570            },
571            "errors": [
572                {
573                    "target": "com.amazonaws.iotsecuretunneling#ResourceNotFoundException"
574                }
575            ],
576            "traits": {
577                "smithy.api#documentation": "<p>A resource tag.</p>",
578                "smithy.api#http": {
579                    "method": "POST",
580                    "uri": "/tags",
581                    "code": 200
582                }
583            }
584        },
585        "com.amazonaws.iotsecuretunneling#TagResourceRequest": {
586            "type": "structure",
587            "members": {
588                "resourceArn": {
589                    "target": "com.amazonaws.iotsecuretunneling#AmazonResourceName",
590                    "traits": {
591                        "smithy.api#documentation": "<p>The ARN of the resource.</p>",
592                        "smithy.api#required": {}
593                    }
594                },
595                "tags": {
596                    "target": "com.amazonaws.iotsecuretunneling#TagList",
597                    "traits": {
598                        "smithy.api#documentation": "<p>The tags for the resource.</p>",
599                        "smithy.api#required": {}
600                    }
601                }
602            }
603        },
604        "com.amazonaws.iotsecuretunneling#TagResourceResponse": {
605            "type": "structure",
606            "members": {}
607        },
608        "com.amazonaws.iotsecuretunneling#TagValue": {
609            "type": "string",
610            "traits": {
611                "smithy.api#length": {
612                    "min": 0,
613                    "max": 256
614                },
615                "smithy.api#pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
616            }
617        },
618        "com.amazonaws.iotsecuretunneling#ThingName": {
619            "type": "string",
620            "traits": {
621                "smithy.api#length": {
622                    "min": 1,
623                    "max": 128
624                },
625                "smithy.api#pattern": "[a-zA-Z0-9:_-]+"
626            }
627        },
628        "com.amazonaws.iotsecuretunneling#TimeoutConfig": {
629            "type": "structure",
630            "members": {
631                "maxLifetimeTimeoutMinutes": {
632                    "target": "com.amazonaws.iotsecuretunneling#TimeoutInMin",
633                    "traits": {
634                        "smithy.api#box": {},
635                        "smithy.api#documentation": "<p>The maximum amount of time (in minutes) a tunnel can remain open. If not specified,\n\t\t\tmaxLifetimeTimeoutMinutes defaults to 720 minutes. Valid values are from 1 minute to 12\n\t\t\thours (720 minutes) </p>"
636                    }
637                }
638            },
639            "traits": {
640                "smithy.api#documentation": "<p>Tunnel timeout configuration.</p>"
641            }
642        },
643        "com.amazonaws.iotsecuretunneling#TimeoutInMin": {
644            "type": "integer",
645            "traits": {
646                "smithy.api#range": {
647                    "min": 1,
648                    "max": 720
649                }
650            }
651        },
652        "com.amazonaws.iotsecuretunneling#Tunnel": {
653            "type": "structure",
654            "members": {
655                "tunnelId": {
656                    "target": "com.amazonaws.iotsecuretunneling#TunnelId",
657                    "traits": {
658                        "smithy.api#documentation": "<p>A unique alpha-numeric ID that identifies a tunnel.</p>"
659                    }
660                },
661                "tunnelArn": {
662                    "target": "com.amazonaws.iotsecuretunneling#TunnelArn",
663                    "traits": {
664                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of a tunnel. The tunnel ARN format is\n\t\t\t\t<code>arn:aws:tunnel:<region>:<account-id>:tunnel/<tunnel-id></code>\n         </p>"
665                    }
666                },
667                "status": {
668                    "target": "com.amazonaws.iotsecuretunneling#TunnelStatus",
669                    "traits": {
670                        "smithy.api#documentation": "<p>The status of a tunnel. Valid values are: Open and Closed.</p>"
671                    }
672                },
673                "sourceConnectionState": {
674                    "target": "com.amazonaws.iotsecuretunneling#ConnectionState",
675                    "traits": {
676                        "smithy.api#documentation": "<p>The connection state of the source application.</p>"
677                    }
678                },
679                "destinationConnectionState": {
680                    "target": "com.amazonaws.iotsecuretunneling#ConnectionState",
681                    "traits": {
682                        "smithy.api#documentation": "<p>The connection state of the destination application.</p>"
683                    }
684                },
685                "description": {
686                    "target": "com.amazonaws.iotsecuretunneling#Description",
687                    "traits": {
688                        "smithy.api#documentation": "<p>A description of the tunnel.</p>"
689                    }
690                },
691                "destinationConfig": {
692                    "target": "com.amazonaws.iotsecuretunneling#DestinationConfig",
693                    "traits": {
694                        "smithy.api#documentation": "<p>The destination configuration that specifies the thing name of the destination\n\t\t\tdevice and a service name that the local proxy uses to connect to the destination\n\t\t\tapplication.</p>"
695                    }
696                },
697                "timeoutConfig": {
698                    "target": "com.amazonaws.iotsecuretunneling#TimeoutConfig",
699                    "traits": {
700                        "smithy.api#documentation": "<p>Timeout configuration for the tunnel.</p>"
701                    }
702                },
703                "tags": {
704                    "target": "com.amazonaws.iotsecuretunneling#TagList",
705                    "traits": {
706                        "smithy.api#documentation": "<p>A list of tag metadata associated with the secure tunnel.</p>"
707                    }
708                },
709                "createdAt": {
710                    "target": "com.amazonaws.iotsecuretunneling#DateType",
711                    "traits": {
712                        "smithy.api#documentation": "<p>The time when the tunnel was created.</p>"
713                    }
714                },
715                "lastUpdatedAt": {
716                    "target": "com.amazonaws.iotsecuretunneling#DateType",
717                    "traits": {
718                        "smithy.api#documentation": "<p>The last time the tunnel was updated.</p>"
719                    }
720                }
721            },
722            "traits": {
723                "smithy.api#documentation": "<p>A connection between a source computer and a destination device.</p>"
724            }
725        },
726        "com.amazonaws.iotsecuretunneling#TunnelArn": {
727            "type": "string",
728            "traits": {
729                "smithy.api#length": {
730                    "min": 1,
731                    "max": 1600
732                }
733            }
734        },
735        "com.amazonaws.iotsecuretunneling#TunnelId": {
736            "type": "string",
737            "traits": {
738                "smithy.api#pattern": "[a-zA-Z0-9_\\-+=:]{1,128}"
739            }
740        },
741        "com.amazonaws.iotsecuretunneling#TunnelStatus": {
742            "type": "string",
743            "traits": {
744                "smithy.api#enum": [
745                    {
746                        "value": "OPEN",
747                        "name": "OPEN"
748                    },
749                    {
750                        "value": "CLOSED",
751                        "name": "CLOSED"
752                    }
753                ]
754            }
755        },
756        "com.amazonaws.iotsecuretunneling#TunnelSummary": {
757            "type": "structure",
758            "members": {
759                "tunnelId": {
760                    "target": "com.amazonaws.iotsecuretunneling#TunnelId",
761                    "traits": {
762                        "smithy.api#documentation": "<p>The unique alpha-numeric identifier for the tunnel.</p>"
763                    }
764                },
765                "tunnelArn": {
766                    "target": "com.amazonaws.iotsecuretunneling#TunnelArn",
767                    "traits": {
768                        "smithy.api#documentation": "<p>The Amazon Resource Name of the tunnel. The tunnel ARN format is\n\t\t\t\t<code>arn:aws:tunnel:<region>:<account-id>:tunnel/<tunnel-id></code>\n         </p>"
769                    }
770                },
771                "status": {
772                    "target": "com.amazonaws.iotsecuretunneling#TunnelStatus",
773                    "traits": {
774                        "smithy.api#documentation": "<p>The status of a tunnel. Valid values are: Open and Closed.</p>"
775                    }
776                },
777                "description": {
778                    "target": "com.amazonaws.iotsecuretunneling#Description",
779                    "traits": {
780                        "smithy.api#documentation": "<p>A description of the tunnel.</p>"
781                    }
782                },
783                "createdAt": {
784                    "target": "com.amazonaws.iotsecuretunneling#DateType",
785                    "traits": {
786                        "smithy.api#documentation": "<p>The time the tunnel was created.</p>"
787                    }
788                },
789                "lastUpdatedAt": {
790                    "target": "com.amazonaws.iotsecuretunneling#DateType",
791                    "traits": {
792                        "smithy.api#documentation": "<p>The time the tunnel was last updated.</p>"
793                    }
794                }
795            },
796            "traits": {
797                "smithy.api#documentation": "<p>Information about the tunnel.</p>"
798            }
799        },
800        "com.amazonaws.iotsecuretunneling#TunnelSummaryList": {
801            "type": "list",
802            "member": {
803                "target": "com.amazonaws.iotsecuretunneling#TunnelSummary"
804            }
805        },
806        "com.amazonaws.iotsecuretunneling#UntagResource": {
807            "type": "operation",
808            "input": {
809                "target": "com.amazonaws.iotsecuretunneling#UntagResourceRequest"
810            },
811            "output": {
812                "target": "com.amazonaws.iotsecuretunneling#UntagResourceResponse"
813            },
814            "errors": [
815                {
816                    "target": "com.amazonaws.iotsecuretunneling#ResourceNotFoundException"
817                }
818            ],
819            "traits": {
820                "smithy.api#documentation": "<p>Removes a tag from a resource.</p>",
821                "smithy.api#http": {
822                    "method": "POST",
823                    "uri": "/untag",
824                    "code": 200
825                }
826            }
827        },
828        "com.amazonaws.iotsecuretunneling#UntagResourceRequest": {
829            "type": "structure",
830            "members": {
831                "resourceArn": {
832                    "target": "com.amazonaws.iotsecuretunneling#AmazonResourceName",
833                    "traits": {
834                        "smithy.api#documentation": "<p>The resource ARN.</p>",
835                        "smithy.api#required": {}
836                    }
837                },
838                "tagKeys": {
839                    "target": "com.amazonaws.iotsecuretunneling#TagKeyList",
840                    "traits": {
841                        "smithy.api#documentation": "<p>The keys of the tags to remove.</p>",
842                        "smithy.api#required": {}
843                    }
844                }
845            }
846        },
847        "com.amazonaws.iotsecuretunneling#UntagResourceResponse": {
848            "type": "structure",
849            "members": {}
850        }
851    }
852}
853