{
  "version": "2.0",
  "metadata": {
    "apiVersion": "2018-04-01",
    "endpointPrefix": "route53resolver",
    "jsonVersion": "1.1",
    "protocol": "json",
    "serviceAbbreviation": "Route53Resolver",
    "serviceFullName": "Amazon Route 53 Resolver",
    "serviceId": "Route53Resolver",
    "signatureVersion": "v4",
    "targetPrefix": "Route53Resolver",
    "uid": "route53resolver-2018-04-01"
  },
  "operations": {
    "AssociateResolverEndpointIpAddress": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverEndpointId",
          "IpAddress"
        ],
        "members": {
          "ResolverEndpointId": {},
          "IpAddress": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverEndpoint": {
            "shape": "S7"
          }
        }
      }
    },
    "AssociateResolverQueryLogConfig": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverQueryLogConfigId",
          "ResourceId"
        ],
        "members": {
          "ResolverQueryLogConfigId": {},
          "ResourceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverQueryLogConfigAssociation": {
            "shape": "Sj"
          }
        }
      }
    },
    "AssociateResolverRule": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverRuleId",
          "VPCId"
        ],
        "members": {
          "ResolverRuleId": {},
          "Name": {},
          "VPCId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverRuleAssociation": {
            "shape": "Sp"
          }
        }
      }
    },
    "CreateResolverEndpoint": {
      "input": {
        "type": "structure",
        "required": [
          "CreatorRequestId",
          "SecurityGroupIds",
          "Direction",
          "IpAddresses"
        ],
        "members": {
          "CreatorRequestId": {},
          "Name": {},
          "SecurityGroupIds": {
            "shape": "Sb"
          },
          "Direction": {},
          "IpAddresses": {
            "type": "list",
            "member": {
              "type": "structure",
              "required": [
                "SubnetId"
              ],
              "members": {
                "SubnetId": {},
                "Ip": {}
              }
            }
          },
          "Tags": {
            "shape": "Su"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverEndpoint": {
            "shape": "S7"
          }
        }
      }
    },
    "CreateResolverQueryLogConfig": {
      "input": {
        "type": "structure",
        "required": [
          "Name",
          "DestinationArn",
          "CreatorRequestId"
        ],
        "members": {
          "Name": {},
          "DestinationArn": {},
          "CreatorRequestId": {
            "idempotencyToken": true
          },
          "Tags": {
            "shape": "Su"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverQueryLogConfig": {
            "shape": "S13"
          }
        }
      }
    },
    "CreateResolverRule": {
      "input": {
        "type": "structure",
        "required": [
          "CreatorRequestId",
          "RuleType",
          "DomainName"
        ],
        "members": {
          "CreatorRequestId": {},
          "Name": {},
          "RuleType": {},
          "DomainName": {},
          "TargetIps": {
            "shape": "S1b"
          },
          "ResolverEndpointId": {},
          "Tags": {
            "shape": "Su"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverRule": {
            "shape": "S1f"
          }
        }
      }
    },
    "DeleteResolverEndpoint": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverEndpointId"
        ],
        "members": {
          "ResolverEndpointId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverEndpoint": {
            "shape": "S7"
          }
        }
      }
    },
    "DeleteResolverQueryLogConfig": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverQueryLogConfigId"
        ],
        "members": {
          "ResolverQueryLogConfigId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverQueryLogConfig": {
            "shape": "S13"
          }
        }
      }
    },
    "DeleteResolverRule": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverRuleId"
        ],
        "members": {
          "ResolverRuleId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverRule": {
            "shape": "S1f"
          }
        }
      }
    },
    "DisassociateResolverEndpointIpAddress": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverEndpointId",
          "IpAddress"
        ],
        "members": {
          "ResolverEndpointId": {},
          "IpAddress": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverEndpoint": {
            "shape": "S7"
          }
        }
      }
    },
    "DisassociateResolverQueryLogConfig": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverQueryLogConfigId",
          "ResourceId"
        ],
        "members": {
          "ResolverQueryLogConfigId": {},
          "ResourceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverQueryLogConfigAssociation": {
            "shape": "Sj"
          }
        }
      }
    },
    "DisassociateResolverRule": {
      "input": {
        "type": "structure",
        "required": [
          "VPCId",
          "ResolverRuleId"
        ],
        "members": {
          "VPCId": {},
          "ResolverRuleId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverRuleAssociation": {
            "shape": "Sp"
          }
        }
      }
    },
    "GetResolverDnssecConfig": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceId"
        ],
        "members": {
          "ResourceId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverDNSSECConfig": {
            "shape": "S1v"
          }
        }
      }
    },
    "GetResolverEndpoint": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverEndpointId"
        ],
        "members": {
          "ResolverEndpointId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverEndpoint": {
            "shape": "S7"
          }
        }
      }
    },
    "GetResolverQueryLogConfig": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverQueryLogConfigId"
        ],
        "members": {
          "ResolverQueryLogConfigId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverQueryLogConfig": {
            "shape": "S13"
          }
        }
      }
    },
    "GetResolverQueryLogConfigAssociation": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverQueryLogConfigAssociationId"
        ],
        "members": {
          "ResolverQueryLogConfigAssociationId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverQueryLogConfigAssociation": {
            "shape": "Sj"
          }
        }
      }
    },
    "GetResolverQueryLogConfigPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "Arn"
        ],
        "members": {
          "Arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverQueryLogConfigPolicy": {}
        }
      }
    },
    "GetResolverRule": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverRuleId"
        ],
        "members": {
          "ResolverRuleId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverRule": {
            "shape": "S1f"
          }
        }
      }
    },
    "GetResolverRuleAssociation": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverRuleAssociationId"
        ],
        "members": {
          "ResolverRuleAssociationId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverRuleAssociation": {
            "shape": "Sp"
          }
        }
      }
    },
    "GetResolverRulePolicy": {
      "input": {
        "type": "structure",
        "required": [
          "Arn"
        ],
        "members": {
          "Arn": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverRulePolicy": {}
        }
      }
    },
    "ListResolverDnssecConfigs": {
      "input": {
        "type": "structure",
        "members": {
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "Filters": {
            "shape": "S2g"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "ResolverDnssecConfigs": {
            "type": "list",
            "member": {
              "shape": "S1v"
            }
          }
        }
      }
    },
    "ListResolverEndpointIpAddresses": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverEndpointId"
        ],
        "members": {
          "ResolverEndpointId": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          },
          "IpAddresses": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "IpId": {},
                "SubnetId": {},
                "Ip": {},
                "Status": {},
                "StatusMessage": {},
                "CreationTime": {},
                "ModificationTime": {}
              }
            }
          }
        }
      }
    },
    "ListResolverEndpoints": {
      "input": {
        "type": "structure",
        "members": {
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "Filters": {
            "shape": "S2g"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          },
          "ResolverEndpoints": {
            "type": "list",
            "member": {
              "shape": "S7"
            }
          }
        }
      }
    },
    "ListResolverQueryLogConfigAssociations": {
      "input": {
        "type": "structure",
        "members": {
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "Filters": {
            "shape": "S2g"
          },
          "SortBy": {},
          "SortOrder": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "TotalCount": {
            "type": "integer"
          },
          "TotalFilteredCount": {
            "type": "integer"
          },
          "ResolverQueryLogConfigAssociations": {
            "type": "list",
            "member": {
              "shape": "Sj"
            }
          }
        }
      }
    },
    "ListResolverQueryLogConfigs": {
      "input": {
        "type": "structure",
        "members": {
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "Filters": {
            "shape": "S2g"
          },
          "SortBy": {},
          "SortOrder": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "TotalCount": {
            "type": "integer"
          },
          "TotalFilteredCount": {
            "type": "integer"
          },
          "ResolverQueryLogConfigs": {
            "type": "list",
            "member": {
              "shape": "S13"
            }
          }
        }
      }
    },
    "ListResolverRuleAssociations": {
      "input": {
        "type": "structure",
        "members": {
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "Filters": {
            "shape": "S2g"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          },
          "ResolverRuleAssociations": {
            "type": "list",
            "member": {
              "shape": "Sp"
            }
          }
        }
      }
    },
    "ListResolverRules": {
      "input": {
        "type": "structure",
        "members": {
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {},
          "Filters": {
            "shape": "S2g"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "MaxResults": {
            "type": "integer"
          },
          "ResolverRules": {
            "type": "list",
            "member": {
              "shape": "S1f"
            }
          }
        }
      }
    },
    "ListTagsForResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn"
        ],
        "members": {
          "ResourceArn": {},
          "MaxResults": {
            "type": "integer"
          },
          "NextToken": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Tags": {
            "shape": "Su"
          },
          "NextToken": {}
        }
      }
    },
    "PutResolverQueryLogConfigPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "Arn",
          "ResolverQueryLogConfigPolicy"
        ],
        "members": {
          "Arn": {},
          "ResolverQueryLogConfigPolicy": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReturnValue": {
            "type": "boolean"
          }
        }
      }
    },
    "PutResolverRulePolicy": {
      "input": {
        "type": "structure",
        "required": [
          "Arn",
          "ResolverRulePolicy"
        ],
        "members": {
          "Arn": {},
          "ResolverRulePolicy": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ReturnValue": {
            "type": "boolean"
          }
        }
      }
    },
    "TagResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn",
          "Tags"
        ],
        "members": {
          "ResourceArn": {},
          "Tags": {
            "shape": "Su"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UntagResource": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceArn",
          "TagKeys"
        ],
        "members": {
          "ResourceArn": {},
          "TagKeys": {
            "type": "list",
            "member": {}
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateResolverDnssecConfig": {
      "input": {
        "type": "structure",
        "required": [
          "ResourceId",
          "Validation"
        ],
        "members": {
          "ResourceId": {},
          "Validation": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverDNSSECConfig": {
            "shape": "S1v"
          }
        }
      }
    },
    "UpdateResolverEndpoint": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverEndpointId"
        ],
        "members": {
          "ResolverEndpointId": {},
          "Name": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverEndpoint": {
            "shape": "S7"
          }
        }
      }
    },
    "UpdateResolverRule": {
      "input": {
        "type": "structure",
        "required": [
          "ResolverRuleId",
          "Config"
        ],
        "members": {
          "ResolverRuleId": {},
          "Config": {
            "type": "structure",
            "members": {
              "Name": {},
              "TargetIps": {
                "shape": "S1b"
              },
              "ResolverEndpointId": {}
            }
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ResolverRule": {
            "shape": "S1f"
          }
        }
      }
    }
  },
  "shapes": {
    "S3": {
      "type": "structure",
      "members": {
        "IpId": {},
        "SubnetId": {},
        "Ip": {}
      }
    },
    "S7": {
      "type": "structure",
      "members": {
        "Id": {},
        "CreatorRequestId": {},
        "Arn": {},
        "Name": {},
        "SecurityGroupIds": {
          "shape": "Sb"
        },
        "Direction": {},
        "IpAddressCount": {
          "type": "integer"
        },
        "HostVPCId": {},
        "Status": {},
        "StatusMessage": {},
        "CreationTime": {},
        "ModificationTime": {}
      }
    },
    "Sb": {
      "type": "list",
      "member": {}
    },
    "Sj": {
      "type": "structure",
      "members": {
        "Id": {},
        "ResolverQueryLogConfigId": {},
        "ResourceId": {},
        "Status": {},
        "Error": {},
        "ErrorMessage": {},
        "CreationTime": {}
      }
    },
    "Sp": {
      "type": "structure",
      "members": {
        "Id": {},
        "ResolverRuleId": {},
        "Name": {},
        "VPCId": {},
        "Status": {},
        "StatusMessage": {}
      }
    },
    "Su": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Key",
          "Value"
        ],
        "members": {
          "Key": {},
          "Value": {}
        }
      }
    },
    "S13": {
      "type": "structure",
      "members": {
        "Id": {},
        "OwnerId": {},
        "Status": {},
        "ShareStatus": {},
        "AssociationCount": {
          "type": "integer"
        },
        "Arn": {},
        "Name": {},
        "DestinationArn": {},
        "CreatorRequestId": {},
        "CreationTime": {}
      }
    },
    "S1b": {
      "type": "list",
      "member": {
        "type": "structure",
        "required": [
          "Ip"
        ],
        "members": {
          "Ip": {},
          "Port": {
            "type": "integer"
          }
        }
      }
    },
    "S1f": {
      "type": "structure",
      "members": {
        "Id": {},
        "CreatorRequestId": {},
        "Arn": {},
        "DomainName": {},
        "Status": {},
        "StatusMessage": {},
        "RuleType": {},
        "Name": {},
        "TargetIps": {
          "shape": "S1b"
        },
        "ResolverEndpointId": {},
        "OwnerId": {},
        "ShareStatus": {},
        "CreationTime": {},
        "ModificationTime": {}
      }
    },
    "S1v": {
      "type": "structure",
      "members": {
        "Id": {},
        "OwnerId": {},
        "ResourceId": {},
        "ValidationStatus": {}
      }
    },
    "S2g": {
      "type": "list",
      "member": {
        "type": "structure",
        "members": {
          "Name": {},
          "Values": {
            "type": "list",
            "member": {}
          }
        }
      }
    }
  }
}