about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/boto3/data
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/boto3/data')
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/cloudformation/2010-05-15/resources-1.json195
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/cloudwatch/2010-08-01/resources-1.json334
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/dynamodb/2012-08-10/resources-1.json150
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/ec2/2014-10-01/resources-1.json2289
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/ec2/2015-03-01/resources-1.json2289
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/ec2/2015-04-15/resources-1.json2289
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/ec2/2015-10-01/resources-1.json2567
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/ec2/2016-04-01/resources-1.json2567
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/ec2/2016-09-15/resources-1.json2567
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/ec2/2016-11-15/resources-1.json2582
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/glacier/2012-06-01/resources-1.json581
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/iam/2010-05-08/resources-1.json1721
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/opsworks/2013-02-18/resources-1.json173
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/s3/2006-03-01/resources-1.json1249
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/sns/2010-03-31/resources-1.json327
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/data/sqs/2012-11-05/resources-1.json232
16 files changed, 22112 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/cloudformation/2010-05-15/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/cloudformation/2010-05-15/resources-1.json
new file mode 100644
index 00000000..fd439375
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/cloudformation/2010-05-15/resources-1.json
@@ -0,0 +1,195 @@
+{
+  "service": {
+    "actions": {
+      "CreateStack": {
+        "request": { "operation": "CreateStack" },
+        "resource": {
+          "type": "Stack",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "StackName" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "Event": {
+        "resource": {
+          "type": "Event",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Stack": {
+        "resource": {
+          "type": "Stack",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "Stacks": {
+        "request": { "operation": "DescribeStacks" },
+        "resource": {
+          "type": "Stack",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "Stacks[].StackName" }
+          ],
+          "path": "Stacks[]"
+        }
+      }
+    }
+  },
+  "resources": {
+    "Event": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "EventId"
+        }
+      ],
+      "shape": "StackEvent"
+    },
+    "Stack": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "StackName"
+        }
+      ],
+      "shape": "Stack",
+      "load": {
+        "request": {
+          "operation": "DescribeStacks",
+          "params": [
+            { "target": "StackName", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "Stacks[0]"
+      },
+      "actions": {
+        "CancelUpdate": {
+          "request": {
+            "operation": "CancelUpdateStack",
+            "params": [
+              { "target": "StackName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteStack",
+            "params": [
+              { "target": "StackName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Update": {
+          "request": {
+            "operation": "UpdateStack",
+            "params": [
+              { "target": "StackName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Resource": {
+          "resource": {
+            "type": "StackResource",
+            "identifiers": [
+              { "target": "StackName", "source": "identifier", "name": "Name" },
+              { "target": "LogicalId", "source": "input" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Events": {
+          "request": {
+            "operation": "DescribeStackEvents",
+            "params": [
+              { "target": "StackName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Event",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "StackEvents[].EventId" }
+            ],
+            "path": "StackEvents[]"
+          }
+        },
+        "ResourceSummaries": {
+          "request": {
+            "operation": "ListStackResources",
+            "params": [
+              { "target": "StackName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "StackResourceSummary",
+            "identifiers": [
+              { "target": "LogicalId", "source": "response", "path": "StackResourceSummaries[].LogicalResourceId" },
+              { "target": "StackName", "source": "requestParameter", "path": "StackName" }
+            ],
+            "path": "StackResourceSummaries[]"
+          }
+        }
+      }
+    },
+    "StackResource": {
+      "identifiers": [
+        { "name": "StackName" },
+        {
+          "name": "LogicalId",
+          "memberName": "LogicalResourceId"
+        }
+      ],
+      "shape": "StackResourceDetail",
+      "load": {
+        "request": {
+          "operation": "DescribeStackResource",
+          "params": [
+            { "target": "LogicalResourceId", "source": "identifier", "name": "LogicalId" },
+            { "target": "StackName", "source": "identifier", "name": "StackName" }
+          ]
+        },
+        "path": "StackResourceDetail"
+      },
+      "has": {
+        "Stack": {
+          "resource": {
+            "type": "Stack",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "StackName" }
+            ]
+          }
+        }
+      }
+    },
+    "StackResourceSummary": {
+      "identifiers": [
+        { "name": "StackName" },
+        {
+          "name": "LogicalId",
+          "memberName": "LogicalResourceId"
+        }
+      ],
+      "shape": "StackResourceSummary",
+      "has": {
+        "Resource": {
+          "resource": {
+            "type": "StackResource",
+            "identifiers": [
+              { "target": "LogicalId", "source": "identifier", "name": "LogicalId" },
+              { "target": "StackName", "source": "identifier", "name": "StackName" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/cloudwatch/2010-08-01/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/cloudwatch/2010-08-01/resources-1.json
new file mode 100644
index 00000000..e0746d04
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/cloudwatch/2010-08-01/resources-1.json
@@ -0,0 +1,334 @@
+{
+    "service": {
+        "has": {
+            "Alarm": {
+                "resource": {
+                    "type": "Alarm",
+                    "identifiers": [
+                        {
+                            "target": "Name",
+                            "source": "input"
+                        }
+                    ]
+                }
+            },
+            "Metric": {
+                "resource": {
+                    "type": "Metric",
+                    "identifiers": [
+                        {
+                            "target": "Namespace",
+                            "source": "input"
+                        },
+                        {
+                            "target": "Name",
+                            "source": "input"
+                        }
+                    ]
+                }
+            }
+        },
+        "hasMany": {
+            "Alarms": {
+                "request": { "operation": "DescribeAlarms" },
+                "resource": {
+                    "type": "Alarm",
+                    "identifiers": [
+                        {
+                            "target": "Name",
+                            "source": "response",
+                            "path": "MetricAlarms[].AlarmName"
+                        }
+                    ],
+                    "path": "MetricAlarms[]"
+                }
+            },
+            "Metrics": {
+                "request": { "operation": "ListMetrics" },
+                "resource": {
+                    "type": "Metric",
+                    "identifiers": [
+                        {
+                            "target": "Namespace",
+                            "source": "response",
+                            "path": "Metrics[].Namespace"
+                        },
+                        {
+                            "target": "Name",
+                            "source": "response",
+                            "path": "Metrics[].MetricName"
+                        }
+                    ],
+                    "path": "Metrics[]"
+                }
+            }
+        }
+    },
+    "resources": {
+        "Alarm": {
+            "identifiers": [
+                {
+                    "name": "Name",
+                    "memberName": "AlarmName"
+                }
+            ],
+            "shape": "MetricAlarm",
+            "load": {
+                "request": {
+                    "operation": "DescribeAlarms",
+                    "params": [
+                        {
+                            "target": "AlarmNames[0]",
+                            "source": "identifier",
+                            "name": "Name"
+                        }
+                    ]
+                },
+                "path": "MetricAlarms[0]"
+            },
+            "actions": {
+                "Delete": {
+                    "request": {
+                        "operation": "DeleteAlarms",
+                        "params": [
+                            {
+                                "target": "AlarmNames[0]",
+                                "source": "identifier",
+                                "name": "Name"
+                            }
+                        ]
+                    }
+                },
+                "DescribeHistory": {
+                    "request": {
+                        "operation": "DescribeAlarmHistory",
+                        "params": [
+                            {
+                                "target": "AlarmName",
+                                "source": "identifier",
+                                "name": "Name"
+                            }
+                        ]
+                    }
+                },
+                "DisableActions": {
+                    "request": {
+                        "operation": "DisableAlarmActions",
+                        "params": [
+                            {
+                                "target": "AlarmNames[0]",
+                                "source": "identifier",
+                                "name": "Name"
+                            }
+                        ]
+                    }
+                },
+                "EnableActions": {
+                    "request": {
+                        "operation": "EnableAlarmActions",
+                        "params": [
+                            {
+                                "target": "AlarmNames[0]",
+                                "source": "identifier",
+                                "name": "Name"
+                            }
+                        ]
+                    }
+                },
+                "SetState": {
+                    "request": {
+                        "operation": "SetAlarmState",
+                        "params": [
+                            {
+                                "target": "AlarmName",
+                                "source": "identifier",
+                                "name": "Name"
+                            }
+                        ]
+                    }
+                }
+            },
+            "batchActions": {
+                "Delete": {
+                    "request": {
+                        "operation": "DeleteAlarms",
+                        "params": [
+                            {
+                                "target": "AlarmNames[]",
+                                "source": "identifier",
+                                "name": "Name"
+                            }
+                        ]
+                    }
+                },
+                "DisableActions": {
+                    "request": {
+                        "operation": "DisableAlarmActions",
+                        "params": [
+                            {
+                                "target": "AlarmNames[]",
+                                "source": "identifier",
+                                "name": "Name"
+                            }
+                        ]
+                    }
+                },
+                "EnableActions": {
+                    "request": {
+                        "operation": "EnableAlarmActions",
+                        "params": [
+                            {
+                                "target": "AlarmNames[]",
+                                "source": "identifier",
+                                "name": "Name"
+                            }
+                        ]
+                    }
+                }
+            },
+            "has": {
+                "Metric": {
+                    "resource": {
+                        "type": "Metric",
+                        "identifiers": [
+                            {
+                                "target": "Namespace",
+                                "source": "data",
+                                "path": "Namespace"
+                            },
+                            {
+                                "target": "Name",
+                                "source": "data",
+                                "path": "MetricName"
+                            }
+                        ]
+                    }
+                }
+            }
+        },
+        "Metric": {
+            "identifiers": [
+                {
+                    "name": "Namespace",
+                    "memberName": "Namespace"
+                },
+                {
+                    "name": "Name",
+                    "memberName": "MetricName"
+                }
+            ],
+            "shape": "Metric",
+            "load": {
+                "request": {
+                    "operation": "ListMetrics",
+                    "params": [
+                        {
+                            "target": "MetricName",
+                            "source": "identifier",
+                            "name": "Name"
+                        },
+                        {
+                            "target": "Namespace",
+                            "source": "identifier",
+                            "name": "Namespace"
+                        }
+                    ]
+                },
+                "path": "Metrics[0]"
+            },
+            "actions": {
+                "GetStatistics": {
+                    "request": {
+                        "operation": "GetMetricStatistics",
+                        "params": [
+                            {
+                                "target": "Namespace",
+                                "source": "identifier",
+                                "name": "Namespace"
+                            },
+                            {
+                                "target": "MetricName",
+                                "source": "identifier",
+                                "name": "Name"
+                            }
+                        ]
+                    }
+                },
+                "PutAlarm": {
+                    "request": {
+                        "operation": "PutMetricAlarm",
+                        "params": [
+                            {
+                                "target": "Namespace",
+                                "source": "identifier",
+                                "name": "Namespace"
+                            },
+                            {
+                                "target": "MetricName",
+                                "source": "identifier",
+                                "name": "Name"
+                            }
+                        ]
+                    },
+                    "resource": {
+                        "type": "Alarm",
+                        "identifiers": [
+                            {
+                                "target": "Name",
+                                "source": "requestParameter",
+                                "path": "AlarmName"
+                            }
+                        ]
+                    }
+                },
+                "PutData": {
+                    "request": {
+                        "operation": "PutMetricData",
+                        "params": [
+                            {
+                                "target": "Namespace",
+                                "source": "identifier",
+                                "name": "Namespace"
+                            },
+                            {
+                                "target": "MetricData[].MetricName",
+                                "source": "identifier",
+                                "name": "Name"
+                            }
+                        ]
+                    }
+                }
+            },
+            "hasMany": {
+                "Alarms": {
+                    "request": {
+                        "operation": "DescribeAlarmsForMetric",
+                        "params": [
+                            {
+                                "target": "Namespace",
+                                "source": "identifier",
+                                "name": "Namespace"
+                            },
+                            {
+                                "target": "MetricName",
+                                "source": "identifier",
+                                "name": "Name"
+                            }
+                        ]
+                    },
+                    "resource": {
+                        "type": "Alarm",
+                        "identifiers": [
+                            {
+                                "target": "Name",
+                                "source": "response",
+                                "path": "MetricAlarms[].AlarmName"
+                            }
+                        ],
+                        "path": "MetricAlarms[]"
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/dynamodb/2012-08-10/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/dynamodb/2012-08-10/resources-1.json
new file mode 100644
index 00000000..b79994e2
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/dynamodb/2012-08-10/resources-1.json
@@ -0,0 +1,150 @@
+{
+  "service": {
+    "actions": {
+      "BatchGetItem": {
+        "request": { "operation": "BatchGetItem" }
+      },
+      "BatchWriteItem": {
+        "request": { "operation": "BatchWriteItem" }
+      },
+      "CreateTable": {
+        "request": { "operation": "CreateTable" },
+        "resource": {
+          "type": "Table",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "TableDescription.TableName" }
+          ],
+          "path": "TableDescription"
+        }
+      }
+    },
+    "has": {
+      "Table": {
+        "resource": {
+          "type": "Table",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "Tables": {
+        "request": { "operation": "ListTables" },
+        "resource": {
+          "type": "Table",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "TableNames[]" }
+          ]
+        }
+      }
+    }
+  },
+  "resources": {
+    "Table": {
+      "identifiers": [
+        { 
+          "name": "Name",
+          "memberName": "TableName"
+        }
+      ],
+      "shape": "TableDescription",
+      "load": {
+        "request": {
+          "operation": "DescribeTable",
+          "params": [
+            { "target": "TableName", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "Table"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTable",
+            "params": [
+              { "target": "TableName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "DeleteItem": {
+          "request": {
+            "operation": "DeleteItem",
+            "params": [
+              { "target": "TableName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "GetItem": {
+          "request": {
+            "operation": "GetItem",
+            "params": [
+              { "target": "TableName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "PutItem": {
+          "request": {
+            "operation": "PutItem",
+            "params": [
+              { "target": "TableName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Query": {
+          "request": {
+            "operation": "Query",
+            "params": [
+              { "target": "TableName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Scan": {
+          "request": {
+            "operation": "Scan",
+            "params": [
+              { "target": "TableName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Update": {
+          "request": {
+            "operation": "UpdateTable",
+            "params": [
+              { "target": "TableName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Table",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "Name" }
+            ],
+            "path": "TableDescription"
+          }
+        },
+        "UpdateItem": {
+          "request": {
+            "operation": "UpdateItem",
+            "params": [
+              { "target": "TableName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "waiters":{
+        "Exists": {
+          "waiterName": "TableExists",
+          "params": [
+            { "target": "TableName", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "NotExists": {
+          "waiterName": "TableNotExists",
+          "params": [
+            { "target": "TableName", "source": "identifier", "name": "Name" }
+          ]
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/ec2/2014-10-01/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2014-10-01/resources-1.json
new file mode 100644
index 00000000..8ccf160a
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2014-10-01/resources-1.json
@@ -0,0 +1,2289 @@
+{
+  "service": {
+    "actions": {
+      "CreateDhcpOptions": {
+        "request": { "operation": "CreateDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions"
+        }
+      },
+      "CreateInstances": {
+        "request": { "operation": "RunInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+          ],
+          "path": "Instances[]"
+        }
+      },
+      "CreateInternetGateway": {
+        "request": { "operation": "CreateInternetGateway" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
+          ],
+          "path": "InternetGateway"
+        }
+      },
+      "CreateKeyPair": {
+        "request": { "operation": "CreateKeyPair" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ]
+        }
+      },
+      "CreateNetworkAcl": {
+        "request": { "operation": "CreateNetworkAcl" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+          ],
+          "path": "NetworkAcl"
+        }
+      },
+      "CreateNetworkInterface": {
+        "request": { "operation": "CreateNetworkInterface" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterface"
+        }
+      },
+      "CreatePlacementGroup": {
+        "request": { "operation": "CreatePlacementGroup" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "GroupName" }
+          ]
+        }
+      },
+      "CreateRouteTable": {
+        "request": { "operation": "CreateRouteTable" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+          ],
+          "path": "RouteTable"
+        }
+      },
+      "CreateSecurityGroup": {
+        "request": { "operation": "CreateSecurityGroup" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "GroupId" }
+          ]
+        }
+      },
+      "CreateSnapshot": {
+        "request": { "operation": "CreateSnapshot" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SnapshotId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateSubnet": {
+        "request": { "operation": "CreateSubnet" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+          ],
+          "path": "Subnet"
+        }
+      },
+      "CreateTags": {
+        "request": { "operation": "CreateTags" },
+        "resource": {
+          "type": "Tag",
+          "identifiers": [
+            { "target": "ResourceId", "source": "requestParameter", "path": "Resources[]" },
+            { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+            { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+          ]
+        }
+      },
+      "CreateVolume": {
+        "request": { "operation": "CreateVolume" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VolumeId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateVpc": {
+        "request": { "operation": "CreateVpc" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
+          ],
+          "path": "Vpc"
+        }
+      },
+      "CreateVpcPeeringConnection": {
+        "request": { "operation": "CreateVpcPeeringConnection" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnection"
+        }
+      },
+      "DisassociateRouteTable": {
+        "request": { "operation": "DisassociateRouteTable" }
+      },
+      "ImportKeyPair": {
+        "request": { "operation": "ImportKeyPair" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ]
+        }
+      },
+      "RegisterImage": {
+        "request": { "operation": "RegisterImage" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "ImageId" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "DhcpOptions": {
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Image": {
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Instance": {
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "InternetGateway": {
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "KeyPair": {
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "NetworkAcl": {
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "NetworkInterface": {
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "PlacementGroup": {
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "RouteTable": {
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "RouteTableAssociation": {
+        "resource": {
+          "type": "RouteTableAssociation",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "SecurityGroup": {
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Snapshot": {
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Subnet": {
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Volume": {
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Vpc": {
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "VpcPeeringConnection": {
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "DhcpOptionsSets": {
+        "request": { "operation": "DescribeDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions[]"
+        }
+      },
+      "Images": {
+        "request": { "operation": "DescribeImages" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Images[].ImageId" }
+          ],
+          "path": "Images[]"
+        }
+      },
+      "Instances": {
+        "request": { "operation": "DescribeInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+          ],
+          "path": "Reservations[].Instances[]"
+        }
+      },
+      "InternetGateways": {
+        "request": { "operation": "DescribeInternetGateways" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+          ],
+          "path": "InternetGateways[]"
+        }
+      },
+      "KeyPairs": {
+        "request": { "operation": "DescribeKeyPairs" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
+          ],
+          "path": "KeyPairs[]"
+        }
+      },
+      "NetworkAcls": {
+        "request": { "operation": "DescribeNetworkAcls" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+          ],
+          "path": "NetworkAcls[]"
+        }
+      },
+      "NetworkInterfaces": {
+        "request": { "operation": "DescribeNetworkInterfaces" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterfaces[]"
+        }
+      },
+      "PlacementGroups": {
+        "request": { "operation": "DescribePlacementGroups" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
+          ],
+          "path": "PlacementGroups[]"
+        }
+      },
+      "RouteTables": {
+        "request": { "operation": "DescribeRouteTables" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+          ],
+          "path": "RouteTables[]"
+        }
+      },
+      "SecurityGroups": {
+        "request": { "operation": "DescribeSecurityGroups" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+          ],
+          "path": "SecurityGroups[]"
+        }
+      },
+      "Snapshots": {
+        "request": { "operation": "DescribeSnapshots" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "Subnets": {
+        "request": { "operation": "DescribeSubnets" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+          ],
+          "path": "Subnets[]"
+        }
+      },
+      "Volumes": {
+        "request": { "operation": "DescribeVolumes" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+          ],
+          "path": "Volumes[]"
+        }
+      },
+      "VpcPeeringConnections": {
+        "request": { "operation": "DescribeVpcPeeringConnections" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnections[]"
+        }
+      },
+      "Vpcs": {
+        "request": { "operation": "DescribeVpcs" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
+          ],
+          "path": "Vpcs[]"
+        }
+      }
+    }
+  },
+  "resources": {
+    "DhcpOptions": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "DhcpOptionsId"
+        }
+      ],
+      "shape": "DhcpOptions",
+      "load": {
+        "request": {
+          "operation": "DescribeDhcpOptions",
+          "params": [
+            { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "DhcpOptions[0]"
+      },
+      "actions": {
+        "AssociateWithVpc": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Image": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "ImageId"
+        }
+      ],
+      "shape": "Image",
+      "load": {
+        "request": {
+          "operation": "DescribeImages",
+          "params": [
+            { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Images[0]"
+      },
+      "actions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Deregister": {
+          "request": {
+            "operation": "DeregisterImage",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Instance": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InstanceId"
+        }
+      ],
+      "shape": "Instance",
+      "load": {
+        "request": {
+          "operation": "DescribeInstances",
+          "params": [
+            { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Reservations[0].Instances[0]"
+      },
+      "actions": {
+        "AttachClassicLinkVpc": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachVolume": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ConsoleOutput": {
+          "request": {
+            "operation": "GetConsoleOutput",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateImage": {
+          "request": {
+            "operation": "CreateImage",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "ImageId" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkVpc": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachVolume": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "PasswordData": {
+          "request": {
+            "operation": "GetPasswordData",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReportStatus": {
+          "request": {
+            "operation": "ReportInstanceStatus",
+            "params": [
+              { "target": "Instances[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetKernel": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "kernel" }
+            ]
+          }
+        },
+        "ResetRamdisk": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "ramdisk" }
+            ]
+          }
+        },
+        "ResetSourceDestCheck": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "InstanceExists",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Running": {
+          "waiterName": "InstanceRunning",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Stopped": {
+          "waiterName": "InstanceStopped",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Terminated": {
+          "waiterName": "InstanceTerminated",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        }
+      },
+      "has": {
+        "Image": {
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "ImageId" }
+            ]
+          }
+        },
+        "KeyPair": {
+          "resource": {
+            "type": "KeyPair",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "KeyName" }
+            ]
+          }
+        },
+        "PlacementGroup": {
+          "resource": {
+            "type": "PlacementGroup",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "Placement.GroupName" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Volumes": {
+          "request": {
+            "operation": "DescribeVolumes",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+            ],
+            "path": "Volumes[]"
+          }
+        }
+      }
+    },
+    "InternetGateway": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InternetGatewayId"
+        }
+      ],
+      "shape": "InternetGateway",
+      "load": {
+        "request": {
+          "operation": "DescribeInternetGateways",
+          "params": [
+            { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "InternetGateways[0]"
+      },
+      "actions": {
+        "AttachToVpc": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromVpc": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "KeyPair": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "KeyName"
+        }
+      ],
+      "shape": "KeyPairInfo",
+      "load": {
+        "request": {
+          "operation": "DescribeKeyPairs",
+          "params": [
+            { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "KeyPairs[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteKeyPair",
+            "params": [
+              { "target": "KeyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkAcl": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkAclId"
+        }
+      ],
+      "shape": "NetworkAcl",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkAcls",
+          "params": [
+            { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkAcls[0]"
+      },
+      "actions": {
+        "CreateEntry": {
+          "request": {
+            "operation": "CreateNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkAcl",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DeleteEntry": {
+          "request": {
+            "operation": "DeleteNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceAssociation": {
+          "request": {
+            "operation": "ReplaceNetworkAclAssociation",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceEntry": {
+          "request": {
+            "operation": "ReplaceNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkInterface": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkInterfaceId"
+        }
+      ],
+      "shape": "NetworkInterface",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkInterfaces",
+          "params": [
+            { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkInterfaces[0]"
+      },
+      "actions": {
+        "AssignPrivateIpAddresses": {
+          "request": {
+            "operation": "AssignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Attach": {
+          "request": {
+            "operation": "AttachNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Detach": {
+          "request": {
+            "operation": "DetachNetworkInterface",
+            "params": [
+              { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "UnassignPrivateIpAddresses": {
+          "request": {
+            "operation": "UnassignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "PlacementGroup": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "GroupName"
+        }
+      ],
+      "shape": "PlacementGroup",
+      "load": {
+        "request": {
+          "operation": "DescribePlacementGroups",
+          "params": [
+            { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "PlacementGroups[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeletePlacementGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        }
+      }
+    },
+    "RouteTable": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableId"
+        }
+      ],
+      "shape": "RouteTable",
+      "load": {
+        "request": {
+          "operation": "DescribeRouteTables",
+          "params": [
+            { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "RouteTables[0]"
+      },
+      "actions": {
+        "AssociateWithSubnet": {
+          "request": {
+            "operation": "AssociateRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "AssociationId" }
+            ]
+          }
+        },
+        "CreateRoute": {
+          "request": {
+            "operation": "CreateRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Associations": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[0].Associations[].RouteTableAssociationId" }
+            ],
+            "path": "RouteTables[0].Associations[]"
+          }
+        }
+      }
+    },
+    "RouteTableAssociation": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableAssociationId"
+        }
+      ],
+      "shape": "RouteTableAssociation",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DisassociateRouteTable",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceSubnet": {
+          "request": {
+            "operation": "ReplaceRouteTableAssociation",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NewAssociationId" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "RouteTable": {
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RouteTableId" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        }
+      }
+    },
+    "SecurityGroup": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "GroupId"
+        }
+      ],
+      "shape": "SecurityGroup",
+      "load": {
+        "request": {
+          "operation": "DescribeSecurityGroups",
+          "params": [
+            { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "SecurityGroups[0]"
+      },
+      "actions": {
+        "AuthorizeEgress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AuthorizeIngress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSecurityGroup",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeEgress": {
+          "request": {
+            "operation": "RevokeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeIngress": {
+          "request": {
+            "operation": "RevokeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Snapshot": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SnapshotId"
+        }
+      ],
+      "shape": "Snapshot",
+      "load": {
+        "request": {
+          "operation": "DescribeSnapshots",
+          "params": [
+            { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Snapshots[0]"
+      },
+      "actions": {
+        "Copy": {
+          "request": {
+            "operation": "CopySnapshot",
+            "params": [
+              { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSnapshot",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifySnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Completed": {
+          "waiterName": "SnapshotCompleted",
+          "params": [
+            { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "has": {
+        "Volume": {
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VolumeId" }
+            ]
+          }
+        }
+      }
+    },
+    "Subnet": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SubnetId"
+        }
+      ],
+      "shape": "Subnet",
+      "load": {
+        "request": {
+          "operation": "DescribeSubnets",
+          "params": [
+            { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Subnets[0]"
+      },
+      "actions": {
+        "CreateInstances": {
+          "request": {
+            "operation": "RunInstances",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+            ],
+            "path": "Instances[]"
+          }
+        },
+        "CreateNetworkInterface": {
+          "request": {
+            "operation": "CreateNetworkInterface",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterface"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSubnet",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        }
+      }
+    },
+    "Tag": {
+      "identifiers": [
+        {
+          "name": "ResourceId",
+          "memberName": "ResourceId"
+        },
+        {
+          "name": "Key",
+          "memberName": "Key"
+        },
+        {
+          "name": "Value",
+          "memberName": "Value"
+        }
+      ],
+      "shape": "TagDescription",
+      "load": {
+        "request": {
+          "operation": "DescribeTags",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "key" },
+            { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
+            { "target": "Filters[1].Name", "source": "string", "value": "value" },
+            { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
+          ]
+        },
+        "path": "Tags[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      }
+    },
+    "Volume": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VolumeId"
+        }
+      ],
+      "shape": "Volume",
+      "load": {
+        "request": {
+          "operation": "DescribeVolumes",
+          "params": [
+            { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Volumes[0]"
+      },
+      "actions": {
+        "AttachToInstance": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateSnapshot": {
+          "request": {
+            "operation": "CreateSnapshot",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SnapshotId" }
+            ],
+            "path": "@"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeStatus": {
+          "request": {
+            "operation": "DescribeVolumeStatus",
+            "params": [
+              { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromInstance": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableIo": {
+          "request": {
+            "operation": "EnableVolumeIO",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Snapshots": {
+          "request": {
+            "operation": "DescribeSnapshots",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+            ],
+            "path": "Snapshots[]"
+          }
+        }
+      }
+    },
+    "Vpc": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcId"
+        }
+      ],
+      "shape": "Vpc",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcs",
+          "params": [
+            { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Vpcs[0]"
+      },
+      "actions": {
+        "AssociateDhcpOptions": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachClassicLinkInstance": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachInternetGateway": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateNetworkAcl": {
+          "request": {
+            "operation": "CreateNetworkAcl",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+            ],
+            "path": "NetworkAcl"
+          }
+        },
+        "CreateRouteTable": {
+          "request": {
+            "operation": "CreateRouteTable",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+            ],
+            "path": "RouteTable"
+          }
+        },
+        "CreateSecurityGroup": {
+          "request": {
+            "operation": "CreateSecurityGroup",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "GroupId" }
+            ]
+          }
+        },
+        "CreateSubnet": {
+          "request": {
+            "operation": "CreateSubnet",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+            ],
+            "path": "Subnet"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkInstance": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachInternetGateway": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DisableClassicLink": {
+          "request": {
+            "operation": "DisableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableClassicLink": {
+          "request": {
+            "operation": "EnableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RequestVpcPeeringConnection": {
+          "request": {
+            "operation": "CreateVpcPeeringConnection",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnection"
+          }
+        }
+      },
+      "has": {
+        "DhcpOptions": {
+          "resource": {
+            "type": "DhcpOptions",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "AcceptedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "InternetGateways": {
+          "request": {
+            "operation": "DescribeInternetGateways",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "InternetGateway",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+            ],
+            "path": "InternetGateways[]"
+          }
+        },
+        "NetworkAcls": {
+          "request": {
+            "operation": "DescribeNetworkAcls",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+            ],
+            "path": "NetworkAcls[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        },
+        "RequestedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "RouteTables": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+            ],
+            "path": "RouteTables[]"
+          }
+        },
+        "SecurityGroups": {
+          "request": {
+            "operation": "DescribeSecurityGroups",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+            ],
+            "path": "SecurityGroups[]"
+          }
+        },
+        "Subnets": {
+          "request": {
+            "operation": "DescribeSubnets",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+            ],
+            "path": "Subnets[]"
+          }
+        }
+      }
+    },
+    "VpcPeeringConnection": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcPeeringConnectionId"
+        }
+      ],
+      "shape": "VpcPeeringConnection",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcPeeringConnections",
+          "params": [
+            { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "VpcPeeringConnections[0]"
+      },
+      "actions": {
+        "Accept": {
+          "request": {
+            "operation": "AcceptVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reject": {
+          "request": {
+            "operation": "RejectVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "AccepterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
+            ]
+          }
+        },
+        "RequesterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/ec2/2015-03-01/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2015-03-01/resources-1.json
new file mode 100644
index 00000000..8ccf160a
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2015-03-01/resources-1.json
@@ -0,0 +1,2289 @@
+{
+  "service": {
+    "actions": {
+      "CreateDhcpOptions": {
+        "request": { "operation": "CreateDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions"
+        }
+      },
+      "CreateInstances": {
+        "request": { "operation": "RunInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+          ],
+          "path": "Instances[]"
+        }
+      },
+      "CreateInternetGateway": {
+        "request": { "operation": "CreateInternetGateway" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
+          ],
+          "path": "InternetGateway"
+        }
+      },
+      "CreateKeyPair": {
+        "request": { "operation": "CreateKeyPair" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ]
+        }
+      },
+      "CreateNetworkAcl": {
+        "request": { "operation": "CreateNetworkAcl" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+          ],
+          "path": "NetworkAcl"
+        }
+      },
+      "CreateNetworkInterface": {
+        "request": { "operation": "CreateNetworkInterface" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterface"
+        }
+      },
+      "CreatePlacementGroup": {
+        "request": { "operation": "CreatePlacementGroup" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "GroupName" }
+          ]
+        }
+      },
+      "CreateRouteTable": {
+        "request": { "operation": "CreateRouteTable" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+          ],
+          "path": "RouteTable"
+        }
+      },
+      "CreateSecurityGroup": {
+        "request": { "operation": "CreateSecurityGroup" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "GroupId" }
+          ]
+        }
+      },
+      "CreateSnapshot": {
+        "request": { "operation": "CreateSnapshot" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SnapshotId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateSubnet": {
+        "request": { "operation": "CreateSubnet" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+          ],
+          "path": "Subnet"
+        }
+      },
+      "CreateTags": {
+        "request": { "operation": "CreateTags" },
+        "resource": {
+          "type": "Tag",
+          "identifiers": [
+            { "target": "ResourceId", "source": "requestParameter", "path": "Resources[]" },
+            { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+            { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+          ]
+        }
+      },
+      "CreateVolume": {
+        "request": { "operation": "CreateVolume" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VolumeId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateVpc": {
+        "request": { "operation": "CreateVpc" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
+          ],
+          "path": "Vpc"
+        }
+      },
+      "CreateVpcPeeringConnection": {
+        "request": { "operation": "CreateVpcPeeringConnection" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnection"
+        }
+      },
+      "DisassociateRouteTable": {
+        "request": { "operation": "DisassociateRouteTable" }
+      },
+      "ImportKeyPair": {
+        "request": { "operation": "ImportKeyPair" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ]
+        }
+      },
+      "RegisterImage": {
+        "request": { "operation": "RegisterImage" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "ImageId" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "DhcpOptions": {
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Image": {
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Instance": {
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "InternetGateway": {
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "KeyPair": {
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "NetworkAcl": {
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "NetworkInterface": {
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "PlacementGroup": {
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "RouteTable": {
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "RouteTableAssociation": {
+        "resource": {
+          "type": "RouteTableAssociation",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "SecurityGroup": {
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Snapshot": {
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Subnet": {
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Volume": {
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Vpc": {
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "VpcPeeringConnection": {
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "DhcpOptionsSets": {
+        "request": { "operation": "DescribeDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions[]"
+        }
+      },
+      "Images": {
+        "request": { "operation": "DescribeImages" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Images[].ImageId" }
+          ],
+          "path": "Images[]"
+        }
+      },
+      "Instances": {
+        "request": { "operation": "DescribeInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+          ],
+          "path": "Reservations[].Instances[]"
+        }
+      },
+      "InternetGateways": {
+        "request": { "operation": "DescribeInternetGateways" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+          ],
+          "path": "InternetGateways[]"
+        }
+      },
+      "KeyPairs": {
+        "request": { "operation": "DescribeKeyPairs" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
+          ],
+          "path": "KeyPairs[]"
+        }
+      },
+      "NetworkAcls": {
+        "request": { "operation": "DescribeNetworkAcls" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+          ],
+          "path": "NetworkAcls[]"
+        }
+      },
+      "NetworkInterfaces": {
+        "request": { "operation": "DescribeNetworkInterfaces" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterfaces[]"
+        }
+      },
+      "PlacementGroups": {
+        "request": { "operation": "DescribePlacementGroups" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
+          ],
+          "path": "PlacementGroups[]"
+        }
+      },
+      "RouteTables": {
+        "request": { "operation": "DescribeRouteTables" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+          ],
+          "path": "RouteTables[]"
+        }
+      },
+      "SecurityGroups": {
+        "request": { "operation": "DescribeSecurityGroups" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+          ],
+          "path": "SecurityGroups[]"
+        }
+      },
+      "Snapshots": {
+        "request": { "operation": "DescribeSnapshots" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "Subnets": {
+        "request": { "operation": "DescribeSubnets" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+          ],
+          "path": "Subnets[]"
+        }
+      },
+      "Volumes": {
+        "request": { "operation": "DescribeVolumes" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+          ],
+          "path": "Volumes[]"
+        }
+      },
+      "VpcPeeringConnections": {
+        "request": { "operation": "DescribeVpcPeeringConnections" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnections[]"
+        }
+      },
+      "Vpcs": {
+        "request": { "operation": "DescribeVpcs" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
+          ],
+          "path": "Vpcs[]"
+        }
+      }
+    }
+  },
+  "resources": {
+    "DhcpOptions": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "DhcpOptionsId"
+        }
+      ],
+      "shape": "DhcpOptions",
+      "load": {
+        "request": {
+          "operation": "DescribeDhcpOptions",
+          "params": [
+            { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "DhcpOptions[0]"
+      },
+      "actions": {
+        "AssociateWithVpc": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Image": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "ImageId"
+        }
+      ],
+      "shape": "Image",
+      "load": {
+        "request": {
+          "operation": "DescribeImages",
+          "params": [
+            { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Images[0]"
+      },
+      "actions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Deregister": {
+          "request": {
+            "operation": "DeregisterImage",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Instance": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InstanceId"
+        }
+      ],
+      "shape": "Instance",
+      "load": {
+        "request": {
+          "operation": "DescribeInstances",
+          "params": [
+            { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Reservations[0].Instances[0]"
+      },
+      "actions": {
+        "AttachClassicLinkVpc": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachVolume": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ConsoleOutput": {
+          "request": {
+            "operation": "GetConsoleOutput",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateImage": {
+          "request": {
+            "operation": "CreateImage",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "ImageId" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkVpc": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachVolume": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "PasswordData": {
+          "request": {
+            "operation": "GetPasswordData",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReportStatus": {
+          "request": {
+            "operation": "ReportInstanceStatus",
+            "params": [
+              { "target": "Instances[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetKernel": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "kernel" }
+            ]
+          }
+        },
+        "ResetRamdisk": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "ramdisk" }
+            ]
+          }
+        },
+        "ResetSourceDestCheck": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "InstanceExists",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Running": {
+          "waiterName": "InstanceRunning",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Stopped": {
+          "waiterName": "InstanceStopped",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Terminated": {
+          "waiterName": "InstanceTerminated",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        }
+      },
+      "has": {
+        "Image": {
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "ImageId" }
+            ]
+          }
+        },
+        "KeyPair": {
+          "resource": {
+            "type": "KeyPair",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "KeyName" }
+            ]
+          }
+        },
+        "PlacementGroup": {
+          "resource": {
+            "type": "PlacementGroup",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "Placement.GroupName" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Volumes": {
+          "request": {
+            "operation": "DescribeVolumes",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+            ],
+            "path": "Volumes[]"
+          }
+        }
+      }
+    },
+    "InternetGateway": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InternetGatewayId"
+        }
+      ],
+      "shape": "InternetGateway",
+      "load": {
+        "request": {
+          "operation": "DescribeInternetGateways",
+          "params": [
+            { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "InternetGateways[0]"
+      },
+      "actions": {
+        "AttachToVpc": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromVpc": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "KeyPair": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "KeyName"
+        }
+      ],
+      "shape": "KeyPairInfo",
+      "load": {
+        "request": {
+          "operation": "DescribeKeyPairs",
+          "params": [
+            { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "KeyPairs[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteKeyPair",
+            "params": [
+              { "target": "KeyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkAcl": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkAclId"
+        }
+      ],
+      "shape": "NetworkAcl",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkAcls",
+          "params": [
+            { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkAcls[0]"
+      },
+      "actions": {
+        "CreateEntry": {
+          "request": {
+            "operation": "CreateNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkAcl",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DeleteEntry": {
+          "request": {
+            "operation": "DeleteNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceAssociation": {
+          "request": {
+            "operation": "ReplaceNetworkAclAssociation",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceEntry": {
+          "request": {
+            "operation": "ReplaceNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkInterface": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkInterfaceId"
+        }
+      ],
+      "shape": "NetworkInterface",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkInterfaces",
+          "params": [
+            { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkInterfaces[0]"
+      },
+      "actions": {
+        "AssignPrivateIpAddresses": {
+          "request": {
+            "operation": "AssignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Attach": {
+          "request": {
+            "operation": "AttachNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Detach": {
+          "request": {
+            "operation": "DetachNetworkInterface",
+            "params": [
+              { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "UnassignPrivateIpAddresses": {
+          "request": {
+            "operation": "UnassignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "PlacementGroup": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "GroupName"
+        }
+      ],
+      "shape": "PlacementGroup",
+      "load": {
+        "request": {
+          "operation": "DescribePlacementGroups",
+          "params": [
+            { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "PlacementGroups[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeletePlacementGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        }
+      }
+    },
+    "RouteTable": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableId"
+        }
+      ],
+      "shape": "RouteTable",
+      "load": {
+        "request": {
+          "operation": "DescribeRouteTables",
+          "params": [
+            { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "RouteTables[0]"
+      },
+      "actions": {
+        "AssociateWithSubnet": {
+          "request": {
+            "operation": "AssociateRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "AssociationId" }
+            ]
+          }
+        },
+        "CreateRoute": {
+          "request": {
+            "operation": "CreateRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Associations": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[0].Associations[].RouteTableAssociationId" }
+            ],
+            "path": "RouteTables[0].Associations[]"
+          }
+        }
+      }
+    },
+    "RouteTableAssociation": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableAssociationId"
+        }
+      ],
+      "shape": "RouteTableAssociation",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DisassociateRouteTable",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceSubnet": {
+          "request": {
+            "operation": "ReplaceRouteTableAssociation",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NewAssociationId" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "RouteTable": {
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RouteTableId" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        }
+      }
+    },
+    "SecurityGroup": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "GroupId"
+        }
+      ],
+      "shape": "SecurityGroup",
+      "load": {
+        "request": {
+          "operation": "DescribeSecurityGroups",
+          "params": [
+            { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "SecurityGroups[0]"
+      },
+      "actions": {
+        "AuthorizeEgress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AuthorizeIngress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSecurityGroup",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeEgress": {
+          "request": {
+            "operation": "RevokeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeIngress": {
+          "request": {
+            "operation": "RevokeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Snapshot": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SnapshotId"
+        }
+      ],
+      "shape": "Snapshot",
+      "load": {
+        "request": {
+          "operation": "DescribeSnapshots",
+          "params": [
+            { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Snapshots[0]"
+      },
+      "actions": {
+        "Copy": {
+          "request": {
+            "operation": "CopySnapshot",
+            "params": [
+              { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSnapshot",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifySnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Completed": {
+          "waiterName": "SnapshotCompleted",
+          "params": [
+            { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "has": {
+        "Volume": {
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VolumeId" }
+            ]
+          }
+        }
+      }
+    },
+    "Subnet": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SubnetId"
+        }
+      ],
+      "shape": "Subnet",
+      "load": {
+        "request": {
+          "operation": "DescribeSubnets",
+          "params": [
+            { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Subnets[0]"
+      },
+      "actions": {
+        "CreateInstances": {
+          "request": {
+            "operation": "RunInstances",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+            ],
+            "path": "Instances[]"
+          }
+        },
+        "CreateNetworkInterface": {
+          "request": {
+            "operation": "CreateNetworkInterface",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterface"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSubnet",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        }
+      }
+    },
+    "Tag": {
+      "identifiers": [
+        {
+          "name": "ResourceId",
+          "memberName": "ResourceId"
+        },
+        {
+          "name": "Key",
+          "memberName": "Key"
+        },
+        {
+          "name": "Value",
+          "memberName": "Value"
+        }
+      ],
+      "shape": "TagDescription",
+      "load": {
+        "request": {
+          "operation": "DescribeTags",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "key" },
+            { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
+            { "target": "Filters[1].Name", "source": "string", "value": "value" },
+            { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
+          ]
+        },
+        "path": "Tags[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      }
+    },
+    "Volume": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VolumeId"
+        }
+      ],
+      "shape": "Volume",
+      "load": {
+        "request": {
+          "operation": "DescribeVolumes",
+          "params": [
+            { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Volumes[0]"
+      },
+      "actions": {
+        "AttachToInstance": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateSnapshot": {
+          "request": {
+            "operation": "CreateSnapshot",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SnapshotId" }
+            ],
+            "path": "@"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeStatus": {
+          "request": {
+            "operation": "DescribeVolumeStatus",
+            "params": [
+              { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromInstance": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableIo": {
+          "request": {
+            "operation": "EnableVolumeIO",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Snapshots": {
+          "request": {
+            "operation": "DescribeSnapshots",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+            ],
+            "path": "Snapshots[]"
+          }
+        }
+      }
+    },
+    "Vpc": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcId"
+        }
+      ],
+      "shape": "Vpc",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcs",
+          "params": [
+            { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Vpcs[0]"
+      },
+      "actions": {
+        "AssociateDhcpOptions": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachClassicLinkInstance": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachInternetGateway": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateNetworkAcl": {
+          "request": {
+            "operation": "CreateNetworkAcl",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+            ],
+            "path": "NetworkAcl"
+          }
+        },
+        "CreateRouteTable": {
+          "request": {
+            "operation": "CreateRouteTable",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+            ],
+            "path": "RouteTable"
+          }
+        },
+        "CreateSecurityGroup": {
+          "request": {
+            "operation": "CreateSecurityGroup",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "GroupId" }
+            ]
+          }
+        },
+        "CreateSubnet": {
+          "request": {
+            "operation": "CreateSubnet",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+            ],
+            "path": "Subnet"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkInstance": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachInternetGateway": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DisableClassicLink": {
+          "request": {
+            "operation": "DisableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableClassicLink": {
+          "request": {
+            "operation": "EnableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RequestVpcPeeringConnection": {
+          "request": {
+            "operation": "CreateVpcPeeringConnection",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnection"
+          }
+        }
+      },
+      "has": {
+        "DhcpOptions": {
+          "resource": {
+            "type": "DhcpOptions",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "AcceptedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "InternetGateways": {
+          "request": {
+            "operation": "DescribeInternetGateways",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "InternetGateway",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+            ],
+            "path": "InternetGateways[]"
+          }
+        },
+        "NetworkAcls": {
+          "request": {
+            "operation": "DescribeNetworkAcls",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+            ],
+            "path": "NetworkAcls[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        },
+        "RequestedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "RouteTables": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+            ],
+            "path": "RouteTables[]"
+          }
+        },
+        "SecurityGroups": {
+          "request": {
+            "operation": "DescribeSecurityGroups",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+            ],
+            "path": "SecurityGroups[]"
+          }
+        },
+        "Subnets": {
+          "request": {
+            "operation": "DescribeSubnets",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+            ],
+            "path": "Subnets[]"
+          }
+        }
+      }
+    },
+    "VpcPeeringConnection": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcPeeringConnectionId"
+        }
+      ],
+      "shape": "VpcPeeringConnection",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcPeeringConnections",
+          "params": [
+            { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "VpcPeeringConnections[0]"
+      },
+      "actions": {
+        "Accept": {
+          "request": {
+            "operation": "AcceptVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reject": {
+          "request": {
+            "operation": "RejectVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "AccepterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
+            ]
+          }
+        },
+        "RequesterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/ec2/2015-04-15/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2015-04-15/resources-1.json
new file mode 100644
index 00000000..8ccf160a
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2015-04-15/resources-1.json
@@ -0,0 +1,2289 @@
+{
+  "service": {
+    "actions": {
+      "CreateDhcpOptions": {
+        "request": { "operation": "CreateDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions"
+        }
+      },
+      "CreateInstances": {
+        "request": { "operation": "RunInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+          ],
+          "path": "Instances[]"
+        }
+      },
+      "CreateInternetGateway": {
+        "request": { "operation": "CreateInternetGateway" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
+          ],
+          "path": "InternetGateway"
+        }
+      },
+      "CreateKeyPair": {
+        "request": { "operation": "CreateKeyPair" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ]
+        }
+      },
+      "CreateNetworkAcl": {
+        "request": { "operation": "CreateNetworkAcl" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+          ],
+          "path": "NetworkAcl"
+        }
+      },
+      "CreateNetworkInterface": {
+        "request": { "operation": "CreateNetworkInterface" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterface"
+        }
+      },
+      "CreatePlacementGroup": {
+        "request": { "operation": "CreatePlacementGroup" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "GroupName" }
+          ]
+        }
+      },
+      "CreateRouteTable": {
+        "request": { "operation": "CreateRouteTable" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+          ],
+          "path": "RouteTable"
+        }
+      },
+      "CreateSecurityGroup": {
+        "request": { "operation": "CreateSecurityGroup" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "GroupId" }
+          ]
+        }
+      },
+      "CreateSnapshot": {
+        "request": { "operation": "CreateSnapshot" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SnapshotId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateSubnet": {
+        "request": { "operation": "CreateSubnet" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+          ],
+          "path": "Subnet"
+        }
+      },
+      "CreateTags": {
+        "request": { "operation": "CreateTags" },
+        "resource": {
+          "type": "Tag",
+          "identifiers": [
+            { "target": "ResourceId", "source": "requestParameter", "path": "Resources[]" },
+            { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+            { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+          ]
+        }
+      },
+      "CreateVolume": {
+        "request": { "operation": "CreateVolume" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VolumeId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateVpc": {
+        "request": { "operation": "CreateVpc" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
+          ],
+          "path": "Vpc"
+        }
+      },
+      "CreateVpcPeeringConnection": {
+        "request": { "operation": "CreateVpcPeeringConnection" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnection"
+        }
+      },
+      "DisassociateRouteTable": {
+        "request": { "operation": "DisassociateRouteTable" }
+      },
+      "ImportKeyPair": {
+        "request": { "operation": "ImportKeyPair" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ]
+        }
+      },
+      "RegisterImage": {
+        "request": { "operation": "RegisterImage" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "ImageId" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "DhcpOptions": {
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Image": {
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Instance": {
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "InternetGateway": {
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "KeyPair": {
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "NetworkAcl": {
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "NetworkInterface": {
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "PlacementGroup": {
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "RouteTable": {
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "RouteTableAssociation": {
+        "resource": {
+          "type": "RouteTableAssociation",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "SecurityGroup": {
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Snapshot": {
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Subnet": {
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Volume": {
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Vpc": {
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "VpcPeeringConnection": {
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "DhcpOptionsSets": {
+        "request": { "operation": "DescribeDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions[]"
+        }
+      },
+      "Images": {
+        "request": { "operation": "DescribeImages" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Images[].ImageId" }
+          ],
+          "path": "Images[]"
+        }
+      },
+      "Instances": {
+        "request": { "operation": "DescribeInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+          ],
+          "path": "Reservations[].Instances[]"
+        }
+      },
+      "InternetGateways": {
+        "request": { "operation": "DescribeInternetGateways" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+          ],
+          "path": "InternetGateways[]"
+        }
+      },
+      "KeyPairs": {
+        "request": { "operation": "DescribeKeyPairs" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
+          ],
+          "path": "KeyPairs[]"
+        }
+      },
+      "NetworkAcls": {
+        "request": { "operation": "DescribeNetworkAcls" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+          ],
+          "path": "NetworkAcls[]"
+        }
+      },
+      "NetworkInterfaces": {
+        "request": { "operation": "DescribeNetworkInterfaces" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterfaces[]"
+        }
+      },
+      "PlacementGroups": {
+        "request": { "operation": "DescribePlacementGroups" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
+          ],
+          "path": "PlacementGroups[]"
+        }
+      },
+      "RouteTables": {
+        "request": { "operation": "DescribeRouteTables" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+          ],
+          "path": "RouteTables[]"
+        }
+      },
+      "SecurityGroups": {
+        "request": { "operation": "DescribeSecurityGroups" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+          ],
+          "path": "SecurityGroups[]"
+        }
+      },
+      "Snapshots": {
+        "request": { "operation": "DescribeSnapshots" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "Subnets": {
+        "request": { "operation": "DescribeSubnets" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+          ],
+          "path": "Subnets[]"
+        }
+      },
+      "Volumes": {
+        "request": { "operation": "DescribeVolumes" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+          ],
+          "path": "Volumes[]"
+        }
+      },
+      "VpcPeeringConnections": {
+        "request": { "operation": "DescribeVpcPeeringConnections" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnections[]"
+        }
+      },
+      "Vpcs": {
+        "request": { "operation": "DescribeVpcs" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
+          ],
+          "path": "Vpcs[]"
+        }
+      }
+    }
+  },
+  "resources": {
+    "DhcpOptions": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "DhcpOptionsId"
+        }
+      ],
+      "shape": "DhcpOptions",
+      "load": {
+        "request": {
+          "operation": "DescribeDhcpOptions",
+          "params": [
+            { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "DhcpOptions[0]"
+      },
+      "actions": {
+        "AssociateWithVpc": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Image": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "ImageId"
+        }
+      ],
+      "shape": "Image",
+      "load": {
+        "request": {
+          "operation": "DescribeImages",
+          "params": [
+            { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Images[0]"
+      },
+      "actions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Deregister": {
+          "request": {
+            "operation": "DeregisterImage",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Instance": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InstanceId"
+        }
+      ],
+      "shape": "Instance",
+      "load": {
+        "request": {
+          "operation": "DescribeInstances",
+          "params": [
+            { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Reservations[0].Instances[0]"
+      },
+      "actions": {
+        "AttachClassicLinkVpc": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachVolume": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ConsoleOutput": {
+          "request": {
+            "operation": "GetConsoleOutput",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateImage": {
+          "request": {
+            "operation": "CreateImage",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "ImageId" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkVpc": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachVolume": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "PasswordData": {
+          "request": {
+            "operation": "GetPasswordData",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReportStatus": {
+          "request": {
+            "operation": "ReportInstanceStatus",
+            "params": [
+              { "target": "Instances[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetKernel": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "kernel" }
+            ]
+          }
+        },
+        "ResetRamdisk": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "ramdisk" }
+            ]
+          }
+        },
+        "ResetSourceDestCheck": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "InstanceExists",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Running": {
+          "waiterName": "InstanceRunning",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Stopped": {
+          "waiterName": "InstanceStopped",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Terminated": {
+          "waiterName": "InstanceTerminated",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        }
+      },
+      "has": {
+        "Image": {
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "ImageId" }
+            ]
+          }
+        },
+        "KeyPair": {
+          "resource": {
+            "type": "KeyPair",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "KeyName" }
+            ]
+          }
+        },
+        "PlacementGroup": {
+          "resource": {
+            "type": "PlacementGroup",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "Placement.GroupName" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Volumes": {
+          "request": {
+            "operation": "DescribeVolumes",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+            ],
+            "path": "Volumes[]"
+          }
+        }
+      }
+    },
+    "InternetGateway": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InternetGatewayId"
+        }
+      ],
+      "shape": "InternetGateway",
+      "load": {
+        "request": {
+          "operation": "DescribeInternetGateways",
+          "params": [
+            { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "InternetGateways[0]"
+      },
+      "actions": {
+        "AttachToVpc": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromVpc": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "KeyPair": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "KeyName"
+        }
+      ],
+      "shape": "KeyPairInfo",
+      "load": {
+        "request": {
+          "operation": "DescribeKeyPairs",
+          "params": [
+            { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "KeyPairs[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteKeyPair",
+            "params": [
+              { "target": "KeyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkAcl": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkAclId"
+        }
+      ],
+      "shape": "NetworkAcl",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkAcls",
+          "params": [
+            { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkAcls[0]"
+      },
+      "actions": {
+        "CreateEntry": {
+          "request": {
+            "operation": "CreateNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkAcl",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DeleteEntry": {
+          "request": {
+            "operation": "DeleteNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceAssociation": {
+          "request": {
+            "operation": "ReplaceNetworkAclAssociation",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceEntry": {
+          "request": {
+            "operation": "ReplaceNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkInterface": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkInterfaceId"
+        }
+      ],
+      "shape": "NetworkInterface",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkInterfaces",
+          "params": [
+            { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkInterfaces[0]"
+      },
+      "actions": {
+        "AssignPrivateIpAddresses": {
+          "request": {
+            "operation": "AssignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Attach": {
+          "request": {
+            "operation": "AttachNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Detach": {
+          "request": {
+            "operation": "DetachNetworkInterface",
+            "params": [
+              { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "UnassignPrivateIpAddresses": {
+          "request": {
+            "operation": "UnassignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "PlacementGroup": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "GroupName"
+        }
+      ],
+      "shape": "PlacementGroup",
+      "load": {
+        "request": {
+          "operation": "DescribePlacementGroups",
+          "params": [
+            { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "PlacementGroups[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeletePlacementGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        }
+      }
+    },
+    "RouteTable": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableId"
+        }
+      ],
+      "shape": "RouteTable",
+      "load": {
+        "request": {
+          "operation": "DescribeRouteTables",
+          "params": [
+            { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "RouteTables[0]"
+      },
+      "actions": {
+        "AssociateWithSubnet": {
+          "request": {
+            "operation": "AssociateRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "AssociationId" }
+            ]
+          }
+        },
+        "CreateRoute": {
+          "request": {
+            "operation": "CreateRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Associations": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[0].Associations[].RouteTableAssociationId" }
+            ],
+            "path": "RouteTables[0].Associations[]"
+          }
+        }
+      }
+    },
+    "RouteTableAssociation": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableAssociationId"
+        }
+      ],
+      "shape": "RouteTableAssociation",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DisassociateRouteTable",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceSubnet": {
+          "request": {
+            "operation": "ReplaceRouteTableAssociation",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NewAssociationId" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "RouteTable": {
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RouteTableId" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        }
+      }
+    },
+    "SecurityGroup": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "GroupId"
+        }
+      ],
+      "shape": "SecurityGroup",
+      "load": {
+        "request": {
+          "operation": "DescribeSecurityGroups",
+          "params": [
+            { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "SecurityGroups[0]"
+      },
+      "actions": {
+        "AuthorizeEgress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AuthorizeIngress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSecurityGroup",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeEgress": {
+          "request": {
+            "operation": "RevokeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeIngress": {
+          "request": {
+            "operation": "RevokeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Snapshot": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SnapshotId"
+        }
+      ],
+      "shape": "Snapshot",
+      "load": {
+        "request": {
+          "operation": "DescribeSnapshots",
+          "params": [
+            { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Snapshots[0]"
+      },
+      "actions": {
+        "Copy": {
+          "request": {
+            "operation": "CopySnapshot",
+            "params": [
+              { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSnapshot",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifySnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Completed": {
+          "waiterName": "SnapshotCompleted",
+          "params": [
+            { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "has": {
+        "Volume": {
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VolumeId" }
+            ]
+          }
+        }
+      }
+    },
+    "Subnet": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SubnetId"
+        }
+      ],
+      "shape": "Subnet",
+      "load": {
+        "request": {
+          "operation": "DescribeSubnets",
+          "params": [
+            { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Subnets[0]"
+      },
+      "actions": {
+        "CreateInstances": {
+          "request": {
+            "operation": "RunInstances",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+            ],
+            "path": "Instances[]"
+          }
+        },
+        "CreateNetworkInterface": {
+          "request": {
+            "operation": "CreateNetworkInterface",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterface"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSubnet",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        }
+      }
+    },
+    "Tag": {
+      "identifiers": [
+        {
+          "name": "ResourceId",
+          "memberName": "ResourceId"
+        },
+        {
+          "name": "Key",
+          "memberName": "Key"
+        },
+        {
+          "name": "Value",
+          "memberName": "Value"
+        }
+      ],
+      "shape": "TagDescription",
+      "load": {
+        "request": {
+          "operation": "DescribeTags",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "key" },
+            { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
+            { "target": "Filters[1].Name", "source": "string", "value": "value" },
+            { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
+          ]
+        },
+        "path": "Tags[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      }
+    },
+    "Volume": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VolumeId"
+        }
+      ],
+      "shape": "Volume",
+      "load": {
+        "request": {
+          "operation": "DescribeVolumes",
+          "params": [
+            { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Volumes[0]"
+      },
+      "actions": {
+        "AttachToInstance": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateSnapshot": {
+          "request": {
+            "operation": "CreateSnapshot",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SnapshotId" }
+            ],
+            "path": "@"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeStatus": {
+          "request": {
+            "operation": "DescribeVolumeStatus",
+            "params": [
+              { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromInstance": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableIo": {
+          "request": {
+            "operation": "EnableVolumeIO",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Snapshots": {
+          "request": {
+            "operation": "DescribeSnapshots",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+            ],
+            "path": "Snapshots[]"
+          }
+        }
+      }
+    },
+    "Vpc": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcId"
+        }
+      ],
+      "shape": "Vpc",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcs",
+          "params": [
+            { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Vpcs[0]"
+      },
+      "actions": {
+        "AssociateDhcpOptions": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachClassicLinkInstance": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachInternetGateway": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateNetworkAcl": {
+          "request": {
+            "operation": "CreateNetworkAcl",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+            ],
+            "path": "NetworkAcl"
+          }
+        },
+        "CreateRouteTable": {
+          "request": {
+            "operation": "CreateRouteTable",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+            ],
+            "path": "RouteTable"
+          }
+        },
+        "CreateSecurityGroup": {
+          "request": {
+            "operation": "CreateSecurityGroup",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "GroupId" }
+            ]
+          }
+        },
+        "CreateSubnet": {
+          "request": {
+            "operation": "CreateSubnet",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+            ],
+            "path": "Subnet"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkInstance": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachInternetGateway": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DisableClassicLink": {
+          "request": {
+            "operation": "DisableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableClassicLink": {
+          "request": {
+            "operation": "EnableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RequestVpcPeeringConnection": {
+          "request": {
+            "operation": "CreateVpcPeeringConnection",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnection"
+          }
+        }
+      },
+      "has": {
+        "DhcpOptions": {
+          "resource": {
+            "type": "DhcpOptions",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "AcceptedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "InternetGateways": {
+          "request": {
+            "operation": "DescribeInternetGateways",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "InternetGateway",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+            ],
+            "path": "InternetGateways[]"
+          }
+        },
+        "NetworkAcls": {
+          "request": {
+            "operation": "DescribeNetworkAcls",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+            ],
+            "path": "NetworkAcls[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        },
+        "RequestedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "RouteTables": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+            ],
+            "path": "RouteTables[]"
+          }
+        },
+        "SecurityGroups": {
+          "request": {
+            "operation": "DescribeSecurityGroups",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+            ],
+            "path": "SecurityGroups[]"
+          }
+        },
+        "Subnets": {
+          "request": {
+            "operation": "DescribeSubnets",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+            ],
+            "path": "Subnets[]"
+          }
+        }
+      }
+    },
+    "VpcPeeringConnection": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcPeeringConnectionId"
+        }
+      ],
+      "shape": "VpcPeeringConnection",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcPeeringConnections",
+          "params": [
+            { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "VpcPeeringConnections[0]"
+      },
+      "actions": {
+        "Accept": {
+          "request": {
+            "operation": "AcceptVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reject": {
+          "request": {
+            "operation": "RejectVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "AccepterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
+            ]
+          }
+        },
+        "RequesterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/ec2/2015-10-01/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2015-10-01/resources-1.json
new file mode 100644
index 00000000..4831a36b
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2015-10-01/resources-1.json
@@ -0,0 +1,2567 @@
+{
+  "service": {
+    "actions": {
+      "CreateDhcpOptions": {
+        "request": { "operation": "CreateDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions"
+        }
+      },
+      "CreateInstances": {
+        "request": { "operation": "RunInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+          ],
+          "path": "Instances[]"
+        }
+      },
+      "CreateInternetGateway": {
+        "request": { "operation": "CreateInternetGateway" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
+          ],
+          "path": "InternetGateway"
+        }
+      },
+      "CreateKeyPair": {
+        "request": { "operation": "CreateKeyPair" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateNetworkAcl": {
+        "request": { "operation": "CreateNetworkAcl" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+          ],
+          "path": "NetworkAcl"
+        }
+      },
+      "CreateNetworkInterface": {
+        "request": { "operation": "CreateNetworkInterface" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterface"
+        }
+      },
+      "CreatePlacementGroup": {
+        "request": { "operation": "CreatePlacementGroup" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "GroupName" }
+          ]
+        }
+      },
+      "CreateRouteTable": {
+        "request": { "operation": "CreateRouteTable" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+          ],
+          "path": "RouteTable"
+        }
+      },
+      "CreateSecurityGroup": {
+        "request": { "operation": "CreateSecurityGroup" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "GroupId" }
+          ]
+        }
+      },
+      "CreateSnapshot": {
+        "request": { "operation": "CreateSnapshot" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SnapshotId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateSubnet": {
+        "request": { "operation": "CreateSubnet" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+          ],
+          "path": "Subnet"
+        }
+      },
+      "CreateTags": {
+        "request": { "operation": "CreateTags" }
+      },
+      "CreateVolume": {
+        "request": { "operation": "CreateVolume" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VolumeId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateVpc": {
+        "request": { "operation": "CreateVpc" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
+          ],
+          "path": "Vpc"
+        }
+      },
+      "CreateVpcPeeringConnection": {
+        "request": { "operation": "CreateVpcPeeringConnection" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnection"
+        }
+      },
+      "DisassociateRouteTable": {
+        "request": { "operation": "DisassociateRouteTable" }
+      },
+      "ImportKeyPair": {
+        "request": { "operation": "ImportKeyPair" },
+        "resource": {
+          "type": "KeyPairInfo",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ]
+        }
+      },
+      "RegisterImage": {
+        "request": { "operation": "RegisterImage" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "ImageId" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "DhcpOptions": {
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Image": {
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Instance": {
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "InternetGateway": {
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "KeyPair": {
+        "resource": {
+          "type": "KeyPairInfo",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "NetworkAcl": {
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "NetworkInterface": {
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "PlacementGroup": {
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "RouteTable": {
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "RouteTableAssociation": {
+        "resource": {
+          "type": "RouteTableAssociation",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "SecurityGroup": {
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Snapshot": {
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Subnet": {
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Volume": {
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Vpc": {
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "VpcPeeringConnection": {
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "ClassicAddresses": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "domain" },
+            { "target": "Filters[0].Values[0]", "source": "string", "value": "standard" }
+          ]
+        },
+        "resource": {
+          "type": "ClassicAddress",
+          "identifiers": [
+            { "target": "PublicIp", "source": "response", "path": "Addresses[].PublicIp" }
+          ],
+          "path": "Addresses[]"
+        }
+      },
+      "DhcpOptionsSets": {
+        "request": { "operation": "DescribeDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions[]"
+        }
+      },
+      "Images": {
+        "request": { "operation": "DescribeImages" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Images[].ImageId" }
+          ],
+          "path": "Images[]"
+        }
+      },
+      "Instances": {
+        "request": { "operation": "DescribeInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+          ],
+          "path": "Reservations[].Instances[]"
+        }
+      },
+      "InternetGateways": {
+        "request": { "operation": "DescribeInternetGateways" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+          ],
+          "path": "InternetGateways[]"
+        }
+      },
+      "KeyPairs": {
+        "request": { "operation": "DescribeKeyPairs" },
+        "resource": {
+          "type": "KeyPairInfo",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
+          ],
+          "path": "KeyPairs[]"
+        }
+      },
+      "NetworkAcls": {
+        "request": { "operation": "DescribeNetworkAcls" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+          ],
+          "path": "NetworkAcls[]"
+        }
+      },
+      "NetworkInterfaces": {
+        "request": { "operation": "DescribeNetworkInterfaces" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterfaces[]"
+        }
+      },
+      "PlacementGroups": {
+        "request": { "operation": "DescribePlacementGroups" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
+          ],
+          "path": "PlacementGroups[]"
+        }
+      },
+      "RouteTables": {
+        "request": { "operation": "DescribeRouteTables" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+          ],
+          "path": "RouteTables[]"
+        }
+      },
+      "SecurityGroups": {
+        "request": { "operation": "DescribeSecurityGroups" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+          ],
+          "path": "SecurityGroups[]"
+        }
+      },
+      "Snapshots": {
+        "request": { "operation": "DescribeSnapshots" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "Subnets": {
+        "request": { "operation": "DescribeSubnets" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+          ],
+          "path": "Subnets[]"
+        }
+      },
+      "Volumes": {
+        "request": { "operation": "DescribeVolumes" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+          ],
+          "path": "Volumes[]"
+        }
+      },
+      "VpcAddresses": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "domain" },
+            { "target": "Filters[0].Values[0]", "source": "string", "value": "vpc" }
+          ]
+        },
+        "resource": {
+          "type": "VpcAddress",
+          "identifiers": [
+            { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
+          ],
+          "path": "Addresses[]"
+        }
+      },
+      "VpcPeeringConnections": {
+        "request": { "operation": "DescribeVpcPeeringConnections" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnections[]"
+        }
+      },
+      "Vpcs": {
+        "request": { "operation": "DescribeVpcs" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
+          ],
+          "path": "Vpcs[]"
+        }
+      }
+    }
+  },
+  "resources": {
+    "ClassicAddress": {
+      "identifiers": [
+        {
+          "name": "PublicIp"
+        }
+      ],
+      "shape": "Address",
+      "load": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "PublicIps[]", "source": "identifier", "name": "PublicIp" }
+          ]
+        },
+        "path": "Addresses[0]"
+      },
+      "actions": {
+        "Associate": {
+          "request": {
+            "operation": "AssociateAddress",
+            "params": [
+              { "target": "PublicIp", "source": "identifier", "name": "PublicIp" }
+            ]
+          }
+        },
+        "Disassociate": {
+          "request": {
+            "operation": "DisassociateAddress",
+            "params": [
+              { "target": "PublicIp", "source": "data", "path": "PublicIp" }
+            ]
+          }
+        },
+        "Release": {
+          "request": {
+            "operation": "ReleaseAddress",
+            "params": [
+              { "target": "PublicIp", "source": "data", "path": "PublicIp" }
+            ]
+          }
+        }
+      }
+    },
+    "DhcpOptions": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "DhcpOptionsId"
+        }
+      ],
+      "shape": "DhcpOptions",
+      "load": {
+        "request": {
+          "operation": "DescribeDhcpOptions",
+          "params": [
+            { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "DhcpOptions[0]"
+      },
+      "actions": {
+        "AssociateWithVpc": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Image": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "ImageId"
+        }
+      ],
+      "shape": "Image",
+      "load": {
+        "request": {
+          "operation": "DescribeImages",
+          "params": [
+            { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Images[0]"
+      },
+      "actions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Deregister": {
+          "request": {
+            "operation": "DeregisterImage",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Instance": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InstanceId"
+        }
+      ],
+      "shape": "Instance",
+      "load": {
+        "request": {
+          "operation": "DescribeInstances",
+          "params": [
+            { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Reservations[0].Instances[0]"
+      },
+      "actions": {
+        "AttachClassicLinkVpc": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachVolume": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ConsoleOutput": {
+          "request": {
+            "operation": "GetConsoleOutput",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateImage": {
+          "request": {
+            "operation": "CreateImage",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "ImageId" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkVpc": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachVolume": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "PasswordData": {
+          "request": {
+            "operation": "GetPasswordData",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReportStatus": {
+          "request": {
+            "operation": "ReportInstanceStatus",
+            "params": [
+              { "target": "Instances[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetKernel": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "kernel" }
+            ]
+          }
+        },
+        "ResetRamdisk": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "ramdisk" }
+            ]
+          }
+        },
+        "ResetSourceDestCheck": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "InstanceExists",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Running": {
+          "waiterName": "InstanceRunning",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Stopped": {
+          "waiterName": "InstanceStopped",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Terminated": {
+          "waiterName": "InstanceTerminated",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        }
+      },
+      "has": {
+        "ClassicAddress": {
+          "resource": {
+            "type": "ClassicAddress",
+            "identifiers": [
+              { "target": "PublicIp", "source": "data", "path": "PublicIpAddress" }
+            ]
+          }
+        },
+        "Image": {
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "ImageId" }
+            ]
+          }
+        },
+        "KeyPair": {
+          "resource": {
+            "type": "KeyPairInfo",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "KeyName" }
+            ]
+          }
+        },
+        "NetworkInterfaces": {
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        },
+        "PlacementGroup": {
+          "resource": {
+            "type": "PlacementGroup",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "Placement.GroupName" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Volumes": {
+          "request": {
+            "operation": "DescribeVolumes",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+            ],
+            "path": "Volumes[]"
+          }
+        },
+        "VpcAddresses": {
+          "request": {
+            "operation": "DescribeAddresses",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "instance-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcAddress",
+            "identifiers": [
+              { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
+            ],
+            "path": "Addresses[]"
+          }
+        }
+      }
+    },
+    "InternetGateway": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InternetGatewayId"
+        }
+      ],
+      "shape": "InternetGateway",
+      "load": {
+        "request": {
+          "operation": "DescribeInternetGateways",
+          "params": [
+            { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "InternetGateways[0]"
+      },
+      "actions": {
+        "AttachToVpc": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromVpc": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "KeyPair": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "KeyName"
+        }
+      ],
+      "shape": "KeyPair",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteKeyPair",
+            "params": [
+              { "target": "KeyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      }
+    },
+    "KeyPairInfo": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "KeyName"
+        }
+      ],
+      "shape": "KeyPairInfo",
+      "load": {
+        "request": {
+          "operation": "DescribeKeyPairs",
+          "params": [
+            { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "KeyPairs[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteKeyPair",
+            "params": [
+              { "target": "KeyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkAcl": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkAclId"
+        }
+      ],
+      "shape": "NetworkAcl",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkAcls",
+          "params": [
+            { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkAcls[0]"
+      },
+      "actions": {
+        "CreateEntry": {
+          "request": {
+            "operation": "CreateNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkAcl",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DeleteEntry": {
+          "request": {
+            "operation": "DeleteNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceAssociation": {
+          "request": {
+            "operation": "ReplaceNetworkAclAssociation",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceEntry": {
+          "request": {
+            "operation": "ReplaceNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkInterface": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkInterfaceId"
+        }
+      ],
+      "shape": "NetworkInterface",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkInterfaces",
+          "params": [
+            { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkInterfaces[0]"
+      },
+      "actions": {
+        "AssignPrivateIpAddresses": {
+          "request": {
+            "operation": "AssignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Attach": {
+          "request": {
+            "operation": "AttachNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Detach": {
+          "request": {
+            "operation": "DetachNetworkInterface",
+            "params": [
+              { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "UnassignPrivateIpAddresses": {
+          "request": {
+            "operation": "UnassignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Association": {
+          "resource": {
+            "type": "NetworkInterfaceAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "Association.AssociationId" }
+            ],
+            "path": "Association"
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkInterfaceAssociation": {
+      "identifiers": [
+        {
+          "name": "Id"
+        }
+      ],
+      "shape": "InstanceNetworkInterfaceAssociation",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkInterfaces",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "association.association-id" },
+            { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkInterfaces[0].Association"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DisassociateAddress",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Address": {
+          "resource": {
+            "type": "VpcAddress",
+            "identifiers": [
+              { "target": "AllocationId", "source": "data", "path": "AllocationId" }
+            ]
+          }
+        }
+      }
+    },
+    "PlacementGroup": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "GroupName"
+        }
+      ],
+      "shape": "PlacementGroup",
+      "load": {
+        "request": {
+          "operation": "DescribePlacementGroups",
+          "params": [
+            { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "PlacementGroups[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeletePlacementGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        }
+      }
+    },
+    "Route": {
+      "identifiers": [
+        { "name": "RouteTableId" },
+        {
+          "name": "DestinationCidrBlock",
+          "memberName": "DestinationCidrBlock"
+        }
+      ],
+      "shape": "Route",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
+              { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
+            ]
+          }
+        },
+        "Replace": {
+          "request": {
+            "operation": "ReplaceRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
+              { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "RouteTable": {
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "identifier", "name": "RouteTableId" }
+            ]
+          }
+        }
+      }
+    },
+    "RouteTable": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableId"
+        }
+      ],
+      "shape": "RouteTable",
+      "load": {
+        "request": {
+          "operation": "DescribeRouteTables",
+          "params": [
+            { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "RouteTables[0]"
+      },
+      "actions": {
+        "AssociateWithSubnet": {
+          "request": {
+            "operation": "AssociateRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "AssociationId" }
+            ]
+          }
+        },
+        "CreateRoute": {
+          "request": {
+            "operation": "CreateRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Route",
+            "identifiers": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" },
+              { "target": "DestinationCidrBlock", "source": "requestParameter", "path": "DestinationCidrBlock" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Routes": {
+          "resource": {
+            "type": "Route",
+            "identifiers": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" },
+              { "target": "DestinationCidrBlock", "source": "data", "path": "Routes[].DestinationCidrBlock" }
+            ],
+            "path": "Routes[]"
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Associations": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[0].Associations[].RouteTableAssociationId" }
+            ],
+            "path": "RouteTables[0].Associations[]"
+          }
+        }
+      }
+    },
+    "RouteTableAssociation": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableAssociationId"
+        }
+      ],
+      "shape": "RouteTableAssociation",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DisassociateRouteTable",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceSubnet": {
+          "request": {
+            "operation": "ReplaceRouteTableAssociation",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NewAssociationId" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "RouteTable": {
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RouteTableId" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        }
+      }
+    },
+    "SecurityGroup": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "GroupId"
+        }
+      ],
+      "shape": "SecurityGroup",
+      "load": {
+        "request": {
+          "operation": "DescribeSecurityGroups",
+          "params": [
+            { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "SecurityGroups[0]"
+      },
+      "actions": {
+        "AuthorizeEgress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AuthorizeIngress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSecurityGroup",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeEgress": {
+          "request": {
+            "operation": "RevokeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeIngress": {
+          "request": {
+            "operation": "RevokeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Snapshot": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SnapshotId"
+        }
+      ],
+      "shape": "Snapshot",
+      "load": {
+        "request": {
+          "operation": "DescribeSnapshots",
+          "params": [
+            { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Snapshots[0]"
+      },
+      "actions": {
+        "Copy": {
+          "request": {
+            "operation": "CopySnapshot",
+            "params": [
+              { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSnapshot",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifySnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Completed": {
+          "waiterName": "SnapshotCompleted",
+          "params": [
+            { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "has": {
+        "Volume": {
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VolumeId" }
+            ]
+          }
+        }
+      }
+    },
+    "Subnet": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SubnetId"
+        }
+      ],
+      "shape": "Subnet",
+      "load": {
+        "request": {
+          "operation": "DescribeSubnets",
+          "params": [
+            { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Subnets[0]"
+      },
+      "actions": {
+        "CreateInstances": {
+          "request": {
+            "operation": "RunInstances",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+            ],
+            "path": "Instances[]"
+          }
+        },
+        "CreateNetworkInterface": {
+          "request": {
+            "operation": "CreateNetworkInterface",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterface"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSubnet",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        }
+      }
+    },
+    "Tag": {
+      "identifiers": [
+        {
+          "name": "ResourceId",
+          "memberName": "ResourceId"
+        },
+        {
+          "name": "Key",
+          "memberName": "Key"
+        },
+        {
+          "name": "Value",
+          "memberName": "Value"
+        }
+      ],
+      "shape": "TagDescription",
+      "load": {
+        "request": {
+          "operation": "DescribeTags",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "key" },
+            { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
+            { "target": "Filters[1].Name", "source": "string", "value": "value" },
+            { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
+          ]
+        },
+        "path": "Tags[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      }
+    },
+    "Volume": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VolumeId"
+        }
+      ],
+      "shape": "Volume",
+      "load": {
+        "request": {
+          "operation": "DescribeVolumes",
+          "params": [
+            { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Volumes[0]"
+      },
+      "actions": {
+        "AttachToInstance": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateSnapshot": {
+          "request": {
+            "operation": "CreateSnapshot",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SnapshotId" }
+            ],
+            "path": "@"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeStatus": {
+          "request": {
+            "operation": "DescribeVolumeStatus",
+            "params": [
+              { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromInstance": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableIo": {
+          "request": {
+            "operation": "EnableVolumeIO",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Snapshots": {
+          "request": {
+            "operation": "DescribeSnapshots",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+            ],
+            "path": "Snapshots[]"
+          }
+        }
+      }
+    },
+    "Vpc": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcId"
+        }
+      ],
+      "shape": "Vpc",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcs",
+          "params": [
+            { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Vpcs[0]"
+      },
+      "actions": {
+        "AssociateDhcpOptions": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachClassicLinkInstance": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachInternetGateway": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateNetworkAcl": {
+          "request": {
+            "operation": "CreateNetworkAcl",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+            ],
+            "path": "NetworkAcl"
+          }
+        },
+        "CreateRouteTable": {
+          "request": {
+            "operation": "CreateRouteTable",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+            ],
+            "path": "RouteTable"
+          }
+        },
+        "CreateSecurityGroup": {
+          "request": {
+            "operation": "CreateSecurityGroup",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "GroupId" }
+            ]
+          }
+        },
+        "CreateSubnet": {
+          "request": {
+            "operation": "CreateSubnet",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+            ],
+            "path": "Subnet"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkInstance": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachInternetGateway": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DisableClassicLink": {
+          "request": {
+            "operation": "DisableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableClassicLink": {
+          "request": {
+            "operation": "EnableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RequestVpcPeeringConnection": {
+          "request": {
+            "operation": "CreateVpcPeeringConnection",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnection"
+          }
+        }
+      },
+      "has": {
+        "DhcpOptions": {
+          "resource": {
+            "type": "DhcpOptions",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "AcceptedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "InternetGateways": {
+          "request": {
+            "operation": "DescribeInternetGateways",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "InternetGateway",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+            ],
+            "path": "InternetGateways[]"
+          }
+        },
+        "NetworkAcls": {
+          "request": {
+            "operation": "DescribeNetworkAcls",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+            ],
+            "path": "NetworkAcls[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        },
+        "RequestedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "RouteTables": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+            ],
+            "path": "RouteTables[]"
+          }
+        },
+        "SecurityGroups": {
+          "request": {
+            "operation": "DescribeSecurityGroups",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+            ],
+            "path": "SecurityGroups[]"
+          }
+        },
+        "Subnets": {
+          "request": {
+            "operation": "DescribeSubnets",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+            ],
+            "path": "Subnets[]"
+          }
+        }
+      }
+    },
+    "VpcPeeringConnection": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcPeeringConnectionId"
+        }
+      ],
+      "shape": "VpcPeeringConnection",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcPeeringConnections",
+          "params": [
+            { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "VpcPeeringConnections[0]"
+      },
+      "actions": {
+        "Accept": {
+          "request": {
+            "operation": "AcceptVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reject": {
+          "request": {
+            "operation": "RejectVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "VpcPeeringConnectionExists",
+          "params": [
+            { "target": "VpcPeeringConnectionIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "VpcPeeringConnections[0]"
+        }
+      },
+      "has": {
+        "AccepterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
+            ]
+          }
+        },
+        "RequesterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "VpcAddress": {
+      "identifiers": [
+        {
+          "name": "AllocationId"
+        }
+      ],
+      "shape": "Address",
+      "load": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "AllocationIds[0]", "source": "identifier", "name": "AllocationId" }
+          ]
+        },
+        "path": "Addresses[0]"
+      },
+      "actions": {
+        "Associate": {
+          "request": {
+            "operation": "AssociateAddress",
+            "params": [
+              { "target": "AllocationId", "source": "identifier", "name": "AllocationId" }
+            ]
+          }
+        },
+        "Release": {
+          "request": {
+            "operation": "ReleaseAddress",
+            "params": [
+              { "target": "AllocationId", "source": "data", "path": "AllocationId" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Association": {
+          "resource": {
+            "type": "NetworkInterfaceAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "AssociationId" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/ec2/2016-04-01/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2016-04-01/resources-1.json
new file mode 100644
index 00000000..4831a36b
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2016-04-01/resources-1.json
@@ -0,0 +1,2567 @@
+{
+  "service": {
+    "actions": {
+      "CreateDhcpOptions": {
+        "request": { "operation": "CreateDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions"
+        }
+      },
+      "CreateInstances": {
+        "request": { "operation": "RunInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+          ],
+          "path": "Instances[]"
+        }
+      },
+      "CreateInternetGateway": {
+        "request": { "operation": "CreateInternetGateway" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
+          ],
+          "path": "InternetGateway"
+        }
+      },
+      "CreateKeyPair": {
+        "request": { "operation": "CreateKeyPair" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateNetworkAcl": {
+        "request": { "operation": "CreateNetworkAcl" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+          ],
+          "path": "NetworkAcl"
+        }
+      },
+      "CreateNetworkInterface": {
+        "request": { "operation": "CreateNetworkInterface" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterface"
+        }
+      },
+      "CreatePlacementGroup": {
+        "request": { "operation": "CreatePlacementGroup" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "GroupName" }
+          ]
+        }
+      },
+      "CreateRouteTable": {
+        "request": { "operation": "CreateRouteTable" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+          ],
+          "path": "RouteTable"
+        }
+      },
+      "CreateSecurityGroup": {
+        "request": { "operation": "CreateSecurityGroup" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "GroupId" }
+          ]
+        }
+      },
+      "CreateSnapshot": {
+        "request": { "operation": "CreateSnapshot" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SnapshotId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateSubnet": {
+        "request": { "operation": "CreateSubnet" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+          ],
+          "path": "Subnet"
+        }
+      },
+      "CreateTags": {
+        "request": { "operation": "CreateTags" }
+      },
+      "CreateVolume": {
+        "request": { "operation": "CreateVolume" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VolumeId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateVpc": {
+        "request": { "operation": "CreateVpc" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
+          ],
+          "path": "Vpc"
+        }
+      },
+      "CreateVpcPeeringConnection": {
+        "request": { "operation": "CreateVpcPeeringConnection" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnection"
+        }
+      },
+      "DisassociateRouteTable": {
+        "request": { "operation": "DisassociateRouteTable" }
+      },
+      "ImportKeyPair": {
+        "request": { "operation": "ImportKeyPair" },
+        "resource": {
+          "type": "KeyPairInfo",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ]
+        }
+      },
+      "RegisterImage": {
+        "request": { "operation": "RegisterImage" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "ImageId" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "DhcpOptions": {
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Image": {
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Instance": {
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "InternetGateway": {
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "KeyPair": {
+        "resource": {
+          "type": "KeyPairInfo",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "NetworkAcl": {
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "NetworkInterface": {
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "PlacementGroup": {
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "RouteTable": {
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "RouteTableAssociation": {
+        "resource": {
+          "type": "RouteTableAssociation",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "SecurityGroup": {
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Snapshot": {
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Subnet": {
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Volume": {
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Vpc": {
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "VpcPeeringConnection": {
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "ClassicAddresses": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "domain" },
+            { "target": "Filters[0].Values[0]", "source": "string", "value": "standard" }
+          ]
+        },
+        "resource": {
+          "type": "ClassicAddress",
+          "identifiers": [
+            { "target": "PublicIp", "source": "response", "path": "Addresses[].PublicIp" }
+          ],
+          "path": "Addresses[]"
+        }
+      },
+      "DhcpOptionsSets": {
+        "request": { "operation": "DescribeDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions[]"
+        }
+      },
+      "Images": {
+        "request": { "operation": "DescribeImages" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Images[].ImageId" }
+          ],
+          "path": "Images[]"
+        }
+      },
+      "Instances": {
+        "request": { "operation": "DescribeInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+          ],
+          "path": "Reservations[].Instances[]"
+        }
+      },
+      "InternetGateways": {
+        "request": { "operation": "DescribeInternetGateways" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+          ],
+          "path": "InternetGateways[]"
+        }
+      },
+      "KeyPairs": {
+        "request": { "operation": "DescribeKeyPairs" },
+        "resource": {
+          "type": "KeyPairInfo",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
+          ],
+          "path": "KeyPairs[]"
+        }
+      },
+      "NetworkAcls": {
+        "request": { "operation": "DescribeNetworkAcls" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+          ],
+          "path": "NetworkAcls[]"
+        }
+      },
+      "NetworkInterfaces": {
+        "request": { "operation": "DescribeNetworkInterfaces" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterfaces[]"
+        }
+      },
+      "PlacementGroups": {
+        "request": { "operation": "DescribePlacementGroups" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
+          ],
+          "path": "PlacementGroups[]"
+        }
+      },
+      "RouteTables": {
+        "request": { "operation": "DescribeRouteTables" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+          ],
+          "path": "RouteTables[]"
+        }
+      },
+      "SecurityGroups": {
+        "request": { "operation": "DescribeSecurityGroups" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+          ],
+          "path": "SecurityGroups[]"
+        }
+      },
+      "Snapshots": {
+        "request": { "operation": "DescribeSnapshots" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "Subnets": {
+        "request": { "operation": "DescribeSubnets" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+          ],
+          "path": "Subnets[]"
+        }
+      },
+      "Volumes": {
+        "request": { "operation": "DescribeVolumes" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+          ],
+          "path": "Volumes[]"
+        }
+      },
+      "VpcAddresses": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "domain" },
+            { "target": "Filters[0].Values[0]", "source": "string", "value": "vpc" }
+          ]
+        },
+        "resource": {
+          "type": "VpcAddress",
+          "identifiers": [
+            { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
+          ],
+          "path": "Addresses[]"
+        }
+      },
+      "VpcPeeringConnections": {
+        "request": { "operation": "DescribeVpcPeeringConnections" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnections[]"
+        }
+      },
+      "Vpcs": {
+        "request": { "operation": "DescribeVpcs" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
+          ],
+          "path": "Vpcs[]"
+        }
+      }
+    }
+  },
+  "resources": {
+    "ClassicAddress": {
+      "identifiers": [
+        {
+          "name": "PublicIp"
+        }
+      ],
+      "shape": "Address",
+      "load": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "PublicIps[]", "source": "identifier", "name": "PublicIp" }
+          ]
+        },
+        "path": "Addresses[0]"
+      },
+      "actions": {
+        "Associate": {
+          "request": {
+            "operation": "AssociateAddress",
+            "params": [
+              { "target": "PublicIp", "source": "identifier", "name": "PublicIp" }
+            ]
+          }
+        },
+        "Disassociate": {
+          "request": {
+            "operation": "DisassociateAddress",
+            "params": [
+              { "target": "PublicIp", "source": "data", "path": "PublicIp" }
+            ]
+          }
+        },
+        "Release": {
+          "request": {
+            "operation": "ReleaseAddress",
+            "params": [
+              { "target": "PublicIp", "source": "data", "path": "PublicIp" }
+            ]
+          }
+        }
+      }
+    },
+    "DhcpOptions": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "DhcpOptionsId"
+        }
+      ],
+      "shape": "DhcpOptions",
+      "load": {
+        "request": {
+          "operation": "DescribeDhcpOptions",
+          "params": [
+            { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "DhcpOptions[0]"
+      },
+      "actions": {
+        "AssociateWithVpc": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Image": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "ImageId"
+        }
+      ],
+      "shape": "Image",
+      "load": {
+        "request": {
+          "operation": "DescribeImages",
+          "params": [
+            { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Images[0]"
+      },
+      "actions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Deregister": {
+          "request": {
+            "operation": "DeregisterImage",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Instance": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InstanceId"
+        }
+      ],
+      "shape": "Instance",
+      "load": {
+        "request": {
+          "operation": "DescribeInstances",
+          "params": [
+            { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Reservations[0].Instances[0]"
+      },
+      "actions": {
+        "AttachClassicLinkVpc": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachVolume": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ConsoleOutput": {
+          "request": {
+            "operation": "GetConsoleOutput",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateImage": {
+          "request": {
+            "operation": "CreateImage",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "ImageId" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkVpc": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachVolume": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "PasswordData": {
+          "request": {
+            "operation": "GetPasswordData",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReportStatus": {
+          "request": {
+            "operation": "ReportInstanceStatus",
+            "params": [
+              { "target": "Instances[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetKernel": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "kernel" }
+            ]
+          }
+        },
+        "ResetRamdisk": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "ramdisk" }
+            ]
+          }
+        },
+        "ResetSourceDestCheck": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "InstanceExists",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Running": {
+          "waiterName": "InstanceRunning",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Stopped": {
+          "waiterName": "InstanceStopped",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Terminated": {
+          "waiterName": "InstanceTerminated",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        }
+      },
+      "has": {
+        "ClassicAddress": {
+          "resource": {
+            "type": "ClassicAddress",
+            "identifiers": [
+              { "target": "PublicIp", "source": "data", "path": "PublicIpAddress" }
+            ]
+          }
+        },
+        "Image": {
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "ImageId" }
+            ]
+          }
+        },
+        "KeyPair": {
+          "resource": {
+            "type": "KeyPairInfo",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "KeyName" }
+            ]
+          }
+        },
+        "NetworkInterfaces": {
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        },
+        "PlacementGroup": {
+          "resource": {
+            "type": "PlacementGroup",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "Placement.GroupName" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Volumes": {
+          "request": {
+            "operation": "DescribeVolumes",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+            ],
+            "path": "Volumes[]"
+          }
+        },
+        "VpcAddresses": {
+          "request": {
+            "operation": "DescribeAddresses",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "instance-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcAddress",
+            "identifiers": [
+              { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
+            ],
+            "path": "Addresses[]"
+          }
+        }
+      }
+    },
+    "InternetGateway": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InternetGatewayId"
+        }
+      ],
+      "shape": "InternetGateway",
+      "load": {
+        "request": {
+          "operation": "DescribeInternetGateways",
+          "params": [
+            { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "InternetGateways[0]"
+      },
+      "actions": {
+        "AttachToVpc": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromVpc": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "KeyPair": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "KeyName"
+        }
+      ],
+      "shape": "KeyPair",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteKeyPair",
+            "params": [
+              { "target": "KeyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      }
+    },
+    "KeyPairInfo": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "KeyName"
+        }
+      ],
+      "shape": "KeyPairInfo",
+      "load": {
+        "request": {
+          "operation": "DescribeKeyPairs",
+          "params": [
+            { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "KeyPairs[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteKeyPair",
+            "params": [
+              { "target": "KeyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkAcl": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkAclId"
+        }
+      ],
+      "shape": "NetworkAcl",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkAcls",
+          "params": [
+            { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkAcls[0]"
+      },
+      "actions": {
+        "CreateEntry": {
+          "request": {
+            "operation": "CreateNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkAcl",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DeleteEntry": {
+          "request": {
+            "operation": "DeleteNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceAssociation": {
+          "request": {
+            "operation": "ReplaceNetworkAclAssociation",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceEntry": {
+          "request": {
+            "operation": "ReplaceNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkInterface": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkInterfaceId"
+        }
+      ],
+      "shape": "NetworkInterface",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkInterfaces",
+          "params": [
+            { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkInterfaces[0]"
+      },
+      "actions": {
+        "AssignPrivateIpAddresses": {
+          "request": {
+            "operation": "AssignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Attach": {
+          "request": {
+            "operation": "AttachNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Detach": {
+          "request": {
+            "operation": "DetachNetworkInterface",
+            "params": [
+              { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "UnassignPrivateIpAddresses": {
+          "request": {
+            "operation": "UnassignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Association": {
+          "resource": {
+            "type": "NetworkInterfaceAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "Association.AssociationId" }
+            ],
+            "path": "Association"
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkInterfaceAssociation": {
+      "identifiers": [
+        {
+          "name": "Id"
+        }
+      ],
+      "shape": "InstanceNetworkInterfaceAssociation",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkInterfaces",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "association.association-id" },
+            { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkInterfaces[0].Association"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DisassociateAddress",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Address": {
+          "resource": {
+            "type": "VpcAddress",
+            "identifiers": [
+              { "target": "AllocationId", "source": "data", "path": "AllocationId" }
+            ]
+          }
+        }
+      }
+    },
+    "PlacementGroup": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "GroupName"
+        }
+      ],
+      "shape": "PlacementGroup",
+      "load": {
+        "request": {
+          "operation": "DescribePlacementGroups",
+          "params": [
+            { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "PlacementGroups[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeletePlacementGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        }
+      }
+    },
+    "Route": {
+      "identifiers": [
+        { "name": "RouteTableId" },
+        {
+          "name": "DestinationCidrBlock",
+          "memberName": "DestinationCidrBlock"
+        }
+      ],
+      "shape": "Route",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
+              { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
+            ]
+          }
+        },
+        "Replace": {
+          "request": {
+            "operation": "ReplaceRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
+              { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "RouteTable": {
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "identifier", "name": "RouteTableId" }
+            ]
+          }
+        }
+      }
+    },
+    "RouteTable": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableId"
+        }
+      ],
+      "shape": "RouteTable",
+      "load": {
+        "request": {
+          "operation": "DescribeRouteTables",
+          "params": [
+            { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "RouteTables[0]"
+      },
+      "actions": {
+        "AssociateWithSubnet": {
+          "request": {
+            "operation": "AssociateRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "AssociationId" }
+            ]
+          }
+        },
+        "CreateRoute": {
+          "request": {
+            "operation": "CreateRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Route",
+            "identifiers": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" },
+              { "target": "DestinationCidrBlock", "source": "requestParameter", "path": "DestinationCidrBlock" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Routes": {
+          "resource": {
+            "type": "Route",
+            "identifiers": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" },
+              { "target": "DestinationCidrBlock", "source": "data", "path": "Routes[].DestinationCidrBlock" }
+            ],
+            "path": "Routes[]"
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Associations": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[0].Associations[].RouteTableAssociationId" }
+            ],
+            "path": "RouteTables[0].Associations[]"
+          }
+        }
+      }
+    },
+    "RouteTableAssociation": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableAssociationId"
+        }
+      ],
+      "shape": "RouteTableAssociation",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DisassociateRouteTable",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceSubnet": {
+          "request": {
+            "operation": "ReplaceRouteTableAssociation",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NewAssociationId" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "RouteTable": {
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RouteTableId" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        }
+      }
+    },
+    "SecurityGroup": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "GroupId"
+        }
+      ],
+      "shape": "SecurityGroup",
+      "load": {
+        "request": {
+          "operation": "DescribeSecurityGroups",
+          "params": [
+            { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "SecurityGroups[0]"
+      },
+      "actions": {
+        "AuthorizeEgress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AuthorizeIngress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSecurityGroup",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeEgress": {
+          "request": {
+            "operation": "RevokeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeIngress": {
+          "request": {
+            "operation": "RevokeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Snapshot": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SnapshotId"
+        }
+      ],
+      "shape": "Snapshot",
+      "load": {
+        "request": {
+          "operation": "DescribeSnapshots",
+          "params": [
+            { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Snapshots[0]"
+      },
+      "actions": {
+        "Copy": {
+          "request": {
+            "operation": "CopySnapshot",
+            "params": [
+              { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSnapshot",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifySnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Completed": {
+          "waiterName": "SnapshotCompleted",
+          "params": [
+            { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "has": {
+        "Volume": {
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VolumeId" }
+            ]
+          }
+        }
+      }
+    },
+    "Subnet": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SubnetId"
+        }
+      ],
+      "shape": "Subnet",
+      "load": {
+        "request": {
+          "operation": "DescribeSubnets",
+          "params": [
+            { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Subnets[0]"
+      },
+      "actions": {
+        "CreateInstances": {
+          "request": {
+            "operation": "RunInstances",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+            ],
+            "path": "Instances[]"
+          }
+        },
+        "CreateNetworkInterface": {
+          "request": {
+            "operation": "CreateNetworkInterface",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterface"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSubnet",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        }
+      }
+    },
+    "Tag": {
+      "identifiers": [
+        {
+          "name": "ResourceId",
+          "memberName": "ResourceId"
+        },
+        {
+          "name": "Key",
+          "memberName": "Key"
+        },
+        {
+          "name": "Value",
+          "memberName": "Value"
+        }
+      ],
+      "shape": "TagDescription",
+      "load": {
+        "request": {
+          "operation": "DescribeTags",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "key" },
+            { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
+            { "target": "Filters[1].Name", "source": "string", "value": "value" },
+            { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
+          ]
+        },
+        "path": "Tags[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      }
+    },
+    "Volume": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VolumeId"
+        }
+      ],
+      "shape": "Volume",
+      "load": {
+        "request": {
+          "operation": "DescribeVolumes",
+          "params": [
+            { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Volumes[0]"
+      },
+      "actions": {
+        "AttachToInstance": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateSnapshot": {
+          "request": {
+            "operation": "CreateSnapshot",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SnapshotId" }
+            ],
+            "path": "@"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeStatus": {
+          "request": {
+            "operation": "DescribeVolumeStatus",
+            "params": [
+              { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromInstance": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableIo": {
+          "request": {
+            "operation": "EnableVolumeIO",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Snapshots": {
+          "request": {
+            "operation": "DescribeSnapshots",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+            ],
+            "path": "Snapshots[]"
+          }
+        }
+      }
+    },
+    "Vpc": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcId"
+        }
+      ],
+      "shape": "Vpc",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcs",
+          "params": [
+            { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Vpcs[0]"
+      },
+      "actions": {
+        "AssociateDhcpOptions": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachClassicLinkInstance": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachInternetGateway": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateNetworkAcl": {
+          "request": {
+            "operation": "CreateNetworkAcl",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+            ],
+            "path": "NetworkAcl"
+          }
+        },
+        "CreateRouteTable": {
+          "request": {
+            "operation": "CreateRouteTable",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+            ],
+            "path": "RouteTable"
+          }
+        },
+        "CreateSecurityGroup": {
+          "request": {
+            "operation": "CreateSecurityGroup",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "GroupId" }
+            ]
+          }
+        },
+        "CreateSubnet": {
+          "request": {
+            "operation": "CreateSubnet",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+            ],
+            "path": "Subnet"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkInstance": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachInternetGateway": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DisableClassicLink": {
+          "request": {
+            "operation": "DisableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableClassicLink": {
+          "request": {
+            "operation": "EnableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RequestVpcPeeringConnection": {
+          "request": {
+            "operation": "CreateVpcPeeringConnection",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnection"
+          }
+        }
+      },
+      "has": {
+        "DhcpOptions": {
+          "resource": {
+            "type": "DhcpOptions",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "AcceptedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "InternetGateways": {
+          "request": {
+            "operation": "DescribeInternetGateways",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "InternetGateway",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+            ],
+            "path": "InternetGateways[]"
+          }
+        },
+        "NetworkAcls": {
+          "request": {
+            "operation": "DescribeNetworkAcls",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+            ],
+            "path": "NetworkAcls[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        },
+        "RequestedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "RouteTables": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+            ],
+            "path": "RouteTables[]"
+          }
+        },
+        "SecurityGroups": {
+          "request": {
+            "operation": "DescribeSecurityGroups",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+            ],
+            "path": "SecurityGroups[]"
+          }
+        },
+        "Subnets": {
+          "request": {
+            "operation": "DescribeSubnets",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+            ],
+            "path": "Subnets[]"
+          }
+        }
+      }
+    },
+    "VpcPeeringConnection": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcPeeringConnectionId"
+        }
+      ],
+      "shape": "VpcPeeringConnection",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcPeeringConnections",
+          "params": [
+            { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "VpcPeeringConnections[0]"
+      },
+      "actions": {
+        "Accept": {
+          "request": {
+            "operation": "AcceptVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reject": {
+          "request": {
+            "operation": "RejectVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "VpcPeeringConnectionExists",
+          "params": [
+            { "target": "VpcPeeringConnectionIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "VpcPeeringConnections[0]"
+        }
+      },
+      "has": {
+        "AccepterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
+            ]
+          }
+        },
+        "RequesterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "VpcAddress": {
+      "identifiers": [
+        {
+          "name": "AllocationId"
+        }
+      ],
+      "shape": "Address",
+      "load": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "AllocationIds[0]", "source": "identifier", "name": "AllocationId" }
+          ]
+        },
+        "path": "Addresses[0]"
+      },
+      "actions": {
+        "Associate": {
+          "request": {
+            "operation": "AssociateAddress",
+            "params": [
+              { "target": "AllocationId", "source": "identifier", "name": "AllocationId" }
+            ]
+          }
+        },
+        "Release": {
+          "request": {
+            "operation": "ReleaseAddress",
+            "params": [
+              { "target": "AllocationId", "source": "data", "path": "AllocationId" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Association": {
+          "resource": {
+            "type": "NetworkInterfaceAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "AssociationId" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/ec2/2016-09-15/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2016-09-15/resources-1.json
new file mode 100644
index 00000000..4831a36b
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2016-09-15/resources-1.json
@@ -0,0 +1,2567 @@
+{
+  "service": {
+    "actions": {
+      "CreateDhcpOptions": {
+        "request": { "operation": "CreateDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions"
+        }
+      },
+      "CreateInstances": {
+        "request": { "operation": "RunInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+          ],
+          "path": "Instances[]"
+        }
+      },
+      "CreateInternetGateway": {
+        "request": { "operation": "CreateInternetGateway" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
+          ],
+          "path": "InternetGateway"
+        }
+      },
+      "CreateKeyPair": {
+        "request": { "operation": "CreateKeyPair" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateNetworkAcl": {
+        "request": { "operation": "CreateNetworkAcl" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+          ],
+          "path": "NetworkAcl"
+        }
+      },
+      "CreateNetworkInterface": {
+        "request": { "operation": "CreateNetworkInterface" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterface"
+        }
+      },
+      "CreatePlacementGroup": {
+        "request": { "operation": "CreatePlacementGroup" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "GroupName" }
+          ]
+        }
+      },
+      "CreateRouteTable": {
+        "request": { "operation": "CreateRouteTable" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+          ],
+          "path": "RouteTable"
+        }
+      },
+      "CreateSecurityGroup": {
+        "request": { "operation": "CreateSecurityGroup" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "GroupId" }
+          ]
+        }
+      },
+      "CreateSnapshot": {
+        "request": { "operation": "CreateSnapshot" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SnapshotId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateSubnet": {
+        "request": { "operation": "CreateSubnet" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+          ],
+          "path": "Subnet"
+        }
+      },
+      "CreateTags": {
+        "request": { "operation": "CreateTags" }
+      },
+      "CreateVolume": {
+        "request": { "operation": "CreateVolume" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VolumeId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateVpc": {
+        "request": { "operation": "CreateVpc" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
+          ],
+          "path": "Vpc"
+        }
+      },
+      "CreateVpcPeeringConnection": {
+        "request": { "operation": "CreateVpcPeeringConnection" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnection"
+        }
+      },
+      "DisassociateRouteTable": {
+        "request": { "operation": "DisassociateRouteTable" }
+      },
+      "ImportKeyPair": {
+        "request": { "operation": "ImportKeyPair" },
+        "resource": {
+          "type": "KeyPairInfo",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ]
+        }
+      },
+      "RegisterImage": {
+        "request": { "operation": "RegisterImage" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "ImageId" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "DhcpOptions": {
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Image": {
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Instance": {
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "InternetGateway": {
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "KeyPair": {
+        "resource": {
+          "type": "KeyPairInfo",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "NetworkAcl": {
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "NetworkInterface": {
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "PlacementGroup": {
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "RouteTable": {
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "RouteTableAssociation": {
+        "resource": {
+          "type": "RouteTableAssociation",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "SecurityGroup": {
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Snapshot": {
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Subnet": {
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Volume": {
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Vpc": {
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "VpcPeeringConnection": {
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "ClassicAddresses": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "domain" },
+            { "target": "Filters[0].Values[0]", "source": "string", "value": "standard" }
+          ]
+        },
+        "resource": {
+          "type": "ClassicAddress",
+          "identifiers": [
+            { "target": "PublicIp", "source": "response", "path": "Addresses[].PublicIp" }
+          ],
+          "path": "Addresses[]"
+        }
+      },
+      "DhcpOptionsSets": {
+        "request": { "operation": "DescribeDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions[]"
+        }
+      },
+      "Images": {
+        "request": { "operation": "DescribeImages" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Images[].ImageId" }
+          ],
+          "path": "Images[]"
+        }
+      },
+      "Instances": {
+        "request": { "operation": "DescribeInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+          ],
+          "path": "Reservations[].Instances[]"
+        }
+      },
+      "InternetGateways": {
+        "request": { "operation": "DescribeInternetGateways" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+          ],
+          "path": "InternetGateways[]"
+        }
+      },
+      "KeyPairs": {
+        "request": { "operation": "DescribeKeyPairs" },
+        "resource": {
+          "type": "KeyPairInfo",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
+          ],
+          "path": "KeyPairs[]"
+        }
+      },
+      "NetworkAcls": {
+        "request": { "operation": "DescribeNetworkAcls" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+          ],
+          "path": "NetworkAcls[]"
+        }
+      },
+      "NetworkInterfaces": {
+        "request": { "operation": "DescribeNetworkInterfaces" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterfaces[]"
+        }
+      },
+      "PlacementGroups": {
+        "request": { "operation": "DescribePlacementGroups" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
+          ],
+          "path": "PlacementGroups[]"
+        }
+      },
+      "RouteTables": {
+        "request": { "operation": "DescribeRouteTables" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+          ],
+          "path": "RouteTables[]"
+        }
+      },
+      "SecurityGroups": {
+        "request": { "operation": "DescribeSecurityGroups" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+          ],
+          "path": "SecurityGroups[]"
+        }
+      },
+      "Snapshots": {
+        "request": { "operation": "DescribeSnapshots" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "Subnets": {
+        "request": { "operation": "DescribeSubnets" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+          ],
+          "path": "Subnets[]"
+        }
+      },
+      "Volumes": {
+        "request": { "operation": "DescribeVolumes" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+          ],
+          "path": "Volumes[]"
+        }
+      },
+      "VpcAddresses": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "domain" },
+            { "target": "Filters[0].Values[0]", "source": "string", "value": "vpc" }
+          ]
+        },
+        "resource": {
+          "type": "VpcAddress",
+          "identifiers": [
+            { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
+          ],
+          "path": "Addresses[]"
+        }
+      },
+      "VpcPeeringConnections": {
+        "request": { "operation": "DescribeVpcPeeringConnections" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnections[]"
+        }
+      },
+      "Vpcs": {
+        "request": { "operation": "DescribeVpcs" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
+          ],
+          "path": "Vpcs[]"
+        }
+      }
+    }
+  },
+  "resources": {
+    "ClassicAddress": {
+      "identifiers": [
+        {
+          "name": "PublicIp"
+        }
+      ],
+      "shape": "Address",
+      "load": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "PublicIps[]", "source": "identifier", "name": "PublicIp" }
+          ]
+        },
+        "path": "Addresses[0]"
+      },
+      "actions": {
+        "Associate": {
+          "request": {
+            "operation": "AssociateAddress",
+            "params": [
+              { "target": "PublicIp", "source": "identifier", "name": "PublicIp" }
+            ]
+          }
+        },
+        "Disassociate": {
+          "request": {
+            "operation": "DisassociateAddress",
+            "params": [
+              { "target": "PublicIp", "source": "data", "path": "PublicIp" }
+            ]
+          }
+        },
+        "Release": {
+          "request": {
+            "operation": "ReleaseAddress",
+            "params": [
+              { "target": "PublicIp", "source": "data", "path": "PublicIp" }
+            ]
+          }
+        }
+      }
+    },
+    "DhcpOptions": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "DhcpOptionsId"
+        }
+      ],
+      "shape": "DhcpOptions",
+      "load": {
+        "request": {
+          "operation": "DescribeDhcpOptions",
+          "params": [
+            { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "DhcpOptions[0]"
+      },
+      "actions": {
+        "AssociateWithVpc": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Image": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "ImageId"
+        }
+      ],
+      "shape": "Image",
+      "load": {
+        "request": {
+          "operation": "DescribeImages",
+          "params": [
+            { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Images[0]"
+      },
+      "actions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Deregister": {
+          "request": {
+            "operation": "DeregisterImage",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Instance": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InstanceId"
+        }
+      ],
+      "shape": "Instance",
+      "load": {
+        "request": {
+          "operation": "DescribeInstances",
+          "params": [
+            { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Reservations[0].Instances[0]"
+      },
+      "actions": {
+        "AttachClassicLinkVpc": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachVolume": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ConsoleOutput": {
+          "request": {
+            "operation": "GetConsoleOutput",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateImage": {
+          "request": {
+            "operation": "CreateImage",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "ImageId" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkVpc": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachVolume": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "PasswordData": {
+          "request": {
+            "operation": "GetPasswordData",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReportStatus": {
+          "request": {
+            "operation": "ReportInstanceStatus",
+            "params": [
+              { "target": "Instances[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetKernel": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "kernel" }
+            ]
+          }
+        },
+        "ResetRamdisk": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "ramdisk" }
+            ]
+          }
+        },
+        "ResetSourceDestCheck": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "InstanceExists",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Running": {
+          "waiterName": "InstanceRunning",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Stopped": {
+          "waiterName": "InstanceStopped",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Terminated": {
+          "waiterName": "InstanceTerminated",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        }
+      },
+      "has": {
+        "ClassicAddress": {
+          "resource": {
+            "type": "ClassicAddress",
+            "identifiers": [
+              { "target": "PublicIp", "source": "data", "path": "PublicIpAddress" }
+            ]
+          }
+        },
+        "Image": {
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "ImageId" }
+            ]
+          }
+        },
+        "KeyPair": {
+          "resource": {
+            "type": "KeyPairInfo",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "KeyName" }
+            ]
+          }
+        },
+        "NetworkInterfaces": {
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        },
+        "PlacementGroup": {
+          "resource": {
+            "type": "PlacementGroup",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "Placement.GroupName" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Volumes": {
+          "request": {
+            "operation": "DescribeVolumes",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+            ],
+            "path": "Volumes[]"
+          }
+        },
+        "VpcAddresses": {
+          "request": {
+            "operation": "DescribeAddresses",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "instance-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcAddress",
+            "identifiers": [
+              { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
+            ],
+            "path": "Addresses[]"
+          }
+        }
+      }
+    },
+    "InternetGateway": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InternetGatewayId"
+        }
+      ],
+      "shape": "InternetGateway",
+      "load": {
+        "request": {
+          "operation": "DescribeInternetGateways",
+          "params": [
+            { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "InternetGateways[0]"
+      },
+      "actions": {
+        "AttachToVpc": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromVpc": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "KeyPair": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "KeyName"
+        }
+      ],
+      "shape": "KeyPair",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteKeyPair",
+            "params": [
+              { "target": "KeyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      }
+    },
+    "KeyPairInfo": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "KeyName"
+        }
+      ],
+      "shape": "KeyPairInfo",
+      "load": {
+        "request": {
+          "operation": "DescribeKeyPairs",
+          "params": [
+            { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "KeyPairs[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteKeyPair",
+            "params": [
+              { "target": "KeyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkAcl": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkAclId"
+        }
+      ],
+      "shape": "NetworkAcl",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkAcls",
+          "params": [
+            { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkAcls[0]"
+      },
+      "actions": {
+        "CreateEntry": {
+          "request": {
+            "operation": "CreateNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkAcl",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DeleteEntry": {
+          "request": {
+            "operation": "DeleteNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceAssociation": {
+          "request": {
+            "operation": "ReplaceNetworkAclAssociation",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceEntry": {
+          "request": {
+            "operation": "ReplaceNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkInterface": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkInterfaceId"
+        }
+      ],
+      "shape": "NetworkInterface",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkInterfaces",
+          "params": [
+            { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkInterfaces[0]"
+      },
+      "actions": {
+        "AssignPrivateIpAddresses": {
+          "request": {
+            "operation": "AssignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Attach": {
+          "request": {
+            "operation": "AttachNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Detach": {
+          "request": {
+            "operation": "DetachNetworkInterface",
+            "params": [
+              { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "UnassignPrivateIpAddresses": {
+          "request": {
+            "operation": "UnassignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Association": {
+          "resource": {
+            "type": "NetworkInterfaceAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "Association.AssociationId" }
+            ],
+            "path": "Association"
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkInterfaceAssociation": {
+      "identifiers": [
+        {
+          "name": "Id"
+        }
+      ],
+      "shape": "InstanceNetworkInterfaceAssociation",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkInterfaces",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "association.association-id" },
+            { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkInterfaces[0].Association"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DisassociateAddress",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Address": {
+          "resource": {
+            "type": "VpcAddress",
+            "identifiers": [
+              { "target": "AllocationId", "source": "data", "path": "AllocationId" }
+            ]
+          }
+        }
+      }
+    },
+    "PlacementGroup": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "GroupName"
+        }
+      ],
+      "shape": "PlacementGroup",
+      "load": {
+        "request": {
+          "operation": "DescribePlacementGroups",
+          "params": [
+            { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "PlacementGroups[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeletePlacementGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        }
+      }
+    },
+    "Route": {
+      "identifiers": [
+        { "name": "RouteTableId" },
+        {
+          "name": "DestinationCidrBlock",
+          "memberName": "DestinationCidrBlock"
+        }
+      ],
+      "shape": "Route",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
+              { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
+            ]
+          }
+        },
+        "Replace": {
+          "request": {
+            "operation": "ReplaceRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
+              { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "RouteTable": {
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "identifier", "name": "RouteTableId" }
+            ]
+          }
+        }
+      }
+    },
+    "RouteTable": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableId"
+        }
+      ],
+      "shape": "RouteTable",
+      "load": {
+        "request": {
+          "operation": "DescribeRouteTables",
+          "params": [
+            { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "RouteTables[0]"
+      },
+      "actions": {
+        "AssociateWithSubnet": {
+          "request": {
+            "operation": "AssociateRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "AssociationId" }
+            ]
+          }
+        },
+        "CreateRoute": {
+          "request": {
+            "operation": "CreateRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Route",
+            "identifiers": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" },
+              { "target": "DestinationCidrBlock", "source": "requestParameter", "path": "DestinationCidrBlock" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Routes": {
+          "resource": {
+            "type": "Route",
+            "identifiers": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" },
+              { "target": "DestinationCidrBlock", "source": "data", "path": "Routes[].DestinationCidrBlock" }
+            ],
+            "path": "Routes[]"
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Associations": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[0].Associations[].RouteTableAssociationId" }
+            ],
+            "path": "RouteTables[0].Associations[]"
+          }
+        }
+      }
+    },
+    "RouteTableAssociation": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableAssociationId"
+        }
+      ],
+      "shape": "RouteTableAssociation",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DisassociateRouteTable",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceSubnet": {
+          "request": {
+            "operation": "ReplaceRouteTableAssociation",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NewAssociationId" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "RouteTable": {
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RouteTableId" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        }
+      }
+    },
+    "SecurityGroup": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "GroupId"
+        }
+      ],
+      "shape": "SecurityGroup",
+      "load": {
+        "request": {
+          "operation": "DescribeSecurityGroups",
+          "params": [
+            { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "SecurityGroups[0]"
+      },
+      "actions": {
+        "AuthorizeEgress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AuthorizeIngress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSecurityGroup",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeEgress": {
+          "request": {
+            "operation": "RevokeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeIngress": {
+          "request": {
+            "operation": "RevokeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Snapshot": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SnapshotId"
+        }
+      ],
+      "shape": "Snapshot",
+      "load": {
+        "request": {
+          "operation": "DescribeSnapshots",
+          "params": [
+            { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Snapshots[0]"
+      },
+      "actions": {
+        "Copy": {
+          "request": {
+            "operation": "CopySnapshot",
+            "params": [
+              { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSnapshot",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifySnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Completed": {
+          "waiterName": "SnapshotCompleted",
+          "params": [
+            { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "has": {
+        "Volume": {
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VolumeId" }
+            ]
+          }
+        }
+      }
+    },
+    "Subnet": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SubnetId"
+        }
+      ],
+      "shape": "Subnet",
+      "load": {
+        "request": {
+          "operation": "DescribeSubnets",
+          "params": [
+            { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Subnets[0]"
+      },
+      "actions": {
+        "CreateInstances": {
+          "request": {
+            "operation": "RunInstances",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+            ],
+            "path": "Instances[]"
+          }
+        },
+        "CreateNetworkInterface": {
+          "request": {
+            "operation": "CreateNetworkInterface",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterface"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSubnet",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        }
+      }
+    },
+    "Tag": {
+      "identifiers": [
+        {
+          "name": "ResourceId",
+          "memberName": "ResourceId"
+        },
+        {
+          "name": "Key",
+          "memberName": "Key"
+        },
+        {
+          "name": "Value",
+          "memberName": "Value"
+        }
+      ],
+      "shape": "TagDescription",
+      "load": {
+        "request": {
+          "operation": "DescribeTags",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "key" },
+            { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
+            { "target": "Filters[1].Name", "source": "string", "value": "value" },
+            { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
+          ]
+        },
+        "path": "Tags[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      }
+    },
+    "Volume": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VolumeId"
+        }
+      ],
+      "shape": "Volume",
+      "load": {
+        "request": {
+          "operation": "DescribeVolumes",
+          "params": [
+            { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Volumes[0]"
+      },
+      "actions": {
+        "AttachToInstance": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateSnapshot": {
+          "request": {
+            "operation": "CreateSnapshot",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SnapshotId" }
+            ],
+            "path": "@"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeStatus": {
+          "request": {
+            "operation": "DescribeVolumeStatus",
+            "params": [
+              { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromInstance": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableIo": {
+          "request": {
+            "operation": "EnableVolumeIO",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Snapshots": {
+          "request": {
+            "operation": "DescribeSnapshots",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+            ],
+            "path": "Snapshots[]"
+          }
+        }
+      }
+    },
+    "Vpc": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcId"
+        }
+      ],
+      "shape": "Vpc",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcs",
+          "params": [
+            { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Vpcs[0]"
+      },
+      "actions": {
+        "AssociateDhcpOptions": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachClassicLinkInstance": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachInternetGateway": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateNetworkAcl": {
+          "request": {
+            "operation": "CreateNetworkAcl",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+            ],
+            "path": "NetworkAcl"
+          }
+        },
+        "CreateRouteTable": {
+          "request": {
+            "operation": "CreateRouteTable",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+            ],
+            "path": "RouteTable"
+          }
+        },
+        "CreateSecurityGroup": {
+          "request": {
+            "operation": "CreateSecurityGroup",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "GroupId" }
+            ]
+          }
+        },
+        "CreateSubnet": {
+          "request": {
+            "operation": "CreateSubnet",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+            ],
+            "path": "Subnet"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkInstance": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachInternetGateway": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DisableClassicLink": {
+          "request": {
+            "operation": "DisableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableClassicLink": {
+          "request": {
+            "operation": "EnableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RequestVpcPeeringConnection": {
+          "request": {
+            "operation": "CreateVpcPeeringConnection",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnection"
+          }
+        }
+      },
+      "has": {
+        "DhcpOptions": {
+          "resource": {
+            "type": "DhcpOptions",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "AcceptedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "InternetGateways": {
+          "request": {
+            "operation": "DescribeInternetGateways",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "InternetGateway",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+            ],
+            "path": "InternetGateways[]"
+          }
+        },
+        "NetworkAcls": {
+          "request": {
+            "operation": "DescribeNetworkAcls",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+            ],
+            "path": "NetworkAcls[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        },
+        "RequestedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "RouteTables": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+            ],
+            "path": "RouteTables[]"
+          }
+        },
+        "SecurityGroups": {
+          "request": {
+            "operation": "DescribeSecurityGroups",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+            ],
+            "path": "SecurityGroups[]"
+          }
+        },
+        "Subnets": {
+          "request": {
+            "operation": "DescribeSubnets",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+            ],
+            "path": "Subnets[]"
+          }
+        }
+      }
+    },
+    "VpcPeeringConnection": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcPeeringConnectionId"
+        }
+      ],
+      "shape": "VpcPeeringConnection",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcPeeringConnections",
+          "params": [
+            { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "VpcPeeringConnections[0]"
+      },
+      "actions": {
+        "Accept": {
+          "request": {
+            "operation": "AcceptVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reject": {
+          "request": {
+            "operation": "RejectVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "VpcPeeringConnectionExists",
+          "params": [
+            { "target": "VpcPeeringConnectionIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "VpcPeeringConnections[0]"
+        }
+      },
+      "has": {
+        "AccepterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
+            ]
+          }
+        },
+        "RequesterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "VpcAddress": {
+      "identifiers": [
+        {
+          "name": "AllocationId"
+        }
+      ],
+      "shape": "Address",
+      "load": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "AllocationIds[0]", "source": "identifier", "name": "AllocationId" }
+          ]
+        },
+        "path": "Addresses[0]"
+      },
+      "actions": {
+        "Associate": {
+          "request": {
+            "operation": "AssociateAddress",
+            "params": [
+              { "target": "AllocationId", "source": "identifier", "name": "AllocationId" }
+            ]
+          }
+        },
+        "Release": {
+          "request": {
+            "operation": "ReleaseAddress",
+            "params": [
+              { "target": "AllocationId", "source": "data", "path": "AllocationId" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Association": {
+          "resource": {
+            "type": "NetworkInterfaceAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "AssociationId" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/ec2/2016-11-15/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2016-11-15/resources-1.json
new file mode 100644
index 00000000..9872201d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/ec2/2016-11-15/resources-1.json
@@ -0,0 +1,2582 @@
+{
+  "service": {
+    "actions": {
+      "CreateDhcpOptions": {
+        "request": { "operation": "CreateDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions.DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions"
+        }
+      },
+      "CreateInstances": {
+        "request": { "operation": "RunInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+          ],
+          "path": "Instances[]"
+        }
+      },
+      "CreateInternetGateway": {
+        "request": { "operation": "CreateInternetGateway" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateway.InternetGatewayId" }
+          ],
+          "path": "InternetGateway"
+        }
+      },
+      "CreateKeyPair": {
+        "request": { "operation": "CreateKeyPair" },
+        "resource": {
+          "type": "KeyPair",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateNetworkAcl": {
+        "request": { "operation": "CreateNetworkAcl" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+          ],
+          "path": "NetworkAcl"
+        }
+      },
+      "CreateNetworkInterface": {
+        "request": { "operation": "CreateNetworkInterface" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterface"
+        }
+      },
+      "CreatePlacementGroup": {
+        "request": { "operation": "CreatePlacementGroup" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "GroupName" }
+          ]
+        }
+      },
+      "CreateRouteTable": {
+        "request": { "operation": "CreateRouteTable" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+          ],
+          "path": "RouteTable"
+        }
+      },
+      "CreateSecurityGroup": {
+        "request": { "operation": "CreateSecurityGroup" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "GroupId" }
+          ]
+        }
+      },
+      "CreateSnapshot": {
+        "request": { "operation": "CreateSnapshot" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SnapshotId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateSubnet": {
+        "request": { "operation": "CreateSubnet" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+          ],
+          "path": "Subnet"
+        }
+      },
+      "CreateTags": {
+        "request": { "operation": "CreateTags" }
+      },
+      "CreateVolume": {
+        "request": { "operation": "CreateVolume" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VolumeId" }
+          ],
+          "path": "@"
+        }
+      },
+      "CreateVpc": {
+        "request": { "operation": "CreateVpc" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpc.VpcId" }
+          ],
+          "path": "Vpc"
+        }
+      },
+      "CreateVpcPeeringConnection": {
+        "request": { "operation": "CreateVpcPeeringConnection" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnection"
+        }
+      },
+      "DisassociateRouteTable": {
+        "request": { "operation": "DisassociateRouteTable" }
+      },
+      "ImportKeyPair": {
+        "request": { "operation": "ImportKeyPair" },
+        "resource": {
+          "type": "KeyPairInfo",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyName" }
+          ]
+        }
+      },
+      "RegisterImage": {
+        "request": { "operation": "RegisterImage" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "ImageId" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "DhcpOptions": {
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Image": {
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Instance": {
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "InternetGateway": {
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "KeyPair": {
+        "resource": {
+          "type": "KeyPairInfo",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "NetworkAcl": {
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "NetworkInterface": {
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "PlacementGroup": {
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "RouteTable": {
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "RouteTableAssociation": {
+        "resource": {
+          "type": "RouteTableAssociation",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "SecurityGroup": {
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Snapshot": {
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Subnet": {
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Volume": {
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Vpc": {
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "VpcPeeringConnection": {
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "ClassicAddresses": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "domain" },
+            { "target": "Filters[0].Values[0]", "source": "string", "value": "standard" }
+          ]
+        },
+        "resource": {
+          "type": "ClassicAddress",
+          "identifiers": [
+            { "target": "PublicIp", "source": "response", "path": "Addresses[].PublicIp" }
+          ],
+          "path": "Addresses[]"
+        }
+      },
+      "DhcpOptionsSets": {
+        "request": { "operation": "DescribeDhcpOptions" },
+        "resource": {
+          "type": "DhcpOptions",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "DhcpOptions[].DhcpOptionsId" }
+          ],
+          "path": "DhcpOptions[]"
+        }
+      },
+      "Images": {
+        "request": { "operation": "DescribeImages" },
+        "resource": {
+          "type": "Image",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Images[].ImageId" }
+          ],
+          "path": "Images[]"
+        }
+      },
+      "Instances": {
+        "request": { "operation": "DescribeInstances" },
+        "resource": {
+          "type": "Instance",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+          ],
+          "path": "Reservations[].Instances[]"
+        }
+      },
+      "InternetGateways": {
+        "request": { "operation": "DescribeInternetGateways" },
+        "resource": {
+          "type": "InternetGateway",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+          ],
+          "path": "InternetGateways[]"
+        }
+      },
+      "KeyPairs": {
+        "request": { "operation": "DescribeKeyPairs" },
+        "resource": {
+          "type": "KeyPairInfo",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "KeyPairs[].KeyName" }
+          ],
+          "path": "KeyPairs[]"
+        }
+      },
+      "NetworkAcls": {
+        "request": { "operation": "DescribeNetworkAcls" },
+        "resource": {
+          "type": "NetworkAcl",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+          ],
+          "path": "NetworkAcls[]"
+        }
+      },
+      "NetworkInterfaces": {
+        "request": { "operation": "DescribeNetworkInterfaces" },
+        "resource": {
+          "type": "NetworkInterface",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+          ],
+          "path": "NetworkInterfaces[]"
+        }
+      },
+      "PlacementGroups": {
+        "request": { "operation": "DescribePlacementGroups" },
+        "resource": {
+          "type": "PlacementGroup",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "PlacementGroups[].GroupName" }
+          ],
+          "path": "PlacementGroups[]"
+        }
+      },
+      "RouteTables": {
+        "request": { "operation": "DescribeRouteTables" },
+        "resource": {
+          "type": "RouteTable",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+          ],
+          "path": "RouteTables[]"
+        }
+      },
+      "SecurityGroups": {
+        "request": { "operation": "DescribeSecurityGroups" },
+        "resource": {
+          "type": "SecurityGroup",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+          ],
+          "path": "SecurityGroups[]"
+        }
+      },
+      "Snapshots": {
+        "request": { "operation": "DescribeSnapshots" },
+        "resource": {
+          "type": "Snapshot",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "Subnets": {
+        "request": { "operation": "DescribeSubnets" },
+        "resource": {
+          "type": "Subnet",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+          ],
+          "path": "Subnets[]"
+        }
+      },
+      "Volumes": {
+        "request": { "operation": "DescribeVolumes" },
+        "resource": {
+          "type": "Volume",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+          ],
+          "path": "Volumes[]"
+        }
+      },
+      "VpcAddresses": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "domain" },
+            { "target": "Filters[0].Values[0]", "source": "string", "value": "vpc" }
+          ]
+        },
+        "resource": {
+          "type": "VpcAddress",
+          "identifiers": [
+            { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
+          ],
+          "path": "Addresses[]"
+        }
+      },
+      "VpcPeeringConnections": {
+        "request": { "operation": "DescribeVpcPeeringConnections" },
+        "resource": {
+          "type": "VpcPeeringConnection",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+          ],
+          "path": "VpcPeeringConnections[]"
+        }
+      },
+      "Vpcs": {
+        "request": { "operation": "DescribeVpcs" },
+        "resource": {
+          "type": "Vpc",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Vpcs[].VpcId" }
+          ],
+          "path": "Vpcs[]"
+        }
+      }
+    }
+  },
+  "resources": {
+    "ClassicAddress": {
+      "identifiers": [
+        {
+          "name": "PublicIp"
+        }
+      ],
+      "shape": "Address",
+      "load": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "PublicIps[]", "source": "identifier", "name": "PublicIp" }
+          ]
+        },
+        "path": "Addresses[0]"
+      },
+      "actions": {
+        "Associate": {
+          "request": {
+            "operation": "AssociateAddress",
+            "params": [
+              { "target": "PublicIp", "source": "identifier", "name": "PublicIp" }
+            ]
+          }
+        },
+        "Disassociate": {
+          "request": {
+            "operation": "DisassociateAddress",
+            "params": [
+              { "target": "PublicIp", "source": "data", "path": "PublicIp" }
+            ]
+          }
+        },
+        "Release": {
+          "request": {
+            "operation": "ReleaseAddress",
+            "params": [
+              { "target": "PublicIp", "source": "data", "path": "PublicIp" }
+            ]
+          }
+        }
+      }
+    },
+    "DhcpOptions": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "DhcpOptionsId"
+        }
+      ],
+      "shape": "DhcpOptions",
+      "load": {
+        "request": {
+          "operation": "DescribeDhcpOptions",
+          "params": [
+            { "target": "DhcpOptionsIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "DhcpOptions[0]"
+      },
+      "actions": {
+        "AssociateWithVpc": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteDhcpOptions",
+            "params": [
+              { "target": "DhcpOptionsId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Image": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "ImageId"
+        }
+      ],
+      "shape": "Image",
+      "load": {
+        "request": {
+          "operation": "DescribeImages",
+          "params": [
+            { "target": "ImageIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Images[0]"
+      },
+      "actions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Deregister": {
+          "request": {
+            "operation": "DeregisterImage",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetImageAttribute",
+            "params": [
+              { "target": "ImageId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "ImageExists",
+          "params": [
+            { "target": "ImageIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Images[0]"
+        }
+      }
+    },
+    "Instance": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InstanceId"
+        }
+      ],
+      "shape": "Instance",
+      "load": {
+        "request": {
+          "operation": "DescribeInstances",
+          "params": [
+            { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Reservations[0].Instances[0]"
+      },
+      "actions": {
+        "AttachClassicLinkVpc": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachVolume": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ConsoleOutput": {
+          "request": {
+            "operation": "GetConsoleOutput",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateImage": {
+          "request": {
+            "operation": "CreateImage",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "ImageId" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkVpc": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachVolume": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "PasswordData": {
+          "request": {
+            "operation": "GetPasswordData",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReportStatus": {
+          "request": {
+            "operation": "ReportInstanceStatus",
+            "params": [
+              { "target": "Instances[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetKernel": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "kernel" }
+            ]
+          }
+        },
+        "ResetRamdisk": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "ramdisk" }
+            ]
+          }
+        },
+        "ResetSourceDestCheck": {
+          "request": {
+            "operation": "ResetInstanceAttribute",
+            "params": [
+              { "target": "InstanceId", "source": "identifier", "name": "Id" },
+              { "target": "Attribute", "source": "string", "value": "sourceDestCheck" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Monitor": {
+          "request": {
+            "operation": "MonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reboot": {
+          "request": {
+            "operation": "RebootInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Start": {
+          "request": {
+            "operation": "StartInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Stop": {
+          "request": {
+            "operation": "StopInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Terminate": {
+          "request": {
+            "operation": "TerminateInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Unmonitor": {
+          "request": {
+            "operation": "UnmonitorInstances",
+            "params": [
+              { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "InstanceExists",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Running": {
+          "waiterName": "InstanceRunning",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Stopped": {
+          "waiterName": "InstanceStopped",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        },
+        "Terminated": {
+          "waiterName": "InstanceTerminated",
+          "params": [
+            { "target": "InstanceIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Reservations[0].Instances[0]"
+        }
+      },
+      "has": {
+        "ClassicAddress": {
+          "resource": {
+            "type": "ClassicAddress",
+            "identifiers": [
+              { "target": "PublicIp", "source": "data", "path": "PublicIpAddress" }
+            ]
+          }
+        },
+        "Image": {
+          "resource": {
+            "type": "Image",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "ImageId" }
+            ]
+          }
+        },
+        "KeyPair": {
+          "resource": {
+            "type": "KeyPairInfo",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "KeyName" }
+            ]
+          }
+        },
+        "NetworkInterfaces": {
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        },
+        "PlacementGroup": {
+          "resource": {
+            "type": "PlacementGroup",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "Placement.GroupName" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Volumes": {
+          "request": {
+            "operation": "DescribeVolumes",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.instance-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Volumes[].VolumeId" }
+            ],
+            "path": "Volumes[]"
+          }
+        },
+        "VpcAddresses": {
+          "request": {
+            "operation": "DescribeAddresses",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "instance-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcAddress",
+            "identifiers": [
+              { "target": "AllocationId", "source": "response", "path": "Addresses[].AllocationId" }
+            ],
+            "path": "Addresses[]"
+          }
+        }
+      }
+    },
+    "InternetGateway": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "InternetGatewayId"
+        }
+      ],
+      "shape": "InternetGateway",
+      "load": {
+        "request": {
+          "operation": "DescribeInternetGateways",
+          "params": [
+            { "target": "InternetGatewayIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "InternetGateways[0]"
+      },
+      "actions": {
+        "AttachToVpc": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromVpc": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "InternetGatewayId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "KeyPair": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "KeyName"
+        }
+      ],
+      "shape": "KeyPair",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteKeyPair",
+            "params": [
+              { "target": "KeyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      }
+    },
+    "KeyPairInfo": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "KeyName"
+        }
+      ],
+      "shape": "KeyPairInfo",
+      "load": {
+        "request": {
+          "operation": "DescribeKeyPairs",
+          "params": [
+            { "target": "KeyNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "KeyPairs[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteKeyPair",
+            "params": [
+              { "target": "KeyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkAcl": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkAclId"
+        }
+      ],
+      "shape": "NetworkAcl",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkAcls",
+          "params": [
+            { "target": "NetworkAclIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkAcls[0]"
+      },
+      "actions": {
+        "CreateEntry": {
+          "request": {
+            "operation": "CreateNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkAcl",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DeleteEntry": {
+          "request": {
+            "operation": "DeleteNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceAssociation": {
+          "request": {
+            "operation": "ReplaceNetworkAclAssociation",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceEntry": {
+          "request": {
+            "operation": "ReplaceNetworkAclEntry",
+            "params": [
+              { "target": "NetworkAclId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkInterface": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "NetworkInterfaceId"
+        }
+      ],
+      "shape": "NetworkInterface",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkInterfaces",
+          "params": [
+            { "target": "NetworkInterfaceIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkInterfaces[0]"
+      },
+      "actions": {
+        "AssignPrivateIpAddresses": {
+          "request": {
+            "operation": "AssignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Attach": {
+          "request": {
+            "operation": "AttachNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteNetworkInterface",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Detach": {
+          "request": {
+            "operation": "DetachNetworkInterface",
+            "params": [
+              { "target": "AttachmentId", "source": "data", "path": "Attachment.AttachmentId" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetNetworkInterfaceAttribute",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "UnassignPrivateIpAddresses": {
+          "request": {
+            "operation": "UnassignPrivateIpAddresses",
+            "params": [
+              { "target": "NetworkInterfaceId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Association": {
+          "resource": {
+            "type": "NetworkInterfaceAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "Association.AssociationId" }
+            ],
+            "path": "Association"
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "NetworkInterfaceAssociation": {
+      "identifiers": [
+        {
+          "name": "Id"
+        }
+      ],
+      "shape": "InstanceNetworkInterfaceAssociation",
+      "load": {
+        "request": {
+          "operation": "DescribeNetworkInterfaces",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "association.association-id" },
+            { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "NetworkInterfaces[0].Association"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DisassociateAddress",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Address": {
+          "resource": {
+            "type": "VpcAddress",
+            "identifiers": [
+              { "target": "AllocationId", "source": "data", "path": "AllocationId" }
+            ]
+          }
+        }
+      }
+    },
+    "PlacementGroup": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "GroupName"
+        }
+      ],
+      "shape": "PlacementGroup",
+      "load": {
+        "request": {
+          "operation": "DescribePlacementGroups",
+          "params": [
+            { "target": "GroupNames[0]", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "PlacementGroups[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeletePlacementGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "placement-group-name" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        }
+      }
+    },
+    "Route": {
+      "identifiers": [
+        { "name": "RouteTableId" },
+        {
+          "name": "DestinationCidrBlock",
+          "memberName": "DestinationCidrBlock"
+        }
+      ],
+      "shape": "Route",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
+              { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
+            ]
+          }
+        },
+        "Replace": {
+          "request": {
+            "operation": "ReplaceRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "RouteTableId" },
+              { "target": "DestinationCidrBlock", "source": "identifier", "name": "DestinationCidrBlock" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "RouteTable": {
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "identifier", "name": "RouteTableId" }
+            ]
+          }
+        }
+      }
+    },
+    "RouteTable": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableId"
+        }
+      ],
+      "shape": "RouteTable",
+      "load": {
+        "request": {
+          "operation": "DescribeRouteTables",
+          "params": [
+            { "target": "RouteTableIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "RouteTables[0]"
+      },
+      "actions": {
+        "AssociateWithSubnet": {
+          "request": {
+            "operation": "AssociateRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "AssociationId" }
+            ]
+          }
+        },
+        "CreateRoute": {
+          "request": {
+            "operation": "CreateRoute",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Route",
+            "identifiers": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" },
+              { "target": "DestinationCidrBlock", "source": "requestParameter", "path": "DestinationCidrBlock" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteRouteTable",
+            "params": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Associations": {
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "Associations[].RouteTableAssociationId" }
+            ],
+            "path": "Associations[]"
+          }
+        },
+        "Routes": {
+          "resource": {
+            "type": "Route",
+            "identifiers": [
+              { "target": "RouteTableId", "source": "identifier", "name": "Id" },
+              { "target": "DestinationCidrBlock", "source": "data", "path": "Routes[].DestinationCidrBlock" }
+            ],
+            "path": "Routes[]"
+          }
+        },
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "RouteTableAssociation": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "RouteTableAssociationId"
+        }
+      ],
+      "shape": "RouteTableAssociation",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DisassociateRouteTable",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ReplaceSubnet": {
+          "request": {
+            "operation": "ReplaceRouteTableAssociation",
+            "params": [
+              { "target": "AssociationId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTableAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NewAssociationId" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "RouteTable": {
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RouteTableId" }
+            ]
+          }
+        },
+        "Subnet": {
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "SubnetId" }
+            ]
+          }
+        }
+      }
+    },
+    "SecurityGroup": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "GroupId"
+        }
+      ],
+      "shape": "SecurityGroup",
+      "load": {
+        "request": {
+          "operation": "DescribeSecurityGroups",
+          "params": [
+            { "target": "GroupIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "SecurityGroups[0]"
+      },
+      "actions": {
+        "AuthorizeEgress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AuthorizeIngress": {
+          "request": {
+            "operation": "AuthorizeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSecurityGroup",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeEgress": {
+          "request": {
+            "operation": "RevokeSecurityGroupEgress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RevokeIngress": {
+          "request": {
+            "operation": "RevokeSecurityGroupIngress",
+            "params": [
+              { "target": "GroupId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "Snapshot": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SnapshotId"
+        }
+      ],
+      "shape": "Snapshot",
+      "load": {
+        "request": {
+          "operation": "DescribeSnapshots",
+          "params": [
+            { "target": "SnapshotIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Snapshots[0]"
+      },
+      "actions": {
+        "Copy": {
+          "request": {
+            "operation": "CopySnapshot",
+            "params": [
+              { "target": "SourceSnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSnapshot",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifySnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ResetAttribute": {
+          "request": {
+            "operation": "ResetSnapshotAttribute",
+            "params": [
+              { "target": "SnapshotId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Completed": {
+          "waiterName": "SnapshotCompleted",
+          "params": [
+            { "target": "SnapshotIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "Snapshots[]"
+        }
+      },
+      "has": {
+        "Volume": {
+          "resource": {
+            "type": "Volume",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VolumeId" }
+            ]
+          }
+        }
+      }
+    },
+    "Subnet": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "SubnetId"
+        }
+      ],
+      "shape": "Subnet",
+      "load": {
+        "request": {
+          "operation": "DescribeSubnets",
+          "params": [
+            { "target": "SubnetIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Subnets[0]"
+      },
+      "actions": {
+        "CreateInstances": {
+          "request": {
+            "operation": "RunInstances",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Instances[].InstanceId" }
+            ],
+            "path": "Instances[]"
+          }
+        },
+        "CreateNetworkInterface": {
+          "request": {
+            "operation": "CreateNetworkInterface",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterface.NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterface"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSubnet",
+            "params": [
+              { "target": "SubnetId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "VpcId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "subnet-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        }
+      }
+    },
+    "Tag": {
+      "identifiers": [
+        {
+          "name": "ResourceId",
+          "memberName": "ResourceId"
+        },
+        {
+          "name": "Key",
+          "memberName": "Key"
+        },
+        {
+          "name": "Value",
+          "memberName": "Value"
+        }
+      ],
+      "shape": "TagDescription",
+      "load": {
+        "request": {
+          "operation": "DescribeTags",
+          "params": [
+            { "target": "Filters[0].Name", "source": "string", "value": "key" },
+            { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Key" },
+            { "target": "Filters[1].Name", "source": "string", "value": "value" },
+            { "target": "Filters[1].Values[0]", "source": "identifier", "name": "Value" }
+          ]
+        },
+        "path": "Tags[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[0].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[0].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteTags",
+            "params": [
+              { "target": "Resources[]", "source": "identifier", "name": "ResourceId" },
+              { "target": "Tags[*].Key", "source": "identifier", "name": "Key" },
+              { "target": "Tags[*].Value", "source": "identifier", "name": "Value" }
+            ]
+          }
+        }
+      }
+    },
+    "Volume": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VolumeId"
+        }
+      ],
+      "shape": "Volume",
+      "load": {
+        "request": {
+          "operation": "DescribeVolumes",
+          "params": [
+            { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Volumes[0]"
+      },
+      "actions": {
+        "AttachToInstance": {
+          "request": {
+            "operation": "AttachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateSnapshot": {
+          "request": {
+            "operation": "CreateSnapshot",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SnapshotId" }
+            ],
+            "path": "@"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeStatus": {
+          "request": {
+            "operation": "DescribeVolumeStatus",
+            "params": [
+              { "target": "VolumeIds[0]", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachFromInstance": {
+          "request": {
+            "operation": "DetachVolume",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableIo": {
+          "request": {
+            "operation": "EnableVolumeIO",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVolumeAttribute",
+            "params": [
+              { "target": "VolumeId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Snapshots": {
+          "request": {
+            "operation": "DescribeSnapshots",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "volume-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Snapshot",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Snapshots[].SnapshotId" }
+            ],
+            "path": "Snapshots[]"
+          }
+        }
+      }
+    },
+    "Vpc": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcId"
+        }
+      ],
+      "shape": "Vpc",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcs",
+          "params": [
+            { "target": "VpcIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Vpcs[0]"
+      },
+      "actions": {
+        "AssociateDhcpOptions": {
+          "request": {
+            "operation": "AssociateDhcpOptions",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachClassicLinkInstance": {
+          "request": {
+            "operation": "AttachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "AttachInternetGateway": {
+          "request": {
+            "operation": "AttachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "CreateNetworkAcl": {
+          "request": {
+            "operation": "CreateNetworkAcl",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcl.NetworkAclId" }
+            ],
+            "path": "NetworkAcl"
+          }
+        },
+        "CreateRouteTable": {
+          "request": {
+            "operation": "CreateRouteTable",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTable.RouteTableId" }
+            ],
+            "path": "RouteTable"
+          }
+        },
+        "CreateSecurityGroup": {
+          "request": {
+            "operation": "CreateSecurityGroup",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "GroupId" }
+            ]
+          }
+        },
+        "CreateSubnet": {
+          "request": {
+            "operation": "CreateSubnet",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnet.SubnetId" }
+            ],
+            "path": "Subnet"
+          }
+        },
+        "CreateTags": {
+          "request": {
+            "operation": "CreateTags",
+            "params": [
+              { "target": "Resources[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Tag",
+            "identifiers": [
+              { "target": "ResourceId", "source": "identifier", "name": "Id" },
+              { "target": "Key", "source": "requestParameter", "path": "Tags[].Key" },
+              { "target": "Value", "source": "requestParameter", "path": "Tags[].Value" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DescribeAttribute": {
+          "request": {
+            "operation": "DescribeVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachClassicLinkInstance": {
+          "request": {
+            "operation": "DetachClassicLinkVpc",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DetachInternetGateway": {
+          "request": {
+            "operation": "DetachInternetGateway",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "DisableClassicLink": {
+          "request": {
+            "operation": "DisableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "EnableClassicLink": {
+          "request": {
+            "operation": "EnableVpcClassicLink",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "ModifyAttribute": {
+          "request": {
+            "operation": "ModifyVpcAttribute",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "RequestVpcPeeringConnection": {
+          "request": {
+            "operation": "CreateVpcPeeringConnection",
+            "params": [
+              { "target": "VpcId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnection.VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnection"
+          }
+        }
+      },
+      "waiters": {
+        "Available": {
+          "waiterName": "VpcAvailable",
+          "params": [
+            { "target": "VpcIds[]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "Exists": {
+          "waiterName": "VpcExists",
+          "params": [
+            { "target": "VpcIds[]", "source": "identifier", "name": "Id" }
+          ]
+        }
+      },
+      "has": {
+        "DhcpOptions": {
+          "resource": {
+            "type": "DhcpOptions",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "DhcpOptionsId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "AcceptedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "accepter-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "Instances": {
+          "request": {
+            "operation": "DescribeInstances",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Instance",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Reservations[].Instances[].InstanceId" }
+            ],
+            "path": "Reservations[].Instances[]"
+          }
+        },
+        "InternetGateways": {
+          "request": {
+            "operation": "DescribeInternetGateways",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "attachment.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "InternetGateway",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "InternetGateways[].InternetGatewayId" }
+            ],
+            "path": "InternetGateways[]"
+          }
+        },
+        "NetworkAcls": {
+          "request": {
+            "operation": "DescribeNetworkAcls",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkAcl",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkAcls[].NetworkAclId" }
+            ],
+            "path": "NetworkAcls[]"
+          }
+        },
+        "NetworkInterfaces": {
+          "request": {
+            "operation": "DescribeNetworkInterfaces",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "NetworkInterface",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "NetworkInterfaces[].NetworkInterfaceId" }
+            ],
+            "path": "NetworkInterfaces[]"
+          }
+        },
+        "RequestedVpcPeeringConnections": {
+          "request": {
+            "operation": "DescribeVpcPeeringConnections",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "requester-vpc-info.vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "VpcPeeringConnection",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "VpcPeeringConnections[].VpcPeeringConnectionId" }
+            ],
+            "path": "VpcPeeringConnections[]"
+          }
+        },
+        "RouteTables": {
+          "request": {
+            "operation": "DescribeRouteTables",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "RouteTable",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "RouteTables[].RouteTableId" }
+            ],
+            "path": "RouteTables[]"
+          }
+        },
+        "SecurityGroups": {
+          "request": {
+            "operation": "DescribeSecurityGroups",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "SecurityGroup",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "SecurityGroups[].GroupId" }
+            ],
+            "path": "SecurityGroups[]"
+          }
+        },
+        "Subnets": {
+          "request": {
+            "operation": "DescribeSubnets",
+            "params": [
+              { "target": "Filters[0].Name", "source": "string", "value": "vpc-id" },
+              { "target": "Filters[0].Values[0]", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Subnet",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Subnets[].SubnetId" }
+            ],
+            "path": "Subnets[]"
+          }
+        }
+      }
+    },
+    "VpcPeeringConnection": {
+      "identifiers": [
+        {
+          "name": "Id",
+          "memberName": "VpcPeeringConnectionId"
+        }
+      ],
+      "shape": "VpcPeeringConnection",
+      "load": {
+        "request": {
+          "operation": "DescribeVpcPeeringConnections",
+          "params": [
+            { "target": "VpcPeeringConnectionIds[0]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "VpcPeeringConnections[0]"
+      },
+      "actions": {
+        "Accept": {
+          "request": {
+            "operation": "AcceptVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Reject": {
+          "request": {
+            "operation": "RejectVpcPeeringConnection",
+            "params": [
+              { "target": "VpcPeeringConnectionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "VpcPeeringConnectionExists",
+          "params": [
+            { "target": "VpcPeeringConnectionIds[]", "source": "identifier", "name": "Id" }
+          ],
+          "path": "VpcPeeringConnections[0]"
+        }
+      },
+      "has": {
+        "AccepterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "AccepterVpcInfo.VpcId" }
+            ]
+          }
+        },
+        "RequesterVpc": {
+          "resource": {
+            "type": "Vpc",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "RequesterVpcInfo.VpcId" }
+            ]
+          }
+        }
+      }
+    },
+    "VpcAddress": {
+      "identifiers": [
+        {
+          "name": "AllocationId"
+        }
+      ],
+      "shape": "Address",
+      "load": {
+        "request": {
+          "operation": "DescribeAddresses",
+          "params": [
+            { "target": "AllocationIds[0]", "source": "identifier", "name": "AllocationId" }
+          ]
+        },
+        "path": "Addresses[0]"
+      },
+      "actions": {
+        "Associate": {
+          "request": {
+            "operation": "AssociateAddress",
+            "params": [
+              { "target": "AllocationId", "source": "identifier", "name": "AllocationId" }
+            ]
+          }
+        },
+        "Release": {
+          "request": {
+            "operation": "ReleaseAddress",
+            "params": [
+              { "target": "AllocationId", "source": "data", "path": "AllocationId" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Association": {
+          "resource": {
+            "type": "NetworkInterfaceAssociation",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "AssociationId" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/glacier/2012-06-01/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/glacier/2012-06-01/resources-1.json
new file mode 100644
index 00000000..d1ed48f4
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/glacier/2012-06-01/resources-1.json
@@ -0,0 +1,581 @@
+{
+  "service": {
+    "actions": {
+      "CreateVault": {
+        "request": {
+          "operation": "CreateVault",
+          "params": [
+            { "target": "accountId", "source": "string", "value": "-" }
+          ]
+        },
+        "resource": {
+          "type": "Vault",
+          "identifiers": [
+            { "target": "AccountId", "source": "requestParameter", "path": "accountId" },
+            { "target": "Name", "source": "requestParameter", "path": "vaultName" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "Account": {
+        "resource": {
+          "type": "Account",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "Vaults": {
+        "request": {
+          "operation": "ListVaults",
+          "params": [
+            { "target": "accountId", "source": "string", "value": "-" }
+          ]
+        },
+        "resource": {
+          "type": "Vault",
+          "identifiers": [
+            { "target": "AccountId", "source": "requestParameter", "path": "accountId" },
+            { "target": "Name", "source": "response", "path": "VaultList[].VaultName" }
+          ],
+          "path": "VaultList[]"
+        }
+      }
+    }
+  },
+  "resources": {
+    "Account": {
+      "identifiers": [
+        { "name": "Id" }
+      ],
+      "actions": {
+        "CreateVault": {
+          "request": {
+            "operation": "CreateVault",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Vault",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "Id" },
+              { "target": "Name", "source": "requestParameter", "path": "vaultName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vault": {
+          "resource": {
+            "type": "Vault",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "Id" },
+              { "target": "Name", "source": "input" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Vaults": {
+          "request": {
+            "operation": "ListVaults",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Vault",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "Id" },
+              { "target": "Name", "source": "response", "path": "VaultList[].VaultName" }
+            ],
+            "path": "VaultList[]"
+          }
+        }
+      }
+    },
+    "Archive": {
+      "identifiers": [
+        { "name": "AccountId" },
+        { "name": "VaultName" },
+        { "name": "Id" }
+      ],
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteArchive",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "VaultName" },
+              { "target": "archiveId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "InitiateArchiveRetrieval": {
+          "request": {
+            "operation": "InitiateJob",
+            "params": [
+              { "target": "vaultName", "source": "identifier", "name": "VaultName" },
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "jobParameters.Type", "source": "string", "value": "archive-retrieval" },
+              { "target": "jobParameters.ArchiveId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Job",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "jobId" },
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "VaultName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vault": {
+          "resource": {
+            "type": "Vault",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "Name", "source": "identifier", "name": "VaultName" }
+            ]
+          }
+        }
+      }
+    },
+    "Job": {
+      "identifiers": [
+        { "name": "AccountId" },
+        { "name": "VaultName" },
+        {
+          "name": "Id",
+          "memberName": "JobId"
+        }
+      ],
+      "shape": "GlacierJobDescription",
+      "load": {
+        "request": {
+          "operation": "DescribeJob",
+          "params": [
+            { "target": "accountId", "source": "identifier", "name": "AccountId" },
+            { "target": "vaultName", "source": "identifier", "name": "VaultName" },
+            { "target": "jobId", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "GetOutput": {
+          "request": {
+            "operation": "GetJobOutput",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "VaultName" },
+              { "target": "jobId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vault": {
+          "resource": {
+            "type": "Vault",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "Name", "source": "identifier", "name": "VaultName" }
+            ]
+          }
+        }
+      }
+    },
+    "MultipartUpload": {
+      "identifiers": [
+        { "name": "AccountId" },
+        { "name": "VaultName" },
+        {
+          "name": "Id",
+          "memberName": "MultipartUploadId"
+        }
+      ],
+      "shape": "UploadListElement",
+      "actions": {
+        "Abort": {
+          "request": {
+            "operation": "AbortMultipartUpload",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "VaultName" },
+              { "target": "uploadId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Complete": {
+          "request": {
+            "operation": "CompleteMultipartUpload",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "VaultName" },
+              { "target": "uploadId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Parts": {
+          "request": {
+            "operation": "ListParts",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "VaultName" },
+              { "target": "uploadId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "UploadPart": {
+          "request": {
+            "operation": "UploadMultipartPart",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "VaultName" },
+              { "target": "uploadId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vault": {
+          "resource": {
+            "type": "Vault",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "Name", "source": "identifier", "name": "VaultName" }
+            ]
+          }
+        }
+      }
+    },
+    "Notification": {
+      "identifiers": [
+        { "name": "AccountId" },
+        { "name": "VaultName" }
+      ],
+      "shape": "VaultNotificationConfig",
+      "load": {
+        "request": {
+          "operation": "GetVaultNotifications",
+          "params": [
+            { "target": "accountId", "source": "identifier", "name": "AccountId" },
+            { "target": "vaultName", "source": "identifier", "name": "VaultName" }
+          ]
+        },
+        "path": "vaultNotificationConfig"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteVaultNotifications",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "VaultName" }
+            ]
+          }
+        },
+        "Set": {
+          "request": {
+            "operation": "SetVaultNotifications",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "VaultName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Vault": {
+          "resource": {
+            "type": "Vault",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "Name", "source": "identifier", "name": "VaultName" }
+            ]
+          }
+        }
+      }
+    },
+    "Vault": {
+      "identifiers": [
+        { "name": "AccountId" },
+        {
+          "name": "Name",
+          "memberName": "VaultName"
+        }
+      ],
+      "shape": "DescribeVaultOutput",
+      "load": {
+        "request": {
+          "operation": "DescribeVault",
+          "params": [
+            { "target": "vaultName", "source": "identifier", "name": "Name" },
+            { "target": "accountId", "source": "identifier", "name": "AccountId" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Create": {
+          "request": {
+            "operation": "CreateVault",
+            "params": [
+              { "target": "vaultName", "source": "identifier", "name": "Name" },
+              { "target": "accountId", "source": "identifier", "name": "AccountId" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteVault",
+            "params": [
+              { "target": "vaultName", "source": "identifier", "name": "Name" },
+              { "target": "accountId", "source": "identifier", "name": "AccountId" }
+            ]
+          }
+        },
+        "InitiateInventoryRetrieval": {
+          "request": {
+            "operation": "InitiateJob",
+            "params": [
+              { "target": "vaultName", "source": "identifier", "name": "Name" },
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "jobParameters.Type", "source": "string", "value": "inventory-retrieval" }
+            ]
+          },
+          "resource": {
+            "type": "Job",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "jobId" },
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "InitiateMultipartUpload": {
+          "request": {
+            "operation": "InitiateMultipartUpload",
+            "params": [
+              { "target": "vaultName", "source": "identifier", "name": "Name" },
+              { "target": "accountId", "source": "identifier", "name": "AccountId" }
+            ]
+          },
+          "resource": {
+            "type": "MultipartUpload",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "uploadId" },
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "UploadArchive": {
+          "request": {
+            "operation": "UploadArchive",
+            "params": [
+              { "target": "vaultName", "source": "identifier", "name": "Name" },
+              { "target": "accountId", "source": "identifier", "name": "AccountId" }
+            ]
+          },
+          "resource": {
+            "type": "Archive",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "archiveId" },
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Account": {
+          "resource": {
+            "type": "Account",
+            "identifiers": [
+              { "target": "Id", "source": "identifier", "name": "AccountId" }
+            ]
+          }
+        },
+        "Archive": {
+          "resource": {
+            "type": "Archive",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "input" }
+            ]
+          }
+        },
+        "Job": {
+          "resource": {
+            "type": "Job",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "input" }
+            ]
+          }
+        },
+        "MultipartUpload": {
+          "resource": {
+            "type": "MultipartUpload",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "input" }
+            ]
+          }
+        },
+        "Notification": {
+          "resource": {
+            "type": "Notification",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "CompletedJobs": {
+          "request": {
+            "operation": "ListJobs",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "Name" },
+              { "target": "completed", "source": "string", "value": "true" }
+            ]
+          },
+          "resource": {
+            "type": "Job",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "response", "path": "JobList[].JobId" }
+            ],
+            "path": "JobList[]"
+          }
+        },
+        "FailedJobs": {
+          "request": {
+            "operation": "ListJobs",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "Name" },
+              { "target": "statuscode", "source": "string", "value": "Failed" }
+            ]
+          },
+          "resource": {
+            "type": "Job",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "response", "path": "JobList[].JobId" }
+            ],
+            "path": "JobList[]"
+          }
+        },
+        "Jobs": {
+          "request": {
+            "operation": "ListJobs",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Job",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "response", "path": "JobList[].JobId" }
+            ],
+            "path": "JobList[]"
+          }
+        },
+        "JobsInProgress": {
+          "request": {
+            "operation": "ListJobs",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "Name" },
+              { "target": "statuscode", "source": "string", "value": "InProgress" }
+            ]
+          },
+          "resource": {
+            "type": "Job",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "response", "path": "JobList[].JobId" }
+            ],
+            "path": "JobList[]"
+          }
+        },
+        "MultipartUplaods": {
+          "request": {
+            "operation": "ListMultipartUploads",
+            "params": [
+              { "target": "vaultName", "source": "identifier", "name": "Name" },
+              { "target": "accountId", "source": "identifier", "name": "AccountId" }
+            ]
+          },
+          "resource": {
+            "type": "MultipartUpload",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "response", "path": "UploadsList[].MultipartUploadId" }
+            ],
+            "path": "UploadsList[]"
+          }
+        },
+        "MultipartUploads": {
+          "request": {
+            "operation": "ListMultipartUploads",
+            "params": [
+              { "target": "vaultName", "source": "identifier", "name": "Name" },
+              { "target": "accountId", "source": "identifier", "name": "AccountId" }
+            ]
+          },
+          "resource": {
+            "type": "MultipartUpload",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "response", "path": "UploadsList[].MultipartUploadId" }
+            ],
+            "path": "UploadsList[]"
+          }
+        },
+        "SucceededJobs": {
+          "request": {
+            "operation": "ListJobs",
+            "params": [
+              { "target": "accountId", "source": "identifier", "name": "AccountId" },
+              { "target": "vaultName", "source": "identifier", "name": "Name" },
+              { "target": "statuscode", "source": "string", "value": "Succeeded" }
+            ]
+          },
+          "resource": {
+            "type": "Job",
+            "identifiers": [
+              { "target": "AccountId", "source": "identifier", "name": "AccountId" },
+              { "target": "VaultName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "response", "path": "JobList[].JobId" }
+            ],
+            "path": "JobList[]"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/iam/2010-05-08/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/iam/2010-05-08/resources-1.json
new file mode 100644
index 00000000..59d18556
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/iam/2010-05-08/resources-1.json
@@ -0,0 +1,1721 @@
+{
+  "service": {
+    "actions": {
+      "ChangePassword": {
+        "request": { "operation": "ChangePassword" }
+      },
+      "CreateAccountAlias": {
+        "request": { "operation": "CreateAccountAlias" }
+      },
+      "CreateAccountPasswordPolicy": {
+        "request": { "operation": "UpdateAccountPasswordPolicy" },
+        "resource": {
+          "type": "AccountPasswordPolicy",
+          "identifiers": [  ]
+        }
+      },
+      "CreateGroup": {
+        "request": { "operation": "CreateGroup" },
+        "resource": {
+          "type": "Group",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "GroupName" }
+          ],
+          "path": "Group"
+        }
+      },
+      "CreateInstanceProfile": {
+        "request": { "operation": "CreateInstanceProfile" },
+        "resource": {
+          "type": "InstanceProfile",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "InstanceProfileName" }
+          ],
+          "path": "InstanceProfile"
+        }
+      },
+      "CreatePolicy": {
+        "request": { "operation": "CreatePolicy" },
+        "resource": {
+          "type": "Policy",
+          "identifiers": [
+            { "target": "Arn", "source": "response", "path": "Policy.Arn" }
+          ]
+        }
+      },
+      "CreateRole": {
+        "request": { "operation": "CreateRole" },
+        "resource": {
+          "type": "Role",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "RoleName" }
+          ],
+          "path": "Role"
+        }
+      },
+      "CreateSamlProvider": {
+        "request": { "operation": "CreateSAMLProvider" },
+        "resource": {
+          "type": "SamlProvider",
+          "identifiers": [
+            { "target": "Arn", "source": "response", "path": "SAMLProviderArn" }
+          ]
+        }
+      },
+      "CreateServerCertificate": {
+        "request": { "operation": "UploadServerCertificate" },
+        "resource": {
+          "type": "ServerCertificate",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "ServerCertificateName" }
+          ]
+        }
+      },
+      "CreateSigningCertificate": {
+        "request": { "operation": "UploadSigningCertificate" },
+        "resource": {
+          "type": "SigningCertificate",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Certificate.CertificateId" }
+          ],
+          "path": "Certificate"
+        }
+      },
+      "CreateUser": {
+        "request": { "operation": "CreateUser" },
+        "resource": {
+          "type": "User",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "UserName" }
+          ],
+          "path": "User"
+        }
+      },
+      "CreateVirtualMfaDevice": {
+        "request": { "operation": "CreateVirtualMFADevice" },
+        "resource": {
+          "type": "VirtualMfaDevice",
+          "identifiers": [
+            { "target": "SerialNumber", "source": "response", "path": "VirtualMFADevice.SerialNumber" }
+          ],
+          "path": "VirtualMFADevice"
+        }
+      }
+    },
+    "has": {
+      "AccountPasswordPolicy": {
+        "resource": {
+          "type": "AccountPasswordPolicy",
+          "identifiers": [  ]
+        }
+      },
+      "AccountSummary": {
+        "resource": {
+          "type": "AccountSummary",
+          "identifiers": [  ]
+        }
+      },
+      "CurrentUser": {
+        "resource": {
+          "type": "CurrentUser",
+          "identifiers": [  ]
+        }
+      },
+      "Group": {
+        "resource": {
+          "type": "Group",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "InstanceProfile": {
+        "resource": {
+          "type": "InstanceProfile",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "Policy": {
+        "resource": {
+          "type": "Policy",
+          "identifiers": [
+            { "target": "PolicyArn", "source": "input" }
+          ]
+        }
+      },
+      "Role": {
+        "resource": {
+          "type": "Role",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "SamlProvider": {
+        "resource": {
+          "type": "SamlProvider",
+          "identifiers": [
+            { "target": "Arn", "source": "input" }
+          ]
+        }
+      },
+      "ServerCertificate": {
+        "resource": {
+          "type": "ServerCertificate",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "User": {
+        "resource": {
+          "type": "User",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      },
+      "VirtualMfaDevice": {
+        "resource": {
+          "type": "VirtualMfaDevice",
+          "identifiers": [
+            { "target": "SerialNumber", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "Groups": {
+        "request": { "operation": "ListGroups" },
+        "resource": {
+          "type": "Group",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "Groups[].GroupName" }
+          ],
+          "path": "Groups[]"
+        }
+      },
+      "InstanceProfiles": {
+        "request": { "operation": "ListInstanceProfiles" },
+        "resource": {
+          "type": "InstanceProfile",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "InstanceProfiles[].InstanceProfileName" }
+          ],
+          "path": "InstanceProfiles[]"
+        }
+      },
+      "Policies": {
+        "request": { "operation": "ListPolicies" },
+        "resource": {
+          "type": "Policy",
+          "identifiers": [
+            { "target": "Arn", "source": "response", "path": "Policies[].Arn" }
+          ],
+          "path": "Policies[]"
+        }
+      },
+      "Roles": {
+        "request": { "operation": "ListRoles" },
+        "resource": {
+          "type": "Role",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "Roles[].RoleName" }
+          ],
+          "path": "Roles[]"
+        }
+      },
+      "SamlProviders": {
+        "request": { "operation": "ListSAMLProviders" },
+        "resource": {
+          "type": "SamlProvider",
+          "identifiers": [
+            { "target": "Arn", "source": "response", "path": "SAMLProviderList[].Arn" }
+          ]
+        }
+      },
+      "ServerCertificates": {
+        "request": { "operation": "ListServerCertificates" },
+        "resource": {
+          "type": "ServerCertificate",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "ServerCertificateMetadataList[].ServerCertificateName" }
+          ]
+        }
+      },
+      "Users": {
+        "request": { "operation": "ListUsers" },
+        "resource": {
+          "type": "User",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "Users[].UserName" }
+          ],
+          "path": "Users[]"
+        }
+      },
+      "VirtualMfaDevices": {
+        "request": { "operation": "ListVirtualMFADevices" },
+        "resource": {
+          "type": "VirtualMfaDevice",
+          "identifiers": [
+            { "target": "SerialNumber", "source": "response", "path": "VirtualMFADevices[].SerialNumber" }
+          ],
+          "path": "VirtualMFADevices[]"
+        }
+      }
+    }
+  },
+  "resources": {
+    "AccessKey": {
+      "identifiers": [
+        {
+          "name": "UserName",
+          "memberName": "UserName"
+        },
+        {
+          "name": "Id",
+          "memberName": "AccessKeyId"
+        }
+      ],
+      "shape": "AccessKeyMetadata",
+      "actions": {
+        "Activate": {
+          "request": {
+            "operation": "UpdateAccessKey",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "AccessKeyId", "source": "identifier", "name": "Id" },
+              { "target": "Status", "source": "string", "value": "Active" }
+            ]
+          }
+        },
+        "Deactivate": {
+          "request": {
+            "operation": "UpdateAccessKey",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "AccessKeyId", "source": "identifier", "name": "Id" },
+              { "target": "Status", "source": "string", "value": "Inactive" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteAccessKey",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "AccessKeyId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "User": {
+          "resource": {
+            "type": "User",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "UserName" }
+            ]
+          }
+        }
+      }
+    },
+    "AccessKeyPair": {
+      "identifiers": [
+        {
+          "name": "UserName",
+          "memberName": "UserName"
+        },
+        {
+          "name": "Id",
+          "memberName": "AccessKeyId"
+        },
+        {
+          "name": "Secret",
+          "memberName": "SecretAccessKey"
+        }
+      ],
+      "shape": "AccessKey",
+      "actions": {
+        "Activate": {
+          "request": {
+            "operation": "UpdateAccessKey",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "AccessKeyId", "source": "identifier", "name": "Id" },
+              { "target": "Status", "source": "string", "value": "Active" }
+            ]
+          }
+        },
+        "Deactivate": {
+          "request": {
+            "operation": "UpdateAccessKey",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "AccessKeyId", "source": "identifier", "name": "Id" },
+              { "target": "Status", "source": "string", "value": "Inactive" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteAccessKey",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "AccessKeyId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      }
+    },
+    "AccountPasswordPolicy": {
+      "identifiers": [  ],
+      "shape": "PasswordPolicy",
+      "load": {
+        "request": { "operation": "GetAccountPasswordPolicy" },
+        "path": "PasswordPolicy"
+      },
+      "actions": {
+        "Delete": {
+          "request": { "operation": "DeleteAccountPasswordPolicy" }
+        },
+        "Update": {
+          "request": { "operation": "UpdateAccountPasswordPolicy" }
+        }
+      }
+    },
+    "AccountSummary": {
+      "identifiers": [  ],
+      "shape": "GetAccountSummaryResponse",
+      "load": {
+        "request": { "operation": "GetAccountSummary" },
+        "path": "@"
+      }
+    },
+    "AssumeRolePolicy": {
+      "identifiers": [
+        { "name": "RoleName" }
+      ],
+      "actions": {
+        "Update": {
+          "request": {
+            "operation": "UpdateAssumeRolePolicy",
+            "params": [
+              { "target": "RoleName", "source": "identifier", "name": "RoleName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Role": {
+          "resource": {
+            "type": "Role",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "RoleName" }
+            ]
+          }
+        }
+      }
+    },
+    "CurrentUser": {
+      "identifiers": [  ],
+      "shape": "User",
+      "load": {
+        "request": { "operation": "GetUser" },
+        "path": "User"
+      },
+      "has": {
+        "User": {
+          "resource": {
+            "type": "User",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "UserName" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "AccessKeys": {
+          "request": { "operation": "ListAccessKeys" },
+          "resource": {
+            "type": "AccessKey",
+            "identifiers": [
+              { "target": "UserName", "source": "response", "path": "AccessKeyMetadata[].UserName" },
+              { "target": "Id", "source": "response", "path": "AccessKeyMetadata[].AccessKeyId" }
+            ],
+            "path": "AccessKeyMetadata[]"
+          }
+        },
+        "MfaDevices": {
+          "request": { "operation": "ListMFADevices" },
+          "resource": {
+            "type": "MfaDevice",
+            "identifiers": [
+              { "target": "UserName", "source": "response", "path": "MFADevices[].UserName" },
+              { "target": "SerialNumber", "source": "response", "path": "MFADevices[].SerialNumber" }
+            ],
+            "path": "MFADevices[]"
+          }
+        },
+        "SigningCertificates": {
+          "request": { "operation": "ListSigningCertificates" },
+          "resource": {
+            "type": "SigningCertificate",
+            "identifiers": [
+              { "target": "UserName", "source": "response", "path": "Certificates[].UserName" },
+              { "target": "Id", "source": "response", "path": "Certificates[].CertificateId" }
+            ],
+            "path": "Certificates[]"
+          }
+        }
+      }
+    },
+    "Group": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "GroupName"
+        }
+      ],
+      "shape": "Group",
+      "load": {
+        "request": {
+          "operation": "GetGroup",
+          "params": [
+            { "target": "GroupName", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "Group"
+      },
+      "actions": {
+        "AddUser": {
+          "request": {
+            "operation": "AddUserToGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "AttachPolicy": {
+          "request": {
+            "operation": "AttachGroupPolicy",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Create": {
+          "request": {
+            "operation": "CreateGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Group",
+            "identifiers": [
+              { "target": "Name", "source": "requestParameter", "path": "GroupName" }
+            ],
+            "path": "Group"
+          }
+        },
+        "CreatePolicy": {
+          "request": {
+            "operation": "PutGroupPolicy",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "GroupPolicy",
+            "identifiers": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" },
+              { "target": "Name", "source": "requestParameter", "path": "PolicyName" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "DetachPolicy": {
+          "request": {
+            "operation": "DetachGroupPolicy",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "RemoveUser": {
+          "request": {
+            "operation": "RemoveUserFromGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Update": {
+          "request": {
+            "operation": "UpdateGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Group",
+            "identifiers": [
+              { "target": "Name", "source": "requestParameter", "path": "NewGroupName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Policy": {
+          "resource": {
+            "type": "GroupPolicy",
+            "identifiers": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" },
+              { "target": "Name", "source": "input" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "AttachedPolicies": {
+          "request": {
+            "operation": "ListAttachedGroupPolicies",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Policy",
+            "identifiers": [
+              { "target": "Arn", "source": "response", "path": "AttachedPolicies[].PolicyArn" }
+            ]
+          }
+        },
+        "Policies": {
+          "request": {
+            "operation": "ListGroupPolicies",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "GroupPolicy",
+            "identifiers": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" },
+              { "target": "Name", "source": "response", "path": "PolicyNames[]" }
+            ]
+          }
+        },
+        "Users": {
+          "request": {
+            "operation": "GetGroup",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "User",
+            "identifiers": [
+              { "target": "Name", "source": "response", "path": "Users[].UserName" }
+            ],
+            "path": "Users[]"
+          }
+        }
+      }
+    },
+    "GroupPolicy": {
+      "identifiers": [
+        {
+          "name": "GroupName",
+          "memberName": "GroupName"
+        },
+        {
+          "name": "Name",
+          "memberName": "PolicyName"
+        }
+      ],
+      "shape": "GetGroupPolicyResponse",
+      "load": {
+        "request": {
+          "operation": "GetGroupPolicy",
+          "params": [
+            { "target": "GroupName", "source": "identifier", "name": "GroupName" },
+            { "target": "PolicyName", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteGroupPolicy",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "GroupName" },
+              { "target": "PolicyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Put": {
+          "request": {
+            "operation": "PutGroupPolicy",
+            "params": [
+              { "target": "GroupName", "source": "identifier", "name": "GroupName" },
+              { "target": "PolicyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Group": {
+          "resource": {
+            "type": "Group",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "GroupName" }
+            ]
+          }
+        }
+      }
+    },
+    "InstanceProfile": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "InstanceProfileName"
+        }
+      ],
+      "shape": "InstanceProfile",
+      "load": {
+        "request": {
+          "operation": "GetInstanceProfile",
+          "params": [
+            { "target": "InstanceProfileName", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "InstanceProfile"
+      },
+      "actions": {
+        "AddRole": {
+          "request": {
+            "operation": "AddRoleToInstanceProfile",
+            "params": [
+              { "target": "InstanceProfileName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteInstanceProfile",
+            "params": [
+              { "target": "InstanceProfileName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "RemoveRole": {
+          "request": {
+            "operation": "RemoveRoleFromInstanceProfile",
+            "params": [
+              { "target": "InstanceProfileName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Roles": {
+          "resource": {
+            "type": "Role",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "Roles[].RoleName" }
+            ],
+            "path": "Roles[]"
+          }
+        }
+      }
+    },
+    "LoginProfile": {
+      "identifiers": [
+        {
+          "name": "UserName",
+          "memberName": "UserName"
+        }
+      ],
+      "shape": "LoginProfile",
+      "load": {
+        "request": {
+          "operation": "GetLoginProfile",
+          "params": [
+            { "target": "UserName", "source": "identifier", "name": "UserName" }
+          ]
+        },
+        "path": "LoginProfile"
+      },
+      "actions": {
+        "Create": {
+          "request": {
+            "operation": "CreateLoginProfile",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" }
+            ]
+          },
+          "resource": {
+            "type": "LoginProfile",
+            "identifiers": [
+              { "target": "UserName", "source": "response", "path": "LoginProfile.UserName" }
+            ],
+            "path": "LoginProfile"
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteLoginProfile",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" }
+            ]
+          }
+        },
+        "Update": {
+          "request": {
+            "operation": "UpdateLoginProfile",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "User": {
+          "resource": {
+            "type": "User",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "UserName" }
+            ]
+          }
+        }
+      }
+    },
+    "MfaDevice": {
+      "identifiers": [
+        {
+          "name": "UserName",
+          "memberName": "UserName"
+        },
+        {
+          "name": "SerialNumber",
+          "memberName": "SerialNumber"
+        }
+      ],
+      "shape": "MFADevice",
+      "actions": {
+        "Associate": {
+          "request": {
+            "operation": "EnableMFADevice",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "SerialNumber", "source": "identifier", "name": "SerialNumber" }
+            ]
+          }
+        },
+        "Disassociate": {
+          "request": {
+            "operation": "DeactivateMFADevice",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "SerialNumber", "source": "identifier", "name": "SerialNumber" }
+            ]
+          }
+        },
+        "Resync": {
+          "request": {
+            "operation": "ResyncMFADevice",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "SerialNumber", "source": "identifier", "name": "SerialNumber" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "User": {
+          "resource": {
+            "type": "User",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "UserName" }
+            ]
+          }
+        }
+      }
+    },
+    "Policy": {
+      "identifiers": [
+        {
+          "name": "Arn",
+          "memberName": "Arn"
+        }
+      ],
+      "shape": "Policy",
+      "load": {
+        "request": {
+          "operation": "GetPolicy",
+          "params": [
+            { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
+          ]
+        },
+        "path": "Policy"
+      },
+      "actions": {
+        "AttachGroup": {
+          "request": {
+            "operation": "AttachGroupPolicy",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "AttachRole": {
+          "request": {
+            "operation": "AttachRolePolicy",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "AttachUser": {
+          "request": {
+            "operation": "AttachUserPolicy",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "CreateVersion": {
+          "request": {
+            "operation": "CreatePolicyVersion",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
+            ]
+          },
+          "resource": {
+            "type": "PolicyVersion",
+            "identifiers": [
+              { "target": "Arn", "source": "identifier", "name": "Arn" },
+              { "target": "VersionId", "source": "response", "path": "PolicyVersion.VersionId" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeletePolicy",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "DetachGroup": {
+          "request": {
+            "operation": "DetachGroupPolicy",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "DetachRole": {
+          "request": {
+            "operation": "DetachRolePolicy",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "DetachUser": {
+          "request": {
+            "operation": "DetachUserPolicy",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "DefaultVersion": {
+          "resource": {
+            "type": "PolicyVersion",
+            "identifiers": [
+              { "target": "Arn", "source": "identifier", "name": "Arn" },
+              { "target": "VersionId", "source": "data", "path": "DefaultVersionId" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "AttachedGroups": {
+          "request": {
+            "operation": "ListEntitiesForPolicy",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" },
+              { "target": "EntityFilter", "source": "string", "value": "Group" }
+            ]
+          },
+          "resource": {
+            "type": "Group",
+            "identifiers": [
+              { "target": "Name", "source": "response", "path": "PolicyGroups[].GroupName" }
+            ]
+          }
+        },
+        "AttachedRoles": {
+          "request": {
+            "operation": "ListEntitiesForPolicy",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" },
+              { "target": "EntityFilter", "source": "string", "value": "Role" }
+            ]
+          },
+          "resource": {
+            "type": "Role",
+            "identifiers": [
+              { "target": "Name", "source": "response", "path": "PolicyRoles[].RoleName" }
+            ]
+          }
+        },
+        "AttachedUsers": {
+          "request": {
+            "operation": "ListEntitiesForPolicy",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" },
+              { "target": "EntityFilter", "source": "string", "value": "User" }
+            ]
+          },
+          "resource": {
+            "type": "User",
+            "identifiers": [
+              { "target": "Name", "source": "response", "path": "PolicyUsers[].UserName" }
+            ]
+          }
+        },
+        "Versions": {
+          "request": {
+            "operation": "ListPolicyVersions",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" }
+            ]
+          },
+          "resource": {
+            "type": "PolicyVersion",
+            "identifiers": [
+              { "target": "Arn", "source": "identifier", "name": "Arn" },
+              { "target": "VersionId", "source": "response", "path": "Versions[].VersionId" }
+            ],
+            "path": "Versions[]"
+          }
+        }
+      }
+    },
+    "PolicyVersion": {
+      "identifiers": [
+        { "name": "Arn" },
+        { "name": "VersionId" }
+      ],
+      "shape": "PolicyVersion",
+      "load": {
+        "request": {
+          "operation": "GetPolicyVersion",
+          "params": [
+            { "target": "PolicyArn", "source": "identifier", "name": "Arn" },
+            { "target": "VersionId", "source": "identifier", "name": "VersionId" }
+          ]
+        },
+        "path": "PolicyVersion"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeletePolicyVersion",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" },
+              { "target": "VersionId", "source": "identifier", "name": "VersionId" }
+            ]
+          }
+        },
+        "SetAsDefault": {
+          "request": {
+            "operation": "SetDefaultPolicyVersion",
+            "params": [
+              { "target": "PolicyArn", "source": "identifier", "name": "Arn" },
+              { "target": "VersionId", "source": "identifier", "name": "VersionId" }
+            ]
+          }
+        }
+      }
+    },
+    "Role": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "RoleName"
+        }
+      ],
+      "shape": "Role",
+      "load": {
+        "request": {
+          "operation": "GetRole",
+          "params": [
+            { "target": "RoleName", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "Role"
+      },
+      "actions": {
+        "AttachPolicy": {
+          "request": {
+            "operation": "AttachRolePolicy",
+            "params": [
+              { "target": "RoleName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteRole",
+            "params": [
+              { "target": "RoleName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "DetachPolicy": {
+          "request": {
+            "operation": "DetachRolePolicy",
+            "params": [
+              { "target": "RoleName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "AssumeRolePolicy": {
+          "resource": {
+            "type": "AssumeRolePolicy",
+            "identifiers": [
+              { "target": "RoleName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Policy": {
+          "resource": {
+            "type": "RolePolicy",
+            "identifiers": [
+              { "target": "RoleName", "source": "identifier", "name": "Name" },
+              { "target": "Name", "source": "input" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "AttachedPolicies": {
+          "request": {
+            "operation": "ListAttachedRolePolicies",
+            "params": [
+              { "target": "RoleName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Policy",
+            "identifiers": [
+              { "target": "Arn", "source": "response", "path": "AttachedPolicies[].PolicyArn" }
+            ]
+          }
+        },
+        "InstanceProfiles": {
+          "request": {
+            "operation": "ListInstanceProfilesForRole",
+            "params": [
+              { "target": "RoleName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "InstanceProfile",
+            "identifiers": [
+              { "target": "Name", "source": "response", "path": "InstanceProfiles[].InstanceProfileName" }
+            ],
+            "path": "InstanceProfiles[]"
+          }
+        },
+        "Policies": {
+          "request": {
+            "operation": "ListRolePolicies",
+            "params": [
+              { "target": "RoleName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "RolePolicy",
+            "identifiers": [
+              { "target": "RoleName", "source": "identifier", "name": "Name" },
+              { "target": "Name", "source": "response", "path": "PolicyNames[]" }
+            ]
+          }
+        }
+      }
+    },
+    "RolePolicy": {
+      "identifiers": [
+        {
+          "name": "RoleName",
+          "memberName": "RoleName"
+        },
+        {
+          "name": "Name",
+          "memberName": "PolicyName"
+        }
+      ],
+      "shape": "GetRolePolicyResponse",
+      "load": {
+        "request": {
+          "operation": "GetRolePolicy",
+          "params": [
+            { "target": "RoleName", "source": "identifier", "name": "RoleName" },
+            { "target": "PolicyName", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteRolePolicy",
+            "params": [
+              { "target": "RoleName", "source": "identifier", "name": "RoleName" },
+              { "target": "PolicyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Put": {
+          "request": {
+            "operation": "PutRolePolicy",
+            "params": [
+              { "target": "RoleName", "source": "identifier", "name": "RoleName" },
+              { "target": "PolicyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Role": {
+          "resource": {
+            "type": "Role",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "RoleName" }
+            ]
+          }
+        }
+      }
+    },
+    "SamlProvider": {
+      "identifiers": [
+        { "name": "Arn" }
+      ],
+      "shape": "GetSAMLProviderResponse",
+      "load": {
+        "request": {
+          "operation": "GetSAMLProvider",
+          "params": [
+            { "target": "SAMLProviderArn", "source": "identifier", "name": "Arn" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteSAMLProvider",
+            "params": [
+              { "target": "SAMLProviderArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "Update": {
+          "request": {
+            "operation": "UpdateSAMLProvider",
+            "params": [
+              { "target": "SAMLProviderArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        }
+      }
+    },
+    "ServerCertificate": {
+      "identifiers": [
+        { "name": "Name" }
+      ],
+      "shape": "ServerCertificate",
+      "load": {
+        "request": {
+          "operation": "GetServerCertificate",
+          "params": [
+            { "target": "ServerCertificateName", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "ServerCertificate"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteServerCertificate",
+            "params": [
+              { "target": "ServerCertificateName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Update": {
+          "request": {
+            "operation": "UpdateServerCertificate",
+            "params": [
+              { "target": "ServerCertificateName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "ServerCertificate",
+            "identifiers": [
+              { "target": "Name", "source": "requestParameter", "path": "NewServerCertificateName" }
+            ]
+          }
+        }
+      }
+    },
+    "SigningCertificate": {
+      "identifiers": [
+        {
+          "name": "UserName",
+          "memberName": "UserName"
+        },
+        {
+          "name": "Id",
+          "memberName": "CertificateId"
+        }
+      ],
+      "shape": "SigningCertificate",
+      "actions": {
+        "Activate": {
+          "request": {
+            "operation": "UpdateSigningCertificate",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "CertificateId", "source": "identifier", "name": "Id" },
+              { "target": "Status", "source": "string", "value": "Active" }
+            ]
+          }
+        },
+        "Deactivate": {
+          "request": {
+            "operation": "UpdateSigningCertificate",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "CertificateId", "source": "identifier", "name": "Id" },
+              { "target": "Status", "source": "string", "value": "Inactive" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteSigningCertificate",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "CertificateId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "User": {
+          "resource": {
+            "type": "User",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "UserName" }
+            ]
+          }
+        }
+      }
+    },
+    "User": {
+      "identifiers": [
+        {
+          "name": "Name",
+          "memberName": "UserName"
+        }
+      ],
+      "shape": "User",
+      "load": {
+        "request": {
+          "operation": "GetUser",
+          "params": [
+            { "target": "UserName", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "User"
+      },
+      "actions": {
+        "AddGroup": {
+          "request": {
+            "operation": "AddUserToGroup",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "AttachPolicy": {
+          "request": {
+            "operation": "AttachUserPolicy",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Create": {
+          "request": {
+            "operation": "CreateUser",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "User",
+            "identifiers": [
+              { "target": "Name", "source": "requestParameter", "path": "UserName" }
+            ],
+            "path": "User"
+          }
+        },
+        "CreateAccessKeyPair": {
+          "request": {
+            "operation": "CreateAccessKey",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "AccessKeyPair",
+            "identifiers": [
+              { "target": "UserName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "response", "path": "AccessKey.AccessKeyId" },
+              { "target": "Secret", "source": "response", "path": "AccessKey.SecretAccessKey" }
+            ],
+            "path": "AccessKey"
+          }
+        },
+        "CreateLoginProfile": {
+          "request": {
+            "operation": "CreateLoginProfile",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "LoginProfile",
+            "identifiers": [
+              { "target": "UserName", "source": "response", "path": "LoginProfile.UserName" }
+            ],
+            "path": "LoginProfile"
+          }
+        },
+        "CreatePolicy": {
+          "request": {
+            "operation": "PutUserPolicy",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "UserPolicy",
+            "identifiers": [
+              { "target": "UserName", "source": "identifier", "name": "Name" },
+              { "target": "Name", "source": "requestParameter", "path": "PolicyName" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteUser",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "DetachPolicy": {
+          "request": {
+            "operation": "DetachUserPolicy",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "EnableMfa": {
+          "request": {
+            "operation": "EnableMFADevice",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "MfaDevice",
+            "identifiers": [
+              { "target": "UserName", "source": "identifier", "name": "Name" },
+              { "target": "SerialNumber", "source": "requestParameter", "path": "SerialNumber" }
+            ]
+          }
+        },
+        "RemoveGroup": {
+          "request": {
+            "operation": "RemoveUserFromGroup",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Update": {
+          "request": {
+            "operation": "UpdateUser",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "User",
+            "identifiers": [
+              { "target": "Name", "source": "requestParameter", "path": "NewUserName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "AccessKey": {
+          "resource": {
+            "type": "AccessKey",
+            "identifiers": [
+              { "target": "UserName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "input" }
+            ]
+          }
+        },
+        "LoginProfile": {
+          "resource": {
+            "type": "LoginProfile",
+            "identifiers": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "MfaDevice": {
+          "resource": {
+            "type": "MfaDevice",
+            "identifiers": [
+              { "target": "UserName", "source": "identifier", "name": "Name" },
+              { "target": "SerialNumber", "source": "input" }
+            ]
+          }
+        },
+        "Policy": {
+          "resource": {
+            "type": "UserPolicy",
+            "identifiers": [
+              { "target": "UserName", "source": "identifier", "name": "Name" },
+              { "target": "Name", "source": "input" }
+            ]
+          }
+        },
+        "SigningCertificate": {
+          "resource": {
+            "type": "SigningCertificate",
+            "identifiers": [
+              { "target": "UserName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "input" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "AccessKeys": {
+          "request": {
+            "operation": "ListAccessKeys",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "AccessKey",
+            "identifiers": [
+              { "target": "UserName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "response", "path": "AccessKeyMetadata[].AccessKeyId" }
+            ],
+            "path": "AccessKeyMetadata[]"
+          }
+        },
+        "AttachedPolicies": {
+          "request": {
+            "operation": "ListAttachedUserPolicies",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Policy",
+            "identifiers": [
+              { "target": "Arn", "source": "response", "path": "AttachedPolicies[].PolicyArn" }
+            ]
+          }
+        },
+        "Groups": {
+          "request": {
+            "operation": "ListGroupsForUser",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Group",
+            "identifiers": [
+              { "target": "Name", "source": "response", "path": "Groups[].GroupName" }
+            ],
+            "path": "Groups[]"
+          }
+        },
+        "MfaDevices": {
+          "request": {
+            "operation": "ListMFADevices",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "MfaDevice",
+            "identifiers": [
+              { "target": "UserName", "source": "identifier", "name": "Name" },
+              { "target": "SerialNumber", "source": "response", "path": "MFADevices[].SerialNumber" }
+            ],
+            "path": "MFADevices[]"
+          }
+        },
+        "Policies": {
+          "request": {
+            "operation": "ListUserPolicies",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "UserPolicy",
+            "identifiers": [
+              { "target": "UserName", "source": "identifier", "name": "Name" },
+              { "target": "Name", "source": "response", "path": "PolicyNames[]" }
+            ]
+          }
+        },
+        "SigningCertificates": {
+          "request": {
+            "operation": "ListSigningCertificates",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "SigningCertificate",
+            "identifiers": [
+              { "target": "UserName", "source": "identifier", "name": "Name" },
+              { "target": "Id", "source": "response", "path": "Certificates[].CertificateId" }
+            ],
+            "path": "Certificates[]"
+          }
+        }
+      }
+    },
+    "UserPolicy": {
+      "identifiers": [
+        {
+          "name": "UserName",
+          "memberName": "UserName"
+        },
+        {
+          "name": "Name",
+          "memberName": "PolicyName"
+        }
+      ],
+      "shape": "GetUserPolicyResponse",
+      "load": {
+        "request": {
+          "operation": "GetUserPolicy",
+          "params": [
+            { "target": "UserName", "source": "identifier", "name": "UserName" },
+            { "target": "PolicyName", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteUserPolicy",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "PolicyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Put": {
+          "request": {
+            "operation": "PutUserPolicy",
+            "params": [
+              { "target": "UserName", "source": "identifier", "name": "UserName" },
+              { "target": "PolicyName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "User": {
+          "resource": {
+            "type": "User",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "UserName" }
+            ]
+          }
+        }
+      }
+    },
+    "VirtualMfaDevice": {
+      "identifiers": [
+        {
+          "name": "SerialNumber",
+          "memberName": "SerialNumber"
+        }
+      ],
+      "shape": "VirtualMFADevice",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteVirtualMFADevice",
+            "params": [
+              { "target": "SerialNumber", "source": "identifier", "name": "SerialNumber" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "User": {
+          "resource": {
+            "type": "User",
+            "identifiers": [
+              { "target": "Name", "source": "data", "path": "User.UserName" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/opsworks/2013-02-18/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/opsworks/2013-02-18/resources-1.json
new file mode 100644
index 00000000..0435b13b
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/opsworks/2013-02-18/resources-1.json
@@ -0,0 +1,173 @@
+{
+  "service": {
+    "actions": {
+      "CreateStack": {
+        "request": { "operation": "CreateStack" },
+        "resource": {
+          "type": "Stack",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "StackId" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "Layer": {
+        "resource": {
+          "type": "Layer",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      },
+      "Stack": {
+        "resource": {
+          "type": "Stack",
+          "identifiers": [
+            { "target": "Id", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "Stacks": {
+        "request": { "operation": "DescribeStacks" },
+        "resource": {
+          "type": "Stack",
+          "identifiers": [
+            { "target": "Id", "source": "response", "path": "Stacks[].StackId" }
+          ],
+          "path": "Stacks[]"
+        }
+      }
+    }
+  },
+  "resources": {
+    "Layer": {
+      "identifiers": [
+        { "name": "Id" }
+      ],
+      "shape": "Layer",
+      "load": {
+        "request": {
+          "operation": "DescribeLayers",
+          "params": [
+            { "target": "LayerIds[]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Layers[0]"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteLayer",
+            "params": [
+              { "target": "LayerId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Stack": {
+          "resource": {
+            "type": "Stack",
+            "identifiers": [
+              { "target": "Id", "source": "data", "path": "StackId" }
+            ]
+          }
+        }
+      }
+    },
+    "Stack": {
+      "identifiers": [
+        { "name": "Id" }
+      ],
+      "shape": "Stack",
+      "load": {
+        "request": {
+          "operation": "DescribeStacks",
+          "params": [
+            { "target": "StackIds[]", "source": "identifier", "name": "Id" }
+          ]
+        },
+        "path": "Stacks[0]"
+      },
+      "actions": {
+        "CreateLayer": {
+          "request": {
+            "operation": "CreateLayer",
+            "params": [
+              { "target": "StackId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Layer",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "LayerId" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteStack",
+            "params": [
+              { "target": "StackId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Summary": {
+          "resource": {
+            "type": "StackSummary",
+            "identifiers": [
+              { "target": "StackId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Layers": {
+          "request": {
+            "operation": "DescribeLayers",
+            "params": [
+              { "target": "StackId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Layer",
+            "identifiers": [
+              { "target": "Id", "source": "response", "path": "Layers[].LayerId" }
+            ],
+            "path": "Layers[]"
+          }
+        }
+      }
+    },
+    "StackSummary": {
+      "identifiers": [
+        { "name": "StackId" }
+      ],
+      "shape": "StackSummary",
+      "load": {
+        "request": {
+          "operation": "DescribeStackSummary",
+          "params": [
+            { "target": "StackId", "source": "identifier", "name": "StackId" }
+          ]
+        },
+        "path": "StackSummary"
+      },
+      "has": {
+        "Stack": {
+          "resource": {
+            "type": "Stack",
+            "identifiers": [
+              { "target": "Id", "source": "identifier", "name": "StackId" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/s3/2006-03-01/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/s3/2006-03-01/resources-1.json
new file mode 100644
index 00000000..f1e88c63
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/s3/2006-03-01/resources-1.json
@@ -0,0 +1,1249 @@
+{
+  "service": {
+    "actions": {
+      "CreateBucket": {
+        "request": { "operation": "CreateBucket" },
+        "resource": {
+          "type": "Bucket",
+          "identifiers": [
+            { "target": "Name", "source": "requestParameter", "path": "Bucket" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "Bucket": {
+        "resource": {
+          "type": "Bucket",
+          "identifiers": [
+            { "target": "Name", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "Buckets": {
+        "request": { "operation": "ListBuckets" },
+        "resource": {
+          "type": "Bucket",
+          "identifiers": [
+            { "target": "Name", "source": "response", "path": "Buckets[].Name" }
+          ],
+          "path": "Buckets[]"
+        }
+      }
+    }
+  },
+  "resources": {
+    "Bucket": {
+      "identifiers": [
+        { "name": "Name" }
+      ],
+      "shape": "Bucket",
+      "actions": {
+        "Create": {
+          "request": {
+            "operation": "CreateBucket",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteBucket",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "DeleteObjects": {
+          "request": {
+            "operation": "DeleteObjects",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "PutObject": {
+          "request": {
+            "operation": "PutObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "Object",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" },
+              { "target": "Key", "source": "requestParameter", "path": "Key" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "BucketExists",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "Name" }
+          ]
+        },
+        "NotExists": {
+          "waiterName": "BucketNotExists",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "Name" }
+          ]
+        }
+      },
+      "has": {
+        "Acl": {
+          "resource": {
+            "type": "BucketAcl",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Cors": {
+          "resource": {
+            "type": "BucketCors",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Lifecycle": {
+          "resource": {
+            "type": "BucketLifecycle",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "LifecycleConfiguration": {
+          "resource": {
+            "type": "BucketLifecycleConfiguration",
+            "identifiers": [
+              {
+                "target": "BucketName",
+                "source": "identifier",
+                "name": "Name"
+              }
+            ]
+          }
+        },
+        "Logging": {
+          "resource": {
+            "type": "BucketLogging",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Notification": {
+          "resource": {
+            "type": "BucketNotification",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Object": {
+          "resource": {
+            "type": "Object",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" },
+              { "target": "Key", "source": "input" }
+            ]
+          }
+        },
+        "Policy": {
+          "resource": {
+            "type": "BucketPolicy",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "RequestPayment": {
+          "resource": {
+            "type": "BucketRequestPayment",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Tagging": {
+          "resource": {
+            "type": "BucketTagging",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Versioning": {
+          "resource": {
+            "type": "BucketVersioning",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        },
+        "Website": {
+          "resource": {
+            "type": "BucketWebsite",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "MultipartUploads": {
+          "request": {
+            "operation": "ListMultipartUploads",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "MultipartUpload",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" },
+              { "target": "ObjectKey", "source": "response", "path": "Uploads[].Key" },
+              { "target": "Id", "source": "response", "path": "Uploads[].UploadId" }
+            ],
+            "path": "Uploads[]"
+          }
+        },
+        "ObjectVersions": {
+          "request": {
+            "operation": "ListObjectVersions",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "ObjectVersion",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" },
+              { "target": "ObjectKey", "source": "response", "path": "[Versions,DeleteMarkers]|[].Key" },
+              { "target": "Id", "source": "response", "path": "[Versions,DeleteMarkers]|[].VersionId" }
+            ],
+            "path": "[Versions,DeleteMarkers]|[]"
+          }
+        },
+        "Objects": {
+          "request": {
+            "operation": "ListObjects",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "Name" }
+            ]
+          },
+          "resource": {
+            "type": "ObjectSummary",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "Name" },
+              { "target": "Key", "source": "response", "path": "Contents[].Key" }
+            ],
+            "path": "Contents[]"
+          }
+        }
+      }
+    },
+    "BucketAcl": {
+      "identifiers": [
+        { "name": "BucketName" }
+      ],
+      "shape": "GetBucketAclOutput",
+      "load": {
+        "request": {
+          "operation": "GetBucketAcl",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Put": {
+          "request": {
+            "operation": "PutBucketAcl",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      }
+    },
+    "BucketCors": {
+      "identifiers": [
+        { "name": "BucketName" }
+      ],
+      "shape": "GetBucketCorsOutput",
+      "load": {
+        "request": {
+          "operation": "GetBucketCors",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteBucketCors",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        },
+        "Put": {
+          "request": {
+            "operation": "PutBucketCors",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      }
+    },
+    "BucketLifecycle": {
+      "identifiers": [
+        { "name": "BucketName" }
+      ],
+      "shape": "GetBucketLifecycleOutput",
+      "load": {
+        "request": {
+          "operation": "GetBucketLifecycle",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteBucketLifecycle",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        },
+        "Put": {
+          "request": {
+            "operation": "PutBucketLifecycle",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      }
+    },
+    "BucketLifecycleConfiguration": {
+      "identifiers": [
+        {
+          "name": "BucketName"
+        }
+      ],
+      "shape": "GetBucketLifecycleConfigurationOutput",
+      "load": {
+        "request": {
+          "operation": "GetBucketLifecycleConfiguration",
+          "params": [
+            {
+              "target": "Bucket",
+              "source": "identifier",
+              "name": "BucketName"
+            }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteBucketLifecycle",
+            "params": [
+              {
+                "target": "Bucket",
+                "source": "identifier",
+                "name": "BucketName"
+              }
+            ]
+          }
+        },
+        "Put": {
+          "request": {
+            "operation": "PutBucketLifecycleConfiguration",
+            "params": [
+              {
+                "target": "Bucket",
+                "source": "identifier",
+                "name": "BucketName"
+              }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              {
+                "target": "Name",
+                "source": "identifier",
+                "name": "BucketName"
+              }
+            ]
+          }
+        }
+      }
+    },
+    "BucketLogging": {
+      "identifiers": [
+        { "name": "BucketName" }
+      ],
+      "shape": "GetBucketLoggingOutput",
+      "load": {
+        "request": {
+          "operation": "GetBucketLogging",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Put": {
+          "request": {
+            "operation": "PutBucketLogging",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      }
+    },
+    "BucketNotification": {
+      "identifiers": [
+        { "name": "BucketName" }
+      ],
+      "shape": "NotificationConfiguration",
+      "load": {
+        "request": {
+          "operation": "GetBucketNotificationConfiguration",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Put": {
+          "request": {
+            "operation": "PutBucketNotificationConfiguration",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      }
+    },
+    "BucketPolicy": {
+      "identifiers": [
+        { "name": "BucketName" }
+      ],
+      "shape": "GetBucketPolicyOutput",
+      "load": {
+        "request": {
+          "operation": "GetBucketPolicy",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteBucketPolicy",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        },
+        "Put": {
+          "request": {
+            "operation": "PutBucketPolicy",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      }
+    },
+    "BucketRequestPayment": {
+      "identifiers": [
+        { "name": "BucketName" }
+      ],
+      "shape": "GetBucketRequestPaymentOutput",
+      "load": {
+        "request": {
+          "operation": "GetBucketRequestPayment",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Put": {
+          "request": {
+            "operation": "PutBucketRequestPayment",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      }
+    },
+    "BucketTagging": {
+      "identifiers": [
+        { "name": "BucketName" }
+      ],
+      "shape": "GetBucketTaggingOutput",
+      "load": {
+        "request": {
+          "operation": "GetBucketTagging",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteBucketTagging",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        },
+        "Put": {
+          "request": {
+            "operation": "PutBucketTagging",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      }
+    },
+    "BucketVersioning": {
+      "identifiers": [
+        { "name": "BucketName" }
+      ],
+      "shape": "GetBucketVersioningOutput",
+      "load": {
+        "request": {
+          "operation": "GetBucketVersioning",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Enable": {
+          "request": {
+            "operation": "PutBucketVersioning",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "VersioningConfiguration.Status", "source": "string", "value": "Enabled" }
+            ]
+          }
+        },
+        "Put": {
+          "request": {
+            "operation": "PutBucketVersioning",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        },
+        "Suspend": {
+          "request": {
+            "operation": "PutBucketVersioning",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "VersioningConfiguration.Status", "source": "string", "value": "Suspended" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      }
+    },
+    "BucketWebsite": {
+      "identifiers": [
+        { "name": "BucketName" }
+      ],
+      "shape": "GetBucketWebsiteOutput",
+      "load": {
+        "request": {
+          "operation": "GetBucketWebsite",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteBucketWebsite",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        },
+        "Put": {
+          "request": {
+            "operation": "PutBucketWebsite",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        }
+      }
+    },
+    "MultipartUpload": {
+      "identifiers": [
+        { "name": "BucketName" },
+        { "name": "ObjectKey" },
+        { "name": "Id" }
+      ],
+      "shape": "MultipartUpload",
+      "actions": {
+        "Abort": {
+          "request": {
+            "operation": "AbortMultipartUpload",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" },
+              { "target": "UploadId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Complete": {
+          "request": {
+            "operation": "CompleteMultipartUpload",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" },
+              { "target": "UploadId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "Object",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Object": {
+          "resource": {
+            "type": "Object",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" }
+            ]
+          }
+        },
+        "Part": {
+          "resource": {
+            "type": "MultipartUploadPart",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "ObjectKey", "source": "identifier", "name": "ObjectKey" },
+              { "target": "MultipartUploadId", "source": "identifier", "name": "Id" },
+              { "target": "PartNumber", "source": "input" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Parts": {
+          "request": {
+            "operation": "ListParts",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" },
+              { "target": "UploadId", "source": "identifier", "name": "Id" }
+            ]
+          },
+          "resource": {
+            "type": "MultipartUploadPart",
+            "identifiers": [
+              { "target": "BucketName", "source": "requestParameter", "path": "Bucket" },
+              { "target": "ObjectKey", "source": "requestParameter", "path": "Key" },
+              { "target": "MultipartUploadId", "source": "requestParameter", "path": "UploadId" },
+              { "target": "PartNumber", "source": "response", "path": "Parts[].PartNumber" }
+            ],
+            "path": "Parts[]"
+          }
+        }
+      }
+    },
+    "MultipartUploadPart": {
+      "identifiers": [
+        { "name": "BucketName" },
+        { "name": "ObjectKey" },
+        { "name": "MultipartUploadId" },
+        {
+          "name": "PartNumber",
+          "type": "integer",
+          "memberName": "PartNumber"
+        }
+      ],
+      "shape": "Part",
+      "actions": {
+        "CopyFrom": {
+          "request": {
+            "operation": "UploadPartCopy",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" },
+              { "target": "UploadId", "source": "identifier", "name": "MultipartUploadId" },
+              { "target": "PartNumber", "source": "identifier", "name": "PartNumber" }
+            ]
+          }
+        },
+        "Upload": {
+          "request": {
+            "operation": "UploadPart",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" },
+              { "target": "UploadId", "source": "identifier", "name": "MultipartUploadId" },
+              { "target": "PartNumber", "source": "identifier", "name": "PartNumber" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "MultipartUpload": {
+          "resource": {
+            "type": "MultipartUpload",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "ObjectKey", "source": "identifier", "name": "ObjectKey" },
+              { "target": "Id", "source": "identifier", "name": "MultipartUploadId" }
+            ]
+          }
+        }
+      }
+    },
+    "Object": {
+      "identifiers": [
+        { "name": "BucketName" },
+        { "name": "Key" }
+      ],
+      "shape": "HeadObjectOutput",
+      "load": {
+        "request": {
+          "operation": "HeadObject",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+            { "target": "Key", "source": "identifier", "name": "Key" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "CopyFrom": {
+          "request": {
+            "operation": "CopyObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        },
+        "Get": {
+          "request": {
+            "operation": "GetObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        },
+        "InitiateMultipartUpload": {
+          "request": {
+            "operation": "CreateMultipartUpload",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          },
+          "resource": {
+            "type": "MultipartUpload",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "ObjectKey", "source": "identifier", "name": "Key" },
+              { "target": "Id", "source": "response", "path": "UploadId" }
+            ]
+          }
+        },
+        "Put": {
+          "request": {
+            "operation": "PutObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        },
+        "RestoreObject": {
+          "request": {
+            "operation": "RestoreObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteObjects",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Delete.Objects[].Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "ObjectExists",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+            { "target": "Key", "source": "identifier", "name": "Key" }
+          ]
+        },
+        "NotExists": {
+          "waiterName": "ObjectNotExists",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+            { "target": "Key", "source": "identifier", "name": "Key" }
+          ]
+        }
+      },
+      "has": {
+        "Acl": {
+          "resource": {
+            "type": "ObjectAcl",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "ObjectKey", "source": "identifier", "name": "Key" }
+            ]
+          }
+        },
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        },
+        "MultipartUpload": {
+          "resource": {
+            "type": "MultipartUpload",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "ObjectKey", "source": "identifier", "name": "Key" },
+              { "target": "Id", "source": "input" }
+            ]
+          }
+        },
+        "Version": {
+          "resource": {
+            "type": "ObjectVersion",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "ObjectKey", "source": "identifier", "name": "Key" },
+              { "target": "Id", "source": "input" }
+            ]
+          }
+        }
+      }
+    },
+    "ObjectAcl": {
+      "identifiers": [
+        { "name": "BucketName" },
+        { "name": "ObjectKey" }
+      ],
+      "shape": "GetObjectAclOutput",
+      "load": {
+        "request": {
+          "operation": "GetObjectAcl",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+            { "target": "Key", "source": "identifier", "name": "ObjectKey" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Put": {
+          "request": {
+            "operation": "PutObjectAcl",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Object": {
+          "resource": {
+            "type": "Object",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" }
+            ]
+          }
+        }
+      }
+    },
+    "ObjectSummary": {
+      "identifiers": [
+        { "name": "BucketName" },
+        { "name": "Key" }
+      ],
+      "shape": "Object",
+      "actions": {
+        "CopyFrom": {
+          "request": {
+            "operation": "CopyObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        },
+        "Get": {
+          "request": {
+            "operation": "GetObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        },
+        "InitiateMultipartUpload": {
+          "request": {
+            "operation": "CreateMultipartUpload",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          },
+          "resource": {
+            "type": "MultipartUpload",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "ObjectKey", "source": "identifier", "name": "Key" },
+              { "target": "Id", "source": "response", "path": "UploadId" }
+            ]
+          }
+        },
+        "Put": {
+          "request": {
+            "operation": "PutObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        },
+        "RestoreObject": {
+          "request": {
+            "operation": "RestoreObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteObjects",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Delete.Objects[].Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        }
+      },
+      "waiters": {
+        "Exists": {
+          "waiterName": "ObjectExists",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+            { "target": "Key", "source": "identifier", "name": "Key" }
+          ]
+        },
+        "NotExists": {
+          "waiterName": "ObjectNotExists",
+          "params": [
+            { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+            { "target": "Key", "source": "identifier", "name": "Key" }
+          ]
+        }
+      },
+      "has": {
+        "Acl": {
+          "resource": {
+            "type": "ObjectAcl",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "ObjectKey", "source": "identifier", "name": "Key" }
+            ]
+          }
+        },
+        "Bucket": {
+          "resource": {
+            "type": "Bucket",
+            "identifiers": [
+              { "target": "Name", "source": "identifier", "name": "BucketName" }
+            ]
+          }
+        },
+        "MultipartUpload": {
+          "resource": {
+            "type": "MultipartUpload",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "ObjectKey", "source": "identifier", "name": "Key" },
+              { "target": "Id", "source": "input" }
+            ]
+          }
+        },
+        "Object": {
+          "resource": {
+            "type": "Object",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "Key" }
+            ]
+          }
+        },
+        "Version": {
+          "resource": {
+            "type": "ObjectVersion",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "ObjectKey", "source": "identifier", "name": "Key" },
+              { "target": "Id", "source": "input" }
+            ]
+          }
+        }
+      }
+    },
+    "ObjectVersion": {
+      "identifiers": [
+        { "name": "BucketName" },
+        { "name": "ObjectKey" },
+        { "name": "Id" }
+      ],
+      "shape": "ObjectVersion",
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" },
+              { "target": "VersionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Get": {
+          "request": {
+            "operation": "GetObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" },
+              { "target": "VersionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        },
+        "Head": {
+          "request": {
+            "operation": "HeadObject",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" },
+              { "target": "VersionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteObjects",
+            "params": [
+              { "target": "Bucket", "source": "identifier", "name": "BucketName" },
+              { "target": "Delete.Objects[*].Key", "source": "identifier", "name": "ObjectKey" },
+              { "target": "Delete.Objects[*].VersionId", "source": "identifier", "name": "Id" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Object": {
+          "resource": {
+            "type": "Object",
+            "identifiers": [
+              { "target": "BucketName", "source": "identifier", "name": "BucketName" },
+              { "target": "Key", "source": "identifier", "name": "ObjectKey" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/sns/2010-03-31/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/sns/2010-03-31/resources-1.json
new file mode 100644
index 00000000..cee300a8
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/sns/2010-03-31/resources-1.json
@@ -0,0 +1,327 @@
+{
+  "service": {
+    "actions": {
+      "CreatePlatformApplication": {
+        "request": { "operation": "CreatePlatformApplication" },
+        "resource": {
+          "type": "PlatformApplication",
+          "identifiers": [
+            { "target": "Arn", "source": "response", "path": "PlatformApplicationArn" }
+          ]
+        }
+      },
+      "CreateTopic": {
+        "request": { "operation": "CreateTopic" },
+        "resource": {
+          "type": "Topic",
+          "identifiers": [
+            { "target": "Arn", "source": "response", "path": "TopicArn" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "PlatformApplication": {
+        "resource": {
+          "type": "PlatformApplication",
+          "identifiers": [
+            { "target": "Arn", "source": "input" }
+          ]
+        }
+      },
+      "PlatformEndpoint": {
+        "resource": {
+          "type": "PlatformEndpoint",
+          "identifiers": [
+            { "target": "Arn", "source": "input" }
+          ]
+        }
+      },
+      "Subscription": {
+        "resource": {
+          "type": "Subscription",
+          "identifiers": [
+            { "target": "Arn", "source": "input" }
+          ]
+        }
+      },
+      "Topic": {
+        "resource": {
+          "type": "Topic",
+          "identifiers": [
+            { "target": "Arn", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "PlatformApplications": {
+        "request": { "operation": "ListPlatformApplications" },
+        "resource": {
+          "type": "PlatformApplication",
+          "identifiers": [
+            { "target": "Arn", "source": "response", "path": "PlatformApplications[].PlatformApplicationArn" }
+          ]
+        }
+      },
+      "Subscriptions": {
+        "request": { "operation": "ListSubscriptions" },
+        "resource": {
+          "type": "Subscription",
+          "identifiers": [
+            { "target": "Arn", "source": "response", "path": "Subscriptions[].SubscriptionArn" }
+          ]
+        }
+      },
+      "Topics": {
+        "request": { "operation": "ListTopics" },
+        "resource": {
+          "type": "Topic",
+          "identifiers": [
+            { "target": "Arn", "source": "response", "path": "Topics[].TopicArn" }
+          ]
+        }
+      }
+    }
+  },
+  "resources": {
+    "PlatformApplication": {
+      "identifiers": [
+        { "name": "Arn" }
+      ],
+      "shape": "GetPlatformApplicationAttributesResponse",
+      "load": {
+        "request": {
+          "operation": "GetPlatformApplicationAttributes",
+          "params": [
+            { "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "CreatePlatformEndpoint": {
+          "request": {
+            "operation": "CreatePlatformEndpoint",
+            "params": [
+              { "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
+            ]
+          },
+          "resource": {
+            "type": "PlatformEndpoint",
+            "identifiers": [
+              { "target": "Arn", "source": "response", "path": "EndpointArn" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeletePlatformApplication",
+            "params": [
+              { "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "SetAttributes": {
+          "request": {
+            "operation": "SetPlatformApplicationAttributes",
+            "params": [
+              { "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Endpoints": {
+          "request": {
+            "operation": "ListEndpointsByPlatformApplication",
+            "params": [
+              { "target": "PlatformApplicationArn", "source": "identifier", "name": "Arn" }
+            ]
+          },
+          "resource": {
+            "type": "PlatformEndpoint",
+            "identifiers": [
+              { "target": "Arn", "source": "response", "path": "Endpoints[].EndpointArn" }
+            ]
+          }
+        }
+      }
+    },
+    "PlatformEndpoint": {
+      "identifiers": [
+        { "name": "Arn" }
+      ],
+      "shape": "GetEndpointAttributesResponse",
+      "load": {
+        "request": {
+          "operation": "GetEndpointAttributes",
+          "params": [
+            { "target": "EndpointArn", "source": "identifier", "name": "Arn" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteEndpoint",
+            "params": [
+              { "target": "EndpointArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "Publish": {
+          "request": {
+            "operation": "Publish",
+            "params": [
+              { "target": "TargetArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "SetAttributes": {
+          "request": {
+            "operation": "SetEndpointAttributes",
+            "params": [
+              { "target": "EndpointArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        }
+      }
+    },
+    "Subscription": {
+      "identifiers": [
+        { "name": "Arn" }
+      ],
+      "shape": "GetSubscriptionAttributesResponse",
+      "load": {
+        "request": {
+          "operation": "GetSubscriptionAttributes",
+          "params": [
+            { "target": "SubscriptionArn", "source": "identifier", "name": "Arn" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "Delete": {
+          "request": {
+            "operation": "Unsubscribe",
+            "params": [
+              { "target": "SubscriptionArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "SetAttributes": {
+          "request": {
+            "operation": "SetSubscriptionAttributes",
+            "params": [
+              { "target": "SubscriptionArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        }
+      }
+    },
+    "Topic": {
+      "identifiers": [
+        { "name": "Arn" }
+      ],
+      "shape": "GetTopicAttributesResponse",
+      "load": {
+        "request": {
+          "operation": "GetTopicAttributes",
+          "params": [
+            { "target": "TopicArn", "source": "identifier", "name": "Arn" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "AddPermission": {
+          "request": {
+            "operation": "AddPermission",
+            "params": [
+              { "target": "TopicArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "ConfirmSubscription": {
+          "request": {
+            "operation": "ConfirmSubscription",
+            "params": [
+              { "target": "TopicArn", "source": "identifier", "name": "Arn" }
+            ]
+          },
+          "resource": {
+            "type": "Subscription",
+            "identifiers": [
+              { "target": "Arn", "source": "response", "path": "SubscriptionArn" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteTopic",
+            "params": [
+              { "target": "TopicArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "Publish": {
+          "request": {
+            "operation": "Publish",
+            "params": [
+              { "target": "TopicArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "RemovePermission": {
+          "request": {
+            "operation": "RemovePermission",
+            "params": [
+              { "target": "TopicArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "SetAttributes": {
+          "request": {
+            "operation": "SetTopicAttributes",
+            "params": [
+              { "target": "TopicArn", "source": "identifier", "name": "Arn" }
+            ]
+          }
+        },
+        "Subscribe": {
+          "request": {
+            "operation": "Subscribe",
+            "params": [
+              { "target": "TopicArn", "source": "identifier", "name": "Arn" }
+            ]
+          },
+          "resource": {
+            "type": "Subscription",
+            "identifiers": [
+              { "target": "Arn", "source": "response", "path": "SubscriptionArn" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "Subscriptions": {
+          "request": {
+            "operation": "ListSubscriptionsByTopic",
+            "params": [
+              { "target": "TopicArn", "source": "identifier", "name": "Arn" }
+            ]
+          },
+          "resource": {
+            "type": "Subscription",
+            "identifiers": [
+              { "target": "Arn", "source": "response", "path": "Subscriptions[].SubscriptionArn" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/.venv/lib/python3.12/site-packages/boto3/data/sqs/2012-11-05/resources-1.json b/.venv/lib/python3.12/site-packages/boto3/data/sqs/2012-11-05/resources-1.json
new file mode 100644
index 00000000..b1e74ab0
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/data/sqs/2012-11-05/resources-1.json
@@ -0,0 +1,232 @@
+{
+  "service": {
+    "actions": {
+      "CreateQueue": {
+        "request": { "operation": "CreateQueue" },
+        "resource": {
+          "type": "Queue",
+          "identifiers": [
+            { "target": "Url", "source": "response", "path": "QueueUrl" }
+          ]
+        }
+      },
+      "GetQueueByName": {
+        "request": { "operation": "GetQueueUrl" },
+        "resource": {
+          "type": "Queue",
+          "identifiers": [
+            { "target": "Url", "source": "response", "path": "QueueUrl" }
+          ]
+        }
+      }
+    },
+    "has": {
+      "Queue": {
+        "resource": {
+          "type": "Queue",
+          "identifiers": [
+            { "target": "Url", "source": "input" }
+          ]
+        }
+      }
+    },
+    "hasMany": {
+      "Queues": {
+        "request": { "operation": "ListQueues" },
+        "resource": {
+          "type": "Queue",
+          "identifiers": [
+            { "target": "Url", "source": "response", "path": "QueueUrls[]" }
+          ]
+        }
+      }
+    }
+  },
+  "resources": {
+    "Message": {
+      "identifiers": [
+        { "name": "QueueUrl" },
+        {
+          "name": "ReceiptHandle",
+          "memberName": "ReceiptHandle"
+        }
+      ],
+      "shape": "Message",
+      "actions": {
+        "ChangeVisibility": {
+          "request": {
+            "operation": "ChangeMessageVisibility",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "QueueUrl" },
+              { "target": "ReceiptHandle", "source": "identifier", "name": "ReceiptHandle" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteMessage",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "QueueUrl" },
+              { "target": "ReceiptHandle", "source": "identifier", "name": "ReceiptHandle" }
+            ]
+          }
+        }
+      },
+      "batchActions": {
+        "Delete": {
+          "request": {
+            "operation": "DeleteMessageBatch",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "QueueUrl" },
+              { "target": "Entries[*].Id", "source": "data", "path": "MessageId" },
+              { "target": "Entries[*].ReceiptHandle", "source": "identifier", "name": "ReceiptHandle" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Queue": {
+          "resource": {
+            "type": "Queue",
+            "identifiers": [
+              { "target": "Url", "source": "identifier", "name": "QueueUrl" }
+            ]
+          }
+        }
+      }
+    },
+    "Queue": {
+      "identifiers": [
+        { "name": "Url" }
+      ],
+      "shape": "GetQueueAttributesResult",
+      "load": {
+        "request": {
+          "operation": "GetQueueAttributes",
+          "params": [
+            { "target": "QueueUrl", "source": "identifier", "name": "Url" },
+            { "target": "AttributeNames[]", "source": "string", "value": "All" }
+          ]
+        },
+        "path": "@"
+      },
+      "actions": {
+        "AddPermission": {
+          "request": {
+            "operation": "AddPermission",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" }
+            ]
+          }
+        },
+        "ChangeMessageVisibilityBatch": {
+          "request": {
+            "operation": "ChangeMessageVisibilityBatch",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" }
+            ]
+          }
+        },
+        "Delete": {
+          "request": {
+            "operation": "DeleteQueue",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" }
+            ]
+          }
+        },
+        "DeleteMessages": {
+          "request": {
+            "operation": "DeleteMessageBatch",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" }
+            ]
+          }
+        },
+        "Purge": {
+          "request": {
+            "operation": "PurgeQueue",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" }
+            ]
+          }
+        },
+        "ReceiveMessages": {
+          "request": {
+            "operation": "ReceiveMessage",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" }
+            ]
+          },
+          "resource": {
+            "type": "Message",
+            "identifiers": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" },
+              { "target": "ReceiptHandle", "source": "response", "path": "Messages[].ReceiptHandle" }
+            ],
+            "path": "Messages[]"
+          }
+        },
+        "RemovePermission": {
+          "request": {
+            "operation": "RemovePermission",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" }
+            ]
+          }
+        },
+        "SendMessage": {
+          "request": {
+            "operation": "SendMessage",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" }
+            ]
+          }
+        },
+        "SendMessages": {
+          "request": {
+            "operation": "SendMessageBatch",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" }
+            ]
+          }
+        },
+        "SetAttributes": {
+          "request": {
+            "operation": "SetQueueAttributes",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" }
+            ]
+          }
+        }
+      },
+      "has": {
+        "Message": {
+          "resource": {
+            "type": "Message",
+            "identifiers": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" },
+              { "target": "ReceiptHandle", "source": "input" }
+            ]
+          }
+        }
+      },
+      "hasMany": {
+        "DeadLetterSourceQueues": {
+          "request": {
+            "operation": "ListDeadLetterSourceQueues",
+            "params": [
+              { "target": "QueueUrl", "source": "identifier", "name": "Url" }
+            ]
+          },
+          "resource": {
+            "type": "Queue",
+            "identifiers": [
+              { "target": "Url", "source": "response", "path": "queueUrls[]" }
+            ]
+          }
+        }
+      }
+    }
+  }
+}