{
  "metadata": {
    "apiVersion": "2020-11-02",
    "endpointPrefix": "route53-recovery-control-config",
    "signingName": "route53-recovery-control-config",
    "serviceFullName": "AWS Route53 Recovery Control Config",
    "serviceId": "Route53 Recovery Control Config",
    "protocol": "rest-json",
    "jsonVersion": "1.1",
    "uid": "route53-recovery-control-config-2020-11-02",
    "signatureVersion": "v4"
  },
  "operations": {
    "CreateCluster": {
      "http": {
        "requestUri": "/cluster",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ClientToken": {
            "idempotencyToken": true
          },
          "ClusterName": {},
          "Tags": {
            "shape": "S3"
          }
        },
        "required": [
          "ClusterName"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "Cluster": {
            "shape": "S7"
          }
        }
      }
    },
    "CreateControlPanel": {
      "http": {
        "requestUri": "/controlpanel",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ClientToken": {
            "idempotencyToken": true
          },
          "ClusterArn": {},
          "ControlPanelName": {},
          "Tags": {
            "shape": "S3"
          }
        },
        "required": [
          "ClusterArn",
          "ControlPanelName"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "ControlPanel": {
            "shape": "Sg"
          }
        }
      }
    },
    "CreateRoutingControl": {
      "http": {
        "requestUri": "/routingcontrol",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ClientToken": {
            "idempotencyToken": true
          },
          "ClusterArn": {},
          "ControlPanelArn": {},
          "RoutingControlName": {}
        },
        "required": [
          "ClusterArn",
          "RoutingControlName"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "RoutingControl": {
            "shape": "Sl"
          }
        }
      }
    },
    "CreateSafetyRule": {
      "http": {
        "requestUri": "/safetyrule",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "AssertionRule": {
            "type": "structure",
            "members": {
              "AssertedControls": {
                "shape": "So"
              },
              "ControlPanelArn": {},
              "Name": {},
              "RuleConfig": {
                "shape": "Sp"
              },
              "WaitPeriodMs": {
                "type": "integer"
              }
            },
            "required": [
              "ControlPanelArn",
              "AssertedControls",
              "RuleConfig",
              "WaitPeriodMs",
              "Name"
            ]
          },
          "ClientToken": {
            "idempotencyToken": true
          },
          "GatingRule": {
            "type": "structure",
            "members": {
              "ControlPanelArn": {},
              "GatingControls": {
                "shape": "So"
              },
              "Name": {},
              "RuleConfig": {
                "shape": "Sp"
              },
              "TargetControls": {
                "shape": "So"
              },
              "WaitPeriodMs": {
                "type": "integer"
              }
            },
            "required": [
              "TargetControls",
              "ControlPanelArn",
              "GatingControls",
              "RuleConfig",
              "WaitPeriodMs",
              "Name"
            ]
          },
          "Tags": {
            "shape": "S3"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AssertionRule": {
            "shape": "St"
          },
          "GatingRule": {
            "shape": "Su"
          }
        }
      }
    },
    "DeleteCluster": {
      "http": {
        "method": "DELETE",
        "requestUri": "/cluster/{ClusterArn}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ClusterArn": {
            "location": "uri",
            "locationName": "ClusterArn"
          }
        },
        "required": [
          "ClusterArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteControlPanel": {
      "http": {
        "method": "DELETE",
        "requestUri": "/controlpanel/{ControlPanelArn}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ControlPanelArn": {
            "location": "uri",
            "locationName": "ControlPanelArn"
          }
        },
        "required": [
          "ControlPanelArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteRoutingControl": {
      "http": {
        "method": "DELETE",
        "requestUri": "/routingcontrol/{RoutingControlArn}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "RoutingControlArn": {
            "location": "uri",
            "locationName": "RoutingControlArn"
          }
        },
        "required": [
          "RoutingControlArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DeleteSafetyRule": {
      "http": {
        "method": "DELETE",
        "requestUri": "/safetyrule/{SafetyRuleArn}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "SafetyRuleArn": {
            "location": "uri",
            "locationName": "SafetyRuleArn"
          }
        },
        "required": [
          "SafetyRuleArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "DescribeCluster": {
      "http": {
        "method": "GET",
        "requestUri": "/cluster/{ClusterArn}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ClusterArn": {
            "location": "uri",
            "locationName": "ClusterArn"
          }
        },
        "required": [
          "ClusterArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "Cluster": {
            "shape": "S7"
          }
        }
      }
    },
    "DescribeControlPanel": {
      "http": {
        "method": "GET",
        "requestUri": "/controlpanel/{ControlPanelArn}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ControlPanelArn": {
            "location": "uri",
            "locationName": "ControlPanelArn"
          }
        },
        "required": [
          "ControlPanelArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "ControlPanel": {
            "shape": "Sg"
          }
        }
      }
    },
    "DescribeRoutingControl": {
      "http": {
        "method": "GET",
        "requestUri": "/routingcontrol/{RoutingControlArn}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "RoutingControlArn": {
            "location": "uri",
            "locationName": "RoutingControlArn"
          }
        },
        "required": [
          "RoutingControlArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "RoutingControl": {
            "shape": "Sl"
          }
        }
      }
    },
    "DescribeSafetyRule": {
      "http": {
        "method": "GET",
        "requestUri": "/safetyrule/{SafetyRuleArn}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "SafetyRuleArn": {
            "location": "uri",
            "locationName": "SafetyRuleArn"
          }
        },
        "required": [
          "SafetyRuleArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "AssertionRule": {
            "shape": "St"
          },
          "GatingRule": {
            "shape": "Su"
          }
        }
      }
    },
    "ListAssociatedRoute53HealthChecks": {
      "http": {
        "method": "GET",
        "requestUri": "/routingcontrol/{RoutingControlArn}/associatedRoute53HealthChecks",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "MaxResults": {
            "location": "querystring",
            "locationName": "MaxResults",
            "type": "integer"
          },
          "NextToken": {
            "location": "querystring",
            "locationName": "NextToken"
          },
          "RoutingControlArn": {
            "location": "uri",
            "locationName": "RoutingControlArn"
          }
        },
        "required": [
          "RoutingControlArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "HealthCheckIds": {
            "type": "list",
            "member": {}
          },
          "NextToken": {}
        }
      }
    },
    "ListClusters": {
      "http": {
        "method": "GET",
        "requestUri": "/cluster",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "MaxResults": {
            "location": "querystring",
            "locationName": "MaxResults",
            "type": "integer"
          },
          "NextToken": {
            "location": "querystring",
            "locationName": "NextToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Clusters": {
            "type": "list",
            "member": {
              "shape": "S7"
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListControlPanels": {
      "http": {
        "method": "GET",
        "requestUri": "/controlpanels",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ClusterArn": {
            "location": "querystring",
            "locationName": "ClusterArn"
          },
          "MaxResults": {
            "location": "querystring",
            "locationName": "MaxResults",
            "type": "integer"
          },
          "NextToken": {
            "location": "querystring",
            "locationName": "NextToken"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "ControlPanels": {
            "type": "list",
            "member": {
              "shape": "Sg"
            }
          },
          "NextToken": {}
        }
      }
    },
    "ListRoutingControls": {
      "http": {
        "method": "GET",
        "requestUri": "/controlpanel/{ControlPanelArn}/routingcontrols",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ControlPanelArn": {
            "location": "uri",
            "locationName": "ControlPanelArn"
          },
          "MaxResults": {
            "location": "querystring",
            "locationName": "MaxResults",
            "type": "integer"
          },
          "NextToken": {
            "location": "querystring",
            "locationName": "NextToken"
          }
        },
        "required": [
          "ControlPanelArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "RoutingControls": {
            "type": "list",
            "member": {
              "shape": "Sl"
            }
          }
        }
      }
    },
    "ListSafetyRules": {
      "http": {
        "method": "GET",
        "requestUri": "/controlpanel/{ControlPanelArn}/safetyrules",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ControlPanelArn": {
            "location": "uri",
            "locationName": "ControlPanelArn"
          },
          "MaxResults": {
            "location": "querystring",
            "locationName": "MaxResults",
            "type": "integer"
          },
          "NextToken": {
            "location": "querystring",
            "locationName": "NextToken"
          }
        },
        "required": [
          "ControlPanelArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "NextToken": {},
          "SafetyRules": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "ASSERTION": {
                  "shape": "St"
                },
                "GATING": {
                  "shape": "Su"
                }
              }
            }
          }
        }
      }
    },
    "ListTagsForResource": {
      "http": {
        "method": "GET",
        "requestUri": "/tags/{ResourceArn}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ResourceArn": {
            "location": "uri",
            "locationName": "ResourceArn"
          }
        },
        "required": [
          "ResourceArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "Tags": {
            "shape": "S3"
          }
        }
      }
    },
    "TagResource": {
      "http": {
        "requestUri": "/tags/{ResourceArn}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ResourceArn": {
            "location": "uri",
            "locationName": "ResourceArn"
          },
          "Tags": {
            "shape": "S3"
          }
        },
        "required": [
          "ResourceArn",
          "Tags"
        ]
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UntagResource": {
      "http": {
        "method": "DELETE",
        "requestUri": "/tags/{ResourceArn}",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ResourceArn": {
            "location": "uri",
            "locationName": "ResourceArn"
          },
          "TagKeys": {
            "location": "querystring",
            "locationName": "TagKeys",
            "type": "list",
            "member": {}
          }
        },
        "required": [
          "ResourceArn",
          "TagKeys"
        ]
      },
      "output": {
        "type": "structure",
        "members": {}
      }
    },
    "UpdateControlPanel": {
      "http": {
        "method": "PUT",
        "requestUri": "/controlpanel",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "ControlPanelArn": {},
          "ControlPanelName": {}
        },
        "required": [
          "ControlPanelArn",
          "ControlPanelName"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "ControlPanel": {
            "shape": "Sg"
          }
        }
      }
    },
    "UpdateRoutingControl": {
      "http": {
        "method": "PUT",
        "requestUri": "/routingcontrol",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "RoutingControlArn": {},
          "RoutingControlName": {}
        },
        "required": [
          "RoutingControlName",
          "RoutingControlArn"
        ]
      },
      "output": {
        "type": "structure",
        "members": {
          "RoutingControl": {
            "shape": "Sl"
          }
        }
      }
    },
    "UpdateSafetyRule": {
      "http": {
        "method": "PUT",
        "requestUri": "/safetyrule",
        "responseCode": 200
      },
      "input": {
        "type": "structure",
        "members": {
          "AssertionRuleUpdate": {
            "type": "structure",
            "members": {
              "Name": {},
              "SafetyRuleArn": {},
              "WaitPeriodMs": {
                "type": "integer"
              }
            },
            "required": [
              "SafetyRuleArn",
              "WaitPeriodMs",
              "Name"
            ]
          },
          "GatingRuleUpdate": {
            "type": "structure",
            "members": {
              "Name": {},
              "SafetyRuleArn": {},
              "WaitPeriodMs": {
                "type": "integer"
              }
            },
            "required": [
              "SafetyRuleArn",
              "WaitPeriodMs",
              "Name"
            ]
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "AssertionRule": {
            "shape": "St"
          },
          "GatingRule": {
            "shape": "Su"
          }
        }
      }
    }
  },
  "shapes": {
    "S3": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "S7": {
      "type": "structure",
      "members": {
        "ClusterArn": {},
        "ClusterEndpoints": {
          "type": "list",
          "member": {
            "type": "structure",
            "members": {
              "Endpoint": {},
              "Region": {}
            }
          }
        },
        "Name": {},
        "Status": {}
      }
    },
    "Sg": {
      "type": "structure",
      "members": {
        "ClusterArn": {},
        "ControlPanelArn": {},
        "DefaultControlPanel": {
          "type": "boolean"
        },
        "Name": {},
        "RoutingControlCount": {
          "type": "integer"
        },
        "Status": {}
      }
    },
    "Sl": {
      "type": "structure",
      "members": {
        "ControlPanelArn": {},
        "Name": {},
        "RoutingControlArn": {},
        "Status": {}
      }
    },
    "So": {
      "type": "list",
      "member": {}
    },
    "Sp": {
      "type": "structure",
      "members": {
        "Inverted": {
          "type": "boolean"
        },
        "Threshold": {
          "type": "integer"
        },
        "Type": {}
      },
      "required": [
        "Type",
        "Inverted",
        "Threshold"
      ]
    },
    "St": {
      "type": "structure",
      "members": {
        "AssertedControls": {
          "shape": "So"
        },
        "ControlPanelArn": {},
        "Name": {},
        "RuleConfig": {
          "shape": "Sp"
        },
        "SafetyRuleArn": {},
        "Status": {},
        "WaitPeriodMs": {
          "type": "integer"
        }
      },
      "required": [
        "Status",
        "ControlPanelArn",
        "SafetyRuleArn",
        "AssertedControls",
        "RuleConfig",
        "WaitPeriodMs",
        "Name"
      ]
    },
    "Su": {
      "type": "structure",
      "members": {
        "ControlPanelArn": {},
        "GatingControls": {
          "shape": "So"
        },
        "Name": {},
        "RuleConfig": {
          "shape": "Sp"
        },
        "SafetyRuleArn": {},
        "Status": {},
        "TargetControls": {
          "shape": "So"
        },
        "WaitPeriodMs": {
          "type": "integer"
        }
      },
      "required": [
        "Status",
        "TargetControls",
        "ControlPanelArn",
        "SafetyRuleArn",
        "GatingControls",
        "RuleConfig",
        "WaitPeriodMs",
        "Name"
      ]
    }
  }
}