{
  "openapi" : "3.0.3",
  "info" : {
    "contact" : {
      "email" : "support@antimatter.io"
    },
    "description" : "Interact with the Antimatter Cloud API",
    "license" : {
      "name" : "Apache-2.0",
      "url" : "http://www.apache.org/licenses/LICENSE-2.0.html"
    },
    "termsOfService" : "https://antimatter.io/terms/",
    "title" : "Antimatter Public API",
    "version" : "1.2.1"
  },
  "externalDocs" : {
    "description" : "Find out more about Antimatter",
    "url" : "https://docs.antimatter.io"
  },
  "servers" : [ {
    "url" : "https://api.antimatter.io/v1"
  } ],
  "security" : [ {
    "domain_identity" : [ ]
  } ],
  "tags" : [ {
    "description" : "Endpoints for miscellaneous management of domains",
    "name" : "General"
  }, {
    "description" : "Endpoints for configuring domain policy (access control to Antimatter)",
    "name" : "Policy"
  }, {
    "description" : "Endpoints for managing or authenticating identities within a domain",
    "name" : "Authentication"
  }, {
    "description" : "Endpoints for creating and managing capsules",
    "name" : "Capsules"
  }, {
    "description" : "Endpoints for managing encryption keys and configuration",
    "name" : "Encryption"
  }, {
    "description" : "Endpoints for configuring read and write context policy that impact how data is handled",
    "name" : "Contexts"
  }, {
    "description" : "Endpoints for managing an Antimatter \"global account\" which has a set of starred domains. This is the account used for logging in to the web UI.\n",
    "name" : "Account management"
  }, {
    "description" : "These are endpoints predominantly intended to be used through our language SDKs, rather than directly through the REST API.\n",
    "name" : "Internal"
  } ],
  "paths" : {
    "/capsules/{capsuleID}" : {
      "get" : {
        "description" : "This endpoint allows you to get a Capsule without knowing the Domain ID. It will redirect the user to the full `/domains/{domainID}/capsules/{capsuleID}` path.\n",
        "operationId" : "capsuleGetById",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "capsuleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/CapsuleID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "301" : {
            "description" : "Redirect to the fully specified URI for this Capsule",
            "headers" : {
              "Location" : {
                "explode" : false,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid Capsule ID supplied."
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Capsule not found."
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "security" : [ ],
        "summary" : "Get a Capsule by ID",
        "tags" : [ "Capsules" ]
      }
    },
    "/domains" : {
      "post" : {
        "description" : "Add a new domain with no default peer relationships. You will need to confirm the email address before the domain is able to be interacted with.\n",
        "operationId" : "domainAddNew",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NewDomain"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/NewDomainResponse"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Resource not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "security" : [ ],
        "summary" : "Add a new domain",
        "tags" : [ "General" ]
      }
    },
    "/domains/{domainID}/public-info" : {
      "get" : {
        "description" : "Returns a Domain's summary information. This endpoint does not require authorization. This endpoint can be used to determine which identity providers the `/authenticate` endpoint supports.\n",
        "operationId" : "domainGetPublicInfo",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainPublicInfo"
                }
              }
            },
            "description" : "successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "security" : [ ],
        "summary" : "Get the public info for a Domain",
        "tags" : [ "General" ]
      }
    },
    "/domains/{domainID}/info" : {
      "get" : {
        "description" : "Returns a Domain's summary information. This may include more information than the `public-info` endpoint but requires authentication.\n",
        "operationId" : "domainGetPrivateInfo",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainPrivateInfo"
                }
              }
            },
            "description" : "successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get the summary info for a Domain",
        "tags" : [ "General" ]
      }
    },
    "/domains/{domainID}/tag-info" : {
      "get" : {
        "description" : "Get an ordered list of the top 100 tags. The ordering is: - Tags emitted by hooks - Tags referenced in read context rules - Capsule and span tags that appear in the capsule manifest ordered by number of appearances This list will be truncated (and `has_more` will be true) if the above yields more than 100 tags. There is currently no endpoint to receive a complete list of tags.\n",
        "operationId" : "domainGetTagInfo",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainTagInfoResults"
                }
              }
            },
            "description" : "Ordered list of the top 100 tags."
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get an ordered list of the top 100 tags.",
        "tags" : [ "Capsules" ]
      }
    },
    "/domains/{domainID}/peer-domain" : {
      "get" : {
        "description" : "Retrieve the details of a domain that is configured as a peer of this domain, by using its alias or one of its nicknames\n",
        "operationId" : "domainGetPeer",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : true,
          "in" : "query",
          "name" : "nickname",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        }, {
          "explode" : true,
          "in" : "query",
          "name" : "alias",
          "required" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ImportAlias"
          },
          "style" : "form"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Domain"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain, alias or nickname not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get a peer domain by nickname or alias",
        "tags" : [ "General" ]
      },
      "post" : {
        "description" : "Create a domain with a default \"subordinate\" peering relationship with the current domain.\nNamely, the current \"parent\" domain will be configured to allow the new \"child\" domain to use the parent's billing and admin contact settings, and the child domain will be configured to import those settings.\nOptionally, similar linking can be performed for identity providers, read/write contexts and facts by setting the appropriate linkX parameter to true. In most cases, what you want is to set `linkAll=true`.\nNote, that a \"subdomain\" is just shorthand for a domain with the above-described peering config. This peering can be changed at any time, and there is no permanent difference between a domain created in this way, and a domain created with POST /domains.\n",
        "operationId" : "domainCreatePeerDomain",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreatePeerDomain"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/NewDomainResponse"
                }
              }
            },
            "description" : "successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "409" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConflictError"
                }
              }
            },
            "description" : "Resource conflict"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Create a peer domain",
        "tags" : [ "General" ]
      }
    },
    "/domains/{domainID}/authenticate" : {
      "post" : {
        "description" : "Use an authentication method to obtain a domain ID token which is used as the bearer for all other endpoints. You can use the `/public-info` route to obtain a list of identity providers supported by this endpoint.\n",
        "operationId" : "domainAuthenticate",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : true,
          "in" : "query",
          "name" : "identityProviderName",
          "required" : false,
          "schema" : {
            "$ref" : "#/components/schemas/IdentityProviderName"
          },
          "style" : "form"
        }, {
          "explode" : true,
          "in" : "query",
          "name" : "tokenExchange",
          "required" : false,
          "schema" : {
            "type" : "boolean"
          },
          "style" : "form"
        }, {
          "description" : "Lifetime of token in seconds. Setting this will override the domain default. This cannot be greater than the domain's maximum token lifetime. The default and maximum token lifetime values can be seen and set at the `/control/settings` route.\n",
          "explode" : true,
          "in" : "query",
          "name" : "tokenLifetime",
          "required" : false,
          "schema" : {
            "type" : "integer"
          },
          "style" : "form"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DomainAuthenticate"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainAuthenticateResponse"
                }
              }
            },
            "description" : "successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "security" : [ ],
        "summary" : "Authenticate with a domain",
        "tags" : [ "Authentication" ]
      }
    },
    "/domains/{domainID}/encryption/flush" : {
      "post" : {
        "description" : "Flush all keys in memory. The keys will be immediately reloaded from persistent storage, forcing a check that the domain's root encryption key is still available\n",
        "operationId" : "domainFlushEncryptionKeys",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "properties" : { },
                "type" : "object"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Flush all encryption keys",
        "tags" : [ "Encryption" ]
      }
    },
    "/domains/{domainID}/control/keys/disaster-recovery" : {
      "get" : {
        "description" : "Return the current domain's disaster recovery settings.\n",
        "operationId" : "domainGetDisasterRecoverySettings",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DisasterRecoverySettings"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "409" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConflictError"
                }
              }
            },
            "description" : "Resource conflict"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get a domain's disaster recovery settings.",
        "tags" : [ "General" ]
      },
      "put" : {
        "description" : "Create or update the current domain's disaster recovery settings.\n",
        "operationId" : "domainPutDisasterRecoverySettings",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DisasterRecoverySettings"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "409" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConflictError"
                }
              }
            },
            "description" : "Resource conflict"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Create or update a domain's disaster recovery settings.",
        "tags" : [ "General" ]
      }
    },
    "/domains/{domainID}/control/vendor/settings" : {
      "get" : {
        "description" : "Return the current vendor settings for a given domain.\n",
        "operationId" : "domainGetVendorSettings",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/VendorSettings"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "409" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConflictError"
                }
              }
            },
            "description" : "Resource conflict"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get vendor settings for the domain",
        "tags" : [ "General" ]
      },
      "put" : {
        "description" : "Create or update the vendor settings for a given domain.\n",
        "operationId" : "domainPutVendorSettings",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NewVendorSettings"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "409" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConflictError"
                }
              }
            },
            "description" : "Resource conflict"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Create or update vendor settings",
        "tags" : [ "Authentication" ]
      }
    },
    "/domains/{domainID}/control/capabilities" : {
      "get" : {
        "description" : "Get the capabilities configured within the domain. A capability is a key/value pair that can be attached to a principal by an identity provider. The capabilities can be referenced by the domain policy rules.\n",
        "operationId" : "domainGetCapabilities",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CapabilityDefinitionList"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get the domain capabilities",
        "tags" : [ "Authentication" ]
      }
    },
    "/domains/{domainID}/control/capabilities/{capability}" : {
      "delete" : {
        "description" : "Delete a capability. All domain policy rules that reference the capability must have already been deleted, or you will receive a 409 error.\n",
        "operationId" : "domainDeleteCapability",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the name for this capability, like \"admin\"",
          "explode" : false,
          "in" : "path",
          "name" : "capability",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/CapabilityName"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or capability not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "409" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConflictError"
                }
              }
            },
            "description" : "There are rules that reference this capability that must be removed before this capability can be deleted\n"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Delete a capability",
        "tags" : [ "Authentication" ]
      },
      "get" : {
        "description" : "Get a capability. A capability is a key/value pair that can be  attached to a principal by an identity provider. The capabilities can be referenced by the domain policy rules.\n",
        "operationId" : "domainGetCapability",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the name for this capability, like \"admin\"",
          "explode" : false,
          "in" : "path",
          "name" : "capability",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/CapabilityReference"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CapabilityDefinition"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get a single capability",
        "tags" : [ "Authentication" ]
      },
      "put" : {
        "description" : "Create or update a capability. If you want to return an error if the capability already existed, set `createonly` to true.\n",
        "operationId" : "domainPutCapability",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the name for this capability, like \"admin\"",
          "explode" : false,
          "in" : "path",
          "name" : "capability",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/CapabilityName"
          },
          "style" : "simple"
        }, {
          "description" : "return an error if the capability already existed",
          "explode" : true,
          "in" : "query",
          "name" : "createonly",
          "required" : false,
          "schema" : {
            "type" : "boolean"
          },
          "style" : "form"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NewCapabilityDefinition"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "409" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConflictError"
                }
              }
            },
            "description" : "Create only was set but a capability with this name already existed.\n"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Create or update a capability",
        "tags" : [ "Authentication" ]
      }
    },
    "/domains/{domainID}/control/facts" : {
      "get" : {
        "description" : "Get a list of the fact types in this domain. Facts are used by domain policy rules and read context rules.\n",
        "operationId" : "domainListFactTypes",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainFactList"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "List the domain's fact types",
        "tags" : [ "Policy" ]
      }
    },
    "/domains/{domainID}/control/facts/{factType}" : {
      "delete" : {
        "description" : "Deletes a fact type and all facts inside it\n",
        "operationId" : "domainDeleteFactType",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the \"type name\" for this fact, like \"has_role\"",
          "explode" : false,
          "in" : "path",
          "name" : "factType",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/FactTypeName"
          },
          "style" : "simple"
        }, {
          "description" : "the fact type again, to confirm you really want to delete it",
          "explode" : true,
          "in" : "query",
          "name" : "confirm",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/FactTypeName"
          },
          "style" : "form"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or fact type not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Delete a fact type",
        "tags" : [ "Policy" ]
      },
      "get" : {
        "description" : "Get the definition of the given fact type\n",
        "operationId" : "domainGetFactType",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the \"type name\" for this fact, like \"has_role\"",
          "explode" : false,
          "in" : "path",
          "name" : "factType",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/FactTypeReference"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FactTypeDefinition"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or fact type not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get a fact type definition",
        "tags" : [ "Policy" ]
      },
      "put" : {
        "description" : "Facts are used to store ancillary information that helps express domain policy rules and read context configuration rules. This endpoint allows you to register a new fact type. To create a fact within an existing type, use `/control/facts/{factType}/new`\n",
        "operationId" : "domainPutFactType",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the \"type name\" for this fact, like \"has_role\"",
          "explode" : false,
          "in" : "path",
          "name" : "factType",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/FactTypeName"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NewFactTypeDefinition"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Create a fact type",
        "tags" : [ "Policy" ]
      }
    },
    "/domains/{domainID}/control/facts/{factType}/list" : {
      "get" : {
        "description" : "Get the facts within a fact type\n",
        "operationId" : "domainListFacts",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the \"type name\" for this fact, like \"has_role\"",
          "explode" : false,
          "in" : "path",
          "name" : "factType",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/FactTypeReference"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FactList"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or fact type not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get facts for a type",
        "tags" : [ "Policy" ]
      }
    },
    "/domains/{domainID}/control/facts/{factType}/new" : {
      "post" : {
        "description" : "Create a new fact. The fact type must have been previously registered using `/control/facts/{factType}`. If an identical fact exists (having the same value for all fields), this call is a no-op and returns the same ID.\n",
        "operationId" : "domainUpsertFact",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the \"type name\" for this fact, like \"has_role\"",
          "explode" : false,
          "in" : "path",
          "name" : "factType",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/FactTypeName"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NewFact"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Fact"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or fact type not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Upsert a fact",
        "tags" : [ "Policy" ]
      }
    },
    "/domains/{domainID}/control/facts/{factType}/{factID}" : {
      "delete" : {
        "description" : "Delete a fact by ID\n",
        "operationId" : "domainDeleteFactByID",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the \"type name\" for this fact, like \"has_role\"",
          "explode" : false,
          "in" : "path",
          "name" : "factType",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/FactTypeName"
          },
          "style" : "simple"
        }, {
          "description" : "the ID for the fact to be deleted.",
          "explode" : false,
          "in" : "path",
          "name" : "factID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/FactID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain, fact type or fact ID not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "405" : {
            "description" : "Invalid input"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Delete a fact",
        "tags" : [ "Policy" ]
      },
      "get" : {
        "description" : "Returns the fact with the given ID\n",
        "operationId" : "domainGetFactByID",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the \"type name\" for this fact, like \"has_role\"",
          "explode" : false,
          "in" : "path",
          "name" : "factType",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/FactTypeReference"
          },
          "style" : "simple"
        }, {
          "description" : "the ID for the fact to be retrieved.",
          "explode" : false,
          "in" : "path",
          "name" : "factID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/FactID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Fact"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain, fact type or fact ID not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get a fact by ID",
        "tags" : [ "Policy" ]
      }
    },
    "/domains/{domainID}/control/identities" : {
      "get" : {
        "description" : "Retrieve the domain's identity providers and a brief overview of their configuration. This endpoint requires authentication, but you can obtain an abridged list of the domain identity providers prior to authentication by using the `/public-info` endpoint.\n",
        "operationId" : "domainListIdentityProviders",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainIdentityProviderList"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get a summary of the domain's Identity Providers",
        "tags" : [ "Authentication" ]
      }
    },
    "/domains/{domainID}/control/identities/group-providers" : {
      "get" : {
        "description" : "Retrieve details on what information is required in order to allow for mapping external domain group membership to capabilities at authentication.\n",
        "operationId" : "domainGetIdentityGroupProviders",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainIdentityGroupProviderDetails"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or identity provider not found"
          },
          "409" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConflictError"
                }
              }
            },
            "description" : "Resource conflict"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get supported group identity provider details",
        "tags" : [ "Authentication" ]
      }
    },
    "/domains/{domainID}/control/identities/{identityProviderName}" : {
      "delete" : {
        "description" : "Delete an identity provider. All domain tokens created using this identity provider will be invalidated. Take care not to remove the identity provider that is providing you admin access to your domain, as you may \"lock yourself out\".\n",
        "operationId" : "domainDeleteIdentityProvider",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "identityProviderName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/IdentityProviderName"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or identity provider not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Delete an identity provider",
        "tags" : [ "Authentication" ]
      },
      "get" : {
        "description" : "Retrieve detailed information and configuration of an identity provider.\n",
        "operationId" : "domainGetIdentityProvider",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "identityProviderName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/IdentityProviderReference"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainIdentityProviderInfo"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or identity provider not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get an identity provider's details",
        "tags" : [ "Authentication" ]
      },
      "put" : {
        "description" : "Create or configure an identity provider.\n",
        "operationId" : "domainUpsertIdentityProvider",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "identityProviderName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/IdentityProviderName"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DomainIdentityProviderDetails"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainIdentityProviderInfo"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Create/Update an identity provider",
        "tags" : [ "Authentication" ]
      }
    },
    "/domains/{domainID}/control/identities/{identityProviderName}/principals" : {
      "get" : {
        "description" : "Retrieve a list of principals for an identity provider.\n",
        "operationId" : "domainGetIdentityProviderPrincipals",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "identityProviderName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/IdentityProviderName"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainIdentityProviderPrincipalList"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or identity provider not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get an identity provider's principals",
        "tags" : [ "Authentication" ]
      },
      "post" : {
        "description" : "Create a new principal for the provider. Note that the identityProviderName must refer to an existing identity provider or the response will be a 400.\n",
        "operationId" : "domainInsertIdentityProviderPrincipal",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "identityProviderName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/IdentityProviderName"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DomainIdentityProviderPrincipalParams"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/domainInsertIdentityProviderPrincipal_200_response"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Create a new principal for the provider",
        "tags" : [ "Authentication" ]
      }
    },
    "/domains/{domainID}/control/identities/{identityProviderName}/principals/{principalID}" : {
      "delete" : {
        "description" : "Delete an identity provider principal.\n",
        "operationId" : "domainDeleteIdentityProviderPrincipal",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "identityProviderName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/IdentityProviderName"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "principalID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/PrincipalID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or identity provider not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Delete identity provider principal",
        "tags" : [ "Authentication" ]
      },
      "get" : {
        "description" : "Retrieve detailed information about an identity provider principal.\n",
        "operationId" : "domainGetIdentityProviderPrincipal",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "identityProviderName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/IdentityProviderName"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "principalID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/PrincipalID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PrincipalInfo"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or identity provider not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get identity provider principal details",
        "tags" : [ "Authentication" ]
      },
      "put" : {
        "description" : "Update the set of capabilities assigned to an identity provider principal. The capabilities must exist.\n",
        "operationId" : "domainUpdateIdentityProviderPrincipal",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "identityProviderName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/IdentityProviderName"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "principalID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/PrincipalID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdatePrincipalParams"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or identity provider not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Update identity provider principal capabilities",
        "tags" : [ "Authentication" ]
      }
    },
    "/domains/{domainID}/account/verify" : {
      "get" : {
        "description" : "Verify an admin contact email recently associated with a domain. The token will have been emailed (in the form of a link) to the email address when `/account/verify` is called, the domain was initially created, or the email was added via the settings endpoint.\n",
        "operationId" : "domainContactVerify",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "Security token issued with verification request",
          "explode" : true,
          "in" : "query",
          "name" : "token",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "Google-issued JWT carrying the verification email address\n",
          "explode" : true,
          "in" : "query",
          "name" : "googleJWT",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "Email address to be tested against the supplied token",
          "explode" : true,
          "in" : "query",
          "name" : "address",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/VerifyContactResponse"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "security" : [ ],
        "summary" : "Verify an admin contact email",
        "tags" : [ "Authentication" ]
      },
      "post" : {
        "description" : "Issue a new verification request to a pending contact email associated with the domain. There is a rate limiter on this endpoint, you may need to wait between invocations.\n",
        "operationId" : "domainContactIssueVerify",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/domainContactIssueVerify_request"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Too many requests"
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "security" : [ ],
        "summary" : "Issue a new verification request",
        "tags" : [ "Authentication" ]
      }
    },
    "/domains/{domainID}/control/settings" : {
      "get" : {
        "description" : "Get the domain settings. This contains configuration for the contact email addresses as well as the display name for the domain.\n",
        "operationId" : "domainGetSettings",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainSettings"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get the domain settings",
        "tags" : [ "General" ]
      },
      "patch" : {
        "description" : "Applies the given patch to the domain settings.\n",
        "operationId" : "domainPatchSettings",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DomainSettingsPatch"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainSettings"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Update the domain settings",
        "tags" : [ "General" ]
      }
    },
    "/domains/{domainID}/control/status" : {
      "get" : {
        "description" : "The domain status object contains important notifications for administrators of the domain\n",
        "operationId" : "domainGetStatus",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainStatus"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get the domain status",
        "tags" : [ "General" ]
      }
    },
    "/domains/{domainID}/control/resources" : {
      "get" : {
        "description" : "Gets a list of resource strings that can be used in policy rules, and the set of permissions that you can assign to them. The return value from this endpoint is useful as a reference when authoring custom domain policy for new capabilities.\n",
        "operationId" : "domainListResources",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainResourceSummary"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get a summary of access control resource paths",
        "tags" : [ "Policy" ]
      }
    },
    "/domains/{domainID}/control/policy" : {
      "get" : {
        "description" : "Get the domain policy rules. These govern which resources in the domain can be interacted with.\nNote that the peers \"bypass\" these rules, in that a peer domain can retrieve policy and configuration that has been allowed by peering configuration without needing an allowing domain policy rule, but they cannot access data within this domain.\n",
        "operationId" : "domainListPolicyRules",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainPolicy"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get the domain policy rules",
        "tags" : [ "Policy" ]
      },
      "post" : {
        "description" : "Create a domain policy rule\n",
        "operationId" : "domainCreatePolicyRule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NewDomainPolicyRule"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainPolicyRule"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Create a domain policy rule",
        "tags" : [ "Policy" ]
      }
    },
    "/domains/{domainID}/control/policy/flush" : {
      "post" : {
        "description" : "Flush the policy cache so that changes to permissions take effect",
        "operationId" : "domainPolicyFlush",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Flush the policy cache",
        "tags" : [ "Policy" ]
      }
    },
    "/domains/{domainID}/control/policy/renumber" : {
      "post" : {
        "description" : "Re-assign rule priority numbers to integer multiples of 10",
        "operationId" : "domainRenumberPolicyRules",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "properties" : { },
                "type" : "object"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainPolicy"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Re-assign rule numbers",
        "tags" : [ "Policy" ]
      }
    },
    "/domains/{domainID}/control/policy/{ruleID}" : {
      "delete" : {
        "description" : "Delete a domain policy rule by ID",
        "operationId" : "domainDeletePolicyRule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "ruleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/RuleID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or rule not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Delete a domain policy rule",
        "tags" : [ "Policy" ]
      },
      "put" : {
        "description" : "Update a domain policy rule",
        "operationId" : "domainUpdatePolicyRule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "ruleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/RuleID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NewDomainPolicyRule"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or rule not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Update a domain policy rule",
        "tags" : [ "Policy" ]
      }
    },
    "/domains/{domainID}/control/write-context" : {
      "get" : {
        "description" : "List the domain write contexts. If a user has view permissions on this resource, they may list all write contexts, even if they do not have view, edit or use permissions on some of the write contexts in the list.\n",
        "operationId" : "domainListWriteContexts",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WriteContextList"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "List domain write contexts",
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/control/write-context/{contextName}" : {
      "delete" : {
        "description" : "Delete a write context. All configuration associated with this write context will also be deleted. Domain policy rules referencing this write context will be left as-is\n",
        "operationId" : "domainDeleteWriteContext",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/WriteContextName"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or write context not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Delete a write context",
        "tags" : [ "Contexts" ]
      },
      "get" : {
        "description" : "Returns a detailed description of a write context",
        "operationId" : "domainDescribeWriteContext",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/WriteContextReference"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WriteContextDetails"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or write context not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Describe a write context",
        "tags" : [ "Contexts" ]
      },
      "put" : {
        "description" : "Create or update an existing write context. If the config is omitted, it will be left as-is (existing write contexts) or created as blank (new write contexts)\n",
        "operationId" : "domainUpsertWriteContext",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/WriteContextName"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddWriteContext"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Upsert a write context",
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/control/write-context/{contextName}/config" : {
      "put" : {
        "description" : "Update a write context configuration. The write context must already exist.",
        "operationId" : "domainUpsertWriteContextConfiguration",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/WriteContextName"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WriteContextConfigInfo"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or write context not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Update a write context configuration",
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/control/read-context/{contextName}/flush" : {
      "post" : {
        "description" : "Flush the read context cache so that changes to permissions take effect",
        "operationId" : "domainReadContextFlush",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/ReadContextName"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "409" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConflictError"
                }
              }
            },
            "description" : "Resource conflict"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Flush the read context cache",
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/control/write-context/{contextName}/classifier-rule" : {
      "get" : {
        "description" : "Get a full listing of all classifier rules for the context",
        "operationId" : "domainGetWriteContextClassifierRules",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/WriteContextName"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/domainGetWriteContextClassifierRules_200_response"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or write context not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "tags" : [ "Contexts" ]
      },
      "post" : {
        "description" : "Create a new classifier rule for a write context.",
        "operationId" : "domainInsertWriteContextClassifierRule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/WriteContextName"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ClassifierRule"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/domainInsertWriteContextClassifierRule_200_response"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or write context not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Insert a write context classifier rule",
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/control/write-context/{contextName}/classifier-rule/{ruleID}" : {
      "delete" : {
        "description" : "Delete a classifier rule for the write context",
        "operationId" : "domainDeleteWriteContextClassifierRule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/WriteContextName"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "ruleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/RuleID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain, write context, or rule ID not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/control/write-context/{contextName}/regex-rule" : {
      "get" : {
        "description" : "Get a full listing of all regex rules for the context",
        "operationId" : "domainGetWriteContextRegexRules",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/WriteContextName"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#/components/schemas/WriteContextRegexRule"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or write context not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "tags" : [ "Contexts" ]
      },
      "post" : {
        "description" : "Create a new regex rule for a write context.",
        "operationId" : "domainInsertWriteContextRegexRule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/WriteContextName"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WriteContextRegexRule"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/domainInsertWriteContextClassifierRule_200_response"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or write context not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Insert a write context regex rule",
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/control/write-context/{contextName}/regex-rule/{ruleID}" : {
      "delete" : {
        "description" : "Delete a regex classifier rule for the context",
        "operationId" : "domainDeleteWriteContextRegexRule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/WriteContextName"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "ruleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/RuleID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain, write context, or rule ID not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/control/read-context" : {
      "get" : {
        "description" : "List the domain read contexts. If a user has view permissions on this resource, they may list all read contexts, even if they do not have view, edit or use permissions on some of the read contexts in the list.\n",
        "operationId" : "domainListReadContexts",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ReadContextList"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "List domain read contexts",
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/control/read-context/{contextName}" : {
      "delete" : {
        "description" : "Delete a read context. All configuration associated with this read context will also be deleted. Domain policy rules referencing this read context will be left as-is\n",
        "operationId" : "domainDeleteReadContext",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/ReadContextName"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or read context not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Delete a read context",
        "tags" : [ "Contexts" ]
      },
      "get" : {
        "description" : "Returns information about a read context\n",
        "operationId" : "domainGetReadContext",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/ReadContextReference"
          },
          "style" : "simple"
        }, {
          "description" : "Optionally includes the policy bundle in the response",
          "explode" : true,
          "in" : "query",
          "name" : "includePolicyBundle",
          "required" : false,
          "schema" : {
            "default" : false,
            "type" : "boolean"
          },
          "style" : "form"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ReadContextDetails"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or read context not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get a read context",
        "tags" : [ "Contexts" ]
      },
      "put" : {
        "description" : "Update or create a read context",
        "operationId" : "domainUpsertReadContext",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/ReadContextName"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddReadContext"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Update or create a read context",
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/control/read-context/{contextName}/config" : {
      "post" : {
        "description" : "Read context configuration is rule based, much like domain policy. This adds a new rule to the read context. Rules are processed in priority order, stopping with the first matching rule.\n",
        "operationId" : "domainAddReadContextRule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/ReadContextName"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NewReadContextConfigRule"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/domainAddReadContextRule_200_response"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or read context not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Add a read context configuration rule",
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/control/read-context/{contextName}/config/{ruleID}" : {
      "delete" : {
        "description" : "Deletes a read context configuration rule by ID.",
        "operationId" : "domainDeleteReadContextRule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/ReadContextName"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "ruleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/RuleID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain, read context or rule not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Delete a read context configuration rule",
        "tags" : [ "Contexts" ]
      },
      "put" : {
        "description" : "Update a read context configuration rule. The rule must already exist",
        "operationId" : "domainUpdateReadContextRule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "contextName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/ReadContextName"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "ruleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/RuleID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NewReadContextConfigRule"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain, read context or rule not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Update a read context configuration rule",
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/control/peers" : {
      "get" : {
        "description" : "Returns a list of this domains peers",
        "operationId" : "domainListPeers",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainPeerList"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "List domain peers",
        "tags" : [ "General" ]
      }
    },
    "/domains/{domainID}/control/peers/{peerDomainID}" : {
      "delete" : {
        "description" : "Removes the peering relationship with the given domain",
        "operationId" : "domainDeletePeer",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "peerDomainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or peer not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Delete a peer domain",
        "tags" : [ "General" ]
      },
      "get" : {
        "description" : "Get the configuration for this peer.\n",
        "operationId" : "domainGetPeerConfig",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "peerDomainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainPeerConfig"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or peer not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get peer configuration",
        "tags" : [ "General" ]
      },
      "put" : {
        "description" : "Create or update the configuration for this peer. Please note, if the configuration already exists, it is updated to reflect the values in the request. This will include setting the fields to their default value if not supplied.\n",
        "operationId" : "domainUpdatePeer",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "peerDomainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DomainPeerConfig"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or peer not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Update peer configuration",
        "tags" : [ "General" ]
      }
    },
    "/domains/{domainID}/control/log" : {
      "get" : {
        "description" : "Query the domain control-plane audit log. Results are returned in reverse chronological order\n",
        "operationId" : "domainQueryControlLog",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the earlier date of the date range. As results are returned in reverse chronological order, this date corresponds with the end of the result set.\n",
          "explode" : true,
          "in" : "query",
          "name" : "start_date",
          "required" : false,
          "schema" : {
            "default" : "1970-01-01T01:01:01Z",
            "format" : "date-time",
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the later date of the date range. As results are returned in reverse chronological order, this date corresponds with the beginning of the result set. If not specified, defaults to the current time.\n",
          "explode" : true,
          "in" : "query",
          "name" : "end_date",
          "required" : false,
          "schema" : {
            "format" : "date-time",
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the number of results you would like returned. You may get more or less than this number, and it does not indicate anything about the availability of more records. Consult the returned \"has_more\" field to determine if there are more records available matching the filters and time range.\n",
          "explode" : true,
          "in" : "query",
          "name" : "num_results",
          "required" : false,
          "schema" : {
            "default" : 100,
            "maximum" : 2000,
            "minimum" : 10,
            "type" : "integer"
          },
          "style" : "form"
        }, {
          "description" : "which id to start from. This must be an ID of a record previously returned. The first result will have an ID less than this ID (because results are in reverse chronological order, and it is non-inclusive). You should omit this field if you are not continuing a paginated query.\n",
          "explode" : true,
          "in" : "query",
          "name" : "start_from_id",
          "required" : false,
          "schema" : {
            "$ref" : "#/components/schemas/LogEntryID"
          },
          "style" : "form"
        }, {
          "description" : "the session you would like to filter on. This will return results for only the provided session. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "session",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the URL you would like to filter on. This is a prefix matched filter and will return results starting with the provided string. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "url",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the description you would like to filter on. This is an in matched filter and will return results that  contain the provided string. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "description",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainControlLogResults"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get the domain control-plane audit log",
        "tags" : [ "General" ]
      }
    },
    "/domains/{domainID}/control/keys" : {
      "get" : {
        "description" : "List all external root encryption keys for the domain.\n",
        "operationId" : "domainListExternalRootEncryptionKey",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RootEncryptionKeyListResponse"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "List all external root encryption keys.",
        "tags" : [ "Encryption" ]
      },
      "post" : {
        "description" : "Add a new external root encryption key with its supporting access configuration.\n",
        "operationId" : "domainAddExternalRootEncryptionKey",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/KeyInfos"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RootEncryptionKeyIDResponse"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Add a new external root encryption key.",
        "tags" : [ "Encryption" ]
      }
    },
    "/domains/{domainID}/control/keys/{rootEncryptionKeyID}" : {
      "delete" : {
        "description" : "Delete an external root encryption key using its ID. This operation is only successful if the external root encryption key is not in use by any key encryption keys. Call the /keys/rotate endpoint to ensure that all KEKs have been migrated to the active REK.\n",
        "operationId" : "domainDeleteExternalRootEncryptionKey",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "rootEncryptionKeyID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/RootEncryptionKeyID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Delete an external root encryption key by ID.",
        "tags" : [ "Encryption" ]
      },
      "get" : {
        "description" : "Get an external root encryption key using its ID. This operation is only successful if the external root encryption key exists, and the requesting domain has permissions to view the key.\n",
        "operationId" : "domainGetExternalRootEncryptionKey",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "rootEncryptionKeyID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/RootEncryptionKeyID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RootEncryptionKeyItem"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "409" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConflictError"
                }
              }
            },
            "description" : "Resource conflict"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get an external root encryption key by ID.",
        "tags" : [ "Encryption" ]
      }
    },
    "/domains/{domainID}/control/keys/{rootEncryptionKeyID}/test" : {
      "post" : {
        "description" : "Attempts to use a root encryption key to encrypt and decrypt, validating its availability\n",
        "operationId" : "domainExternalRootEncryptionKeyTest",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "rootEncryptionKeyID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/RootEncryptionKeyID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "properties" : { },
                "type" : "object"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RootEncryptionKeyTestResponse"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "409" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConflictError"
                }
              }
            },
            "description" : "Resource conflict"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Test the health of a root encryption key",
        "tags" : [ "Encryption" ]
      }
    },
    "/domains/{domainID}/control/keys/active" : {
      "get" : {
        "description" : "Return the details about the current active root encryption key used by the domain.\n",
        "operationId" : "domainGetActiveExternalRootEncryptionKey",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RootEncryptionKeyItem"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get the active root encryption key's information.",
        "tags" : [ "Encryption" ]
      },
      "post" : {
        "description" : "This will set which root encryption is active: i.e. is used for new capsules, or is used to encrypt KEKs when `/keys/rotate` is called or when new capsules are created\n",
        "operationId" : "domainSetActiveExternalRootEncryptionKey",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ActiveRootEncryptionKeyID"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ActiveRootEncryptionKeyResponse"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Set the active root encryption key",
        "tags" : [ "Encryption" ]
      }
    },
    "/domains/{domainID}/control/keys/rotate" : {
      "post" : {
        "description" : "Collects key encryption keys not encrypted with the current active root encryption key, decrypts them with their original root encryption key, and then encrypts them with the active root encryption key. This is a batched operation and only 100 keys will be processed in a single call. In the response, \"has_more\" will be true if there are more KEKs that can be rotated. Usually the caller will call this endpoint in a loop until has_more is false.\n",
        "operationId" : "domainRotateRootEncryptionKeys",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "properties" : { },
                "type" : "object"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RotateKeyEncryptionKeyResponse"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Re-encrypt key encryption keys.",
        "tags" : [ "Encryption" ]
      }
    },
    "/domains/{domainID}/control/keys/providers" : {
      "get" : {
        "description" : "Returns a list of available root encryption key providers, along with their description and, if relevant, any additional information required to use them (e.g. for the delegated key provider `aws_am` the AWS account number to delegate to is returned).\n",
        "operationId" : "domainGetExternalRootEncryptionKeyProviders",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AvailableRootEncryptionKeyProviders"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Returns a list of available root encryption key providers.",
        "tags" : [ "Encryption" ]
      }
    },
    "/domains/{domainID}/log" : {
      "get" : {
        "description" : "Query the data access log for this domain. This contains all operations interacting with capsules within this domain. Results are returned in reverse chronological order\n",
        "operationId" : "domainQueryAccessLog",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the earlier date of the date range. As results are returned in reverse chronological order, this date corresponds with the end of the result set.\n",
          "explode" : true,
          "in" : "query",
          "name" : "start_date",
          "required" : false,
          "schema" : {
            "default" : "1970-01-01T01:01:01Z",
            "format" : "date-time",
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the later date of the date range. As results are returned in reverse chronological order, this date corresponds with the beginning of the result set. If not specified, defaults to the current time.\n",
          "explode" : true,
          "in" : "query",
          "name" : "end_date",
          "required" : false,
          "schema" : {
            "format" : "date-time",
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the number of results you would like returned. You may get more or less than this number, and it does not indicate anything about the availability of more records. Consult the returned \"has_more\" field to determine if there are more records available matching the filters and time range.\n",
          "explode" : true,
          "in" : "query",
          "name" : "num_results",
          "required" : false,
          "schema" : {
            "default" : 100,
            "maximum" : 2000,
            "minimum" : 10,
            "type" : "integer"
          },
          "style" : "form"
        }, {
          "description" : "which id to start from. This must be an ID of a record previously returned. The first result will have an ID less than this ID (because results are in reverse chronological order, and it is non-inclusive). You should omit this field if you are not continuing a paginated query.\n",
          "explode" : true,
          "in" : "query",
          "name" : "start_from_id",
          "required" : false,
          "schema" : {
            "$ref" : "#/components/schemas/LogEntryID"
          },
          "style" : "form"
        }, {
          "description" : "the session you would like to filter on. This will return results for only the provided session. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "session",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the location you would like to filter on. This is a matched filter and will return results starting with the provided string. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "location",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "a boolean indicator to indicate that the location you provided is a prefix or not. If this is set to true, then the filter provided in location is treated as a prefix. If not specified, this is treated as false.\n",
          "explode" : true,
          "in" : "query",
          "name" : "location_prefixed",
          "required" : false,
          "schema" : {
            "type" : "boolean"
          },
          "style" : "form"
        }, {
          "description" : "the operation you would like to filter on. This will filter on the provided operation type and return all results using the provided operation type. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "operation_type",
          "required" : false,
          "schema" : {
            "enum" : [ "create", "open", "read", "write" ],
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the allow tag key you would like to filter on. This accepts tag key only and will return all allowed tag results matching the provided tag key. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "allowed_tag",
          "required" : false,
          "schema" : {
            "$ref" : "#/components/schemas/TagName"
          },
          "style" : "form"
        }, {
          "description" : "the redacted or tokenized tag key you would like to filter on. This accepts a tag key only and will return all redacted and tokenized tag key results matching the provided tag key. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "redacted_or_tokenized_tag",
          "required" : false,
          "schema" : {
            "$ref" : "#/components/schemas/TagName"
          },
          "style" : "form"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccessLogResults"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get the domain data-plane audit log",
        "tags" : [ "Capsules" ]
      }
    },
    "/domains/{domainID}/hooks" : {
      "get" : {
        "description" : "Get a list of available hooks in this domain. Hooks can be added to write contexts to classify data.\n",
        "operationId" : "domainListHooks",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainHooksList"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Lists available hooks",
        "tags" : [ "Contexts" ]
      }
    },
    "/domains/{domainID}/hooks/data-tagging/{hookName}/invoke" : {
      "post" : {
        "description" : "Invoke a hook that operates on data and returns tags\n",
        "operationId" : "domainDataTaggingHookInvoke",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "hookName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/HookName"
          },
          "style" : "simple"
        }, {
          "explode" : true,
          "in" : "query",
          "name" : "writeContext",
          "required" : false,
          "schema" : {
            "$ref" : "#/components/schemas/WriteContextReference"
          },
          "style" : "form"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DataTaggingHookInput"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DataTaggingHookResponse"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Too many requests"
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Invoke a hook",
        "tags" : [ "Internal" ]
      }
    },
    "/domains/{domainID}/hooks/data-tagging/{hookName}/test" : {
      "post" : {
        "description" : "Invoke a hook that operates on data and returns tags. This endpoint is intended for testing purposes when creating regex or llm rules before adding them to write contexts, or for one-off classification of data without configuring a write context and so forth.\n",
        "operationId" : "domainDataTaggingHookTest",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "hookName",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/HookName"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/domainDataTaggingHookTest_request"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DataTaggingHookResponse"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Too many requests"
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Test a classifier rule with real input",
        "tags" : [ "Internal" ]
      }
    },
    "/domains/{domainID}/capsules" : {
      "get" : {
        "description" : "Get information about capsules\n",
        "operationId" : "domainListCapsules",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the earlier date of the date range. As results are returned in reverse chronological order, this date corresponds with the end of the result set.\n",
          "explode" : true,
          "in" : "query",
          "name" : "start_date",
          "required" : false,
          "schema" : {
            "default" : "1970-01-01T01:01:01Z",
            "format" : "date-time",
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the later date of the date range. As results are returned in reverse chronological order, this date corresponds with the beginning of the result set. If not specified, defaults to the current time.\n",
          "explode" : true,
          "in" : "query",
          "name" : "end_date",
          "required" : false,
          "schema" : {
            "format" : "date-time",
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the number of results you would like returned. You may get more or less than this number, and it does not indicate anything about the availability of more records. Consult the returned \"has_more\" field to determine if there are more records available matching the filters and time range.\n",
          "explode" : true,
          "in" : "query",
          "name" : "num_results",
          "required" : false,
          "schema" : {
            "default" : 100,
            "maximum" : 2000,
            "minimum" : 10,
            "type" : "integer"
          },
          "style" : "form"
        }, {
          "description" : "the span tags you would like to filter on. This accepts a tag key only and will return all span tag key  results matching the provided tag key. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "span_tags",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the capsule field you would like to sort on. This accepts the field only and will return results ordered on the provided field. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "sort_on",
          "required" : false,
          "schema" : {
            "enum" : [ "created", "id", "size" ],
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the pagination key you would like to retrieve results after. This accepts the pagination key only and works in combination with the sort_on parameter to return records strictly after the provided pagination key. If not  specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "start_after",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the defines whether a sorted result should be order ascending. This accepts a boolean value and when true will work in combination with the sort_on and start_after parameters to return values in ascending order. If not  specified, this field is ignored and treated as false.\n",
          "explode" : true,
          "in" : "query",
          "name" : "ascending",
          "required" : false,
          "schema" : {
            "type" : "boolean"
          },
          "style" : "form"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CapsuleList"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or capsule not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get capsule list",
        "tags" : [ "Capsules" ]
      },
      "post" : {
        "description" : "Create a new capsule. The ID will be returned. Capsule will be \"unsealed\" first, meaning it's still in a creating state. Returns a capsule create token that can be used to feed in additional data about the capsule while it's still unsealed. Also returns a DEK and an encrypted DEK.\n",
        "operationId" : "domainCreateCapsule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : true,
          "in" : "query",
          "name" : "writeContext",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/WriteContextReference"
          },
          "style" : "form"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "properties" : { },
                "type" : "object"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CapsuleCreateResponse"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "403" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ForbiddenError"
                }
              }
            },
            "description" : "Server was unable to encrypt DEK using customer key"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Create a capsule",
        "tags" : [ "Internal" ]
      }
    },
    "/domains/{domainID}/capsules/{capsuleID}" : {
      "get" : {
        "description" : "Get the summary information about this capsule\n",
        "operationId" : "domainGetCapsuleInfo",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "capsuleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/CapsuleID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CapsuleInfo"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or capsule not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get capsule info",
        "tags" : [ "Capsules" ]
      }
    },
    "/domains/{domainID}/capsules/{capsuleID}/open" : {
      "post" : {
        "description" : "Given the encrypted DEK for this capsule, get back the decrypted DEK. contains the read context\n",
        "operationId" : "domainOpenCapsule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "capsuleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/CapsuleID"
          },
          "style" : "simple"
        }, {
          "explode" : true,
          "in" : "query",
          "name" : "readContext",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/ReadContextReference"
          },
          "style" : "form"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CapsuleOpenRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CapsuleOpenResponse"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "403" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ForbiddenError"
                }
              }
            },
            "description" : "Server was unable to decrypt DEK using customer key"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or capsule not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Open a capsule for reading",
        "tags" : [ "Internal" ]
      }
    },
    "/domains/{domainID}/capsules/{capsuleID}/log" : {
      "get" : {
        "description" : "Query the data-plane access log for this capsule. Results are returned in reverse chronological order.\n",
        "operationId" : "domainQueryAccessLogSingleCapsule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "description" : "the earlier date of the date range. As results are returned in reverse chronological order, this date corresponds with the end of the result set.\n",
          "explode" : true,
          "in" : "query",
          "name" : "start_date",
          "required" : false,
          "schema" : {
            "default" : "1970-01-01T01:01:01Z",
            "format" : "date-time",
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the later date of the date range. As results are returned in reverse chronological order, this date corresponds with the beginning of the result set. If not specified, defaults to the current time.\n",
          "explode" : true,
          "in" : "query",
          "name" : "end_date",
          "required" : false,
          "schema" : {
            "format" : "date-time",
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the number of results you would like returned. You may get more or less than this number, and it does not indicate anything about the availability of more records. Consult the returned \"has_more\" field to determine if there are more records available matching the filters and time range.\n",
          "explode" : true,
          "in" : "query",
          "name" : "num_results",
          "required" : false,
          "schema" : {
            "default" : 100,
            "maximum" : 2000,
            "minimum" : 10,
            "type" : "integer"
          },
          "style" : "form"
        }, {
          "description" : "which id to start from. This must be an ID of a record previously returned. The first result will have an ID less than this ID (because results are in reverse chronological order, and it is non-inclusive). You should omit this field if you are not continuing a paginated query.\n",
          "explode" : true,
          "in" : "query",
          "name" : "start_from_id",
          "required" : false,
          "schema" : {
            "$ref" : "#/components/schemas/LogEntryID"
          },
          "style" : "form"
        }, {
          "description" : "the session you would like to filter on. This will return results for only the provided session. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "session",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the location you would like to filter on. This is a matched filter and will return results starting with the provided string. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "location",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "a boolean indicator to indicate that the location you provided is a prefix or not. If this is set to true, then the filter provided in location is treated as a prefix. If not specified, this is treated as false.\n",
          "explode" : true,
          "in" : "query",
          "name" : "location_prefixed",
          "required" : false,
          "schema" : {
            "type" : "boolean"
          },
          "style" : "form"
        }, {
          "description" : "the operation you would like to filter on. This will filter on the provided operation type and return all results using the provided operation type. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "operation_type",
          "required" : false,
          "schema" : {
            "enum" : [ "create", "open", "read", "write" ],
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "the allow tag key you would like to filter on. This accepts tag key only and will return all allowed tag results matching the provided tag key. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "allowed_tag",
          "required" : false,
          "schema" : {
            "$ref" : "#/components/schemas/TagName"
          },
          "style" : "form"
        }, {
          "description" : "the redacted or tokenized tag key you would like to filter on. This accepts a tag key only and will return all redacted and tokenized tag key results matching the provided tag key. If not specified, this field is ignored.\n",
          "explode" : true,
          "in" : "query",
          "name" : "redacted_or_tokenized_tag",
          "required" : false,
          "schema" : {
            "$ref" : "#/components/schemas/TagName"
          },
          "style" : "form"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "capsuleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/CapsuleID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccessLogResults"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or capsule not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Get the access log for a single capsule",
        "tags" : [ "Capsules" ]
      },
      "post" : {
        "description" : "Adds a data-plane audit log entry for this capsule. Contains information about the originating principal and about read tag rollups. Contains an open capsule token (read from the file) to ensure that you legitimately read the capsule. Note that not all audit log entry types may be added with this method. Some (like open records) are generated server side.\n",
        "operationId" : "domainAddAccessLogEntry",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "capsuleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/CapsuleID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddCapsuleLogEntryRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or capsule not found"
          },
          "403" : {
            "description" : "The log entry is of a forbidden type"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Add a capsule audit log entry",
        "tags" : [ "Internal" ]
      }
    },
    "/domains/{domainID}/capsules/{capsuleID}/seal" : {
      "post" : {
        "description" : "Seal this capsule, if it's unsealed. Requires capsule create token",
        "operationId" : "domainSealCapsule",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "capsuleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/CapsuleID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CapsuleSealRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input, or capsule already sealed"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or capsule not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Seal a capsule",
        "tags" : [ "Internal" ]
      }
    },
    "/domains/{domainID}/capsules/{capsuleID}/span-tags" : {
      "put" : {
        "description" : "Upsert span tag rollups. This is only permitted when a capsule is not sealed. It requires a special \"capsule owner\" token that is returned by create capsule. Note that the rollup calculations must be done on the client side. This method only permits storing the entire rollup, not aggregating serverside. This is idempotent\n",
        "operationId" : "domainUpsertSpanTags",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "capsuleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/CapsuleID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpsertSpanTagsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or capsule not found"
          },
          "409" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConflictError"
                }
              }
            },
            "description" : "The capsule is sealed"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Upsert span-scope tags",
        "tags" : [ "Internal" ]
      }
    },
    "/domains/{domainID}/capsules/{capsuleID}/capsule-tags" : {
      "post" : {
        "description" : "Upsert capsule-level tags. This is permitted even after a capsule is sealed.\n",
        "operationId" : "domainUpsertCapsuleTags",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "capsuleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/CapsuleID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "items" : {
                  "$ref" : "#/components/schemas/Tag"
                },
                "type" : "array"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or capsule not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Upsert capsule-scope tags",
        "tags" : [ "Capsules" ]
      }
    },
    "/domains/{domainID}/capsules/{capsuleID}/capsule-tags/delete" : {
      "post" : {
        "description" : "Delete capsule-level tags",
        "operationId" : "domainDeleteCapsuleTags",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        }, {
          "explode" : false,
          "in" : "path",
          "name" : "capsuleID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/CapsuleID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DeleteTags"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain or capsule not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "summary" : "Delete capsule-level tags",
        "tags" : [ "Capsules" ]
      }
    },
    "/global/starred-domains" : {
      "get" : {
        "description" : "Returns a list of domains that the user has starred. This is a list of domain IDs, not domain names. The user must be authenticated to call this method.\n",
        "operationId" : "starredDomainList",
        "parameters" : [ ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/StarredDomainList"
                }
              }
            },
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "security" : [ {
          "oauth_token" : [ ]
        } ],
        "summary" : "List the user's starred domains",
        "tags" : [ "Account management" ]
      }
    },
    "/global/starred-domains/{domainID}" : {
      "delete" : {
        "description" : "Removes the domain from the list of starred domains for the user.",
        "operationId" : "starredDomainRemove",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "security" : [ {
          "oauth_token" : [ ]
        } ],
        "summary" : "Removes from starred domains",
        "tags" : [ "Account management" ]
      },
      "put" : {
        "description" : "Adds the domain to the list of starred domains for the user.",
        "operationId" : "starredDomainAdd",
        "parameters" : [ {
          "explode" : false,
          "in" : "path",
          "name" : "domainID",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "properties" : { },
                "type" : "object"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Successful operation"
          },
          "308" : {
            "content" : { },
            "description" : "Permanent Redirect",
            "headers" : {
              "Location" : {
                "description" : "The URL to which the client should be redirected",
                "explode" : false,
                "required" : true,
                "schema" : {
                  "type" : "string"
                },
                "style" : "simple"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvalidRequestError"
                }
              }
            },
            "description" : "Invalid input"
          },
          "401" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description" : "Unauthorized request"
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceNotFoundError"
                }
              }
            },
            "description" : "Domain not found"
          },
          "412" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreconditionFailedError"
                }
              }
            },
            "description" : "Precondition failed."
          },
          "429" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "description" : "Resource exhausted."
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Error"
                }
              }
            },
            "description" : "General Error"
          }
        },
        "security" : [ {
          "oauth_token" : [ ]
        } ],
        "summary" : "Adds to starred domains",
        "tags" : [ "Account management" ]
      }
    }
  },
  "components" : {
    "parameters" : {
      "pathDomainID" : {
        "explode" : false,
        "in" : "path",
        "name" : "domainID",
        "required" : true,
        "schema" : {
          "$ref" : "#/components/schemas/DomainID"
        },
        "style" : "simple"
      },
      "queryStartDate" : {
        "description" : "the earlier date of the date range. As results are returned in reverse chronological order, this date corresponds with the end of the result set.\n",
        "explode" : true,
        "in" : "query",
        "name" : "start_date",
        "required" : false,
        "schema" : {
          "default" : "1970-01-01T01:01:01Z",
          "format" : "date-time",
          "type" : "string"
        },
        "style" : "form"
      },
      "queryEndDate" : {
        "description" : "the later date of the date range. As results are returned in reverse chronological order, this date corresponds with the beginning of the result set. If not specified, defaults to the current time.\n",
        "explode" : true,
        "in" : "query",
        "name" : "end_date",
        "required" : false,
        "schema" : {
          "format" : "date-time",
          "type" : "string"
        },
        "style" : "form"
      },
      "queryNumResults" : {
        "description" : "the number of results you would like returned. You may get more or less than this number, and it does not indicate anything about the availability of more records. Consult the returned \"has_more\" field to determine if there are more records available matching the filters and time range.\n",
        "explode" : true,
        "in" : "query",
        "name" : "num_results",
        "required" : false,
        "schema" : {
          "default" : 100,
          "maximum" : 2000,
          "minimum" : 10,
          "type" : "integer"
        },
        "style" : "form"
      },
      "querySession" : {
        "description" : "the session you would like to filter on. This will return results for only the provided session. If not specified, this field is ignored.\n",
        "explode" : true,
        "in" : "query",
        "name" : "session",
        "required" : false,
        "schema" : {
          "type" : "string"
        },
        "style" : "form"
      },
      "queryLocation" : {
        "description" : "the location you would like to filter on. This is a matched filter and will return results starting with the provided string. If not specified, this field is ignored.\n",
        "explode" : true,
        "in" : "query",
        "name" : "location",
        "required" : false,
        "schema" : {
          "type" : "string"
        },
        "style" : "form"
      },
      "queryLocationPrefixed" : {
        "description" : "a boolean indicator to indicate that the location you provided is a prefix or not. If this is set to true, then the filter provided in location is treated as a prefix. If not specified, this is treated as false.\n",
        "explode" : true,
        "in" : "query",
        "name" : "location_prefixed",
        "required" : false,
        "schema" : {
          "type" : "boolean"
        },
        "style" : "form"
      },
      "queryOperationType" : {
        "description" : "the operation you would like to filter on. This will filter on the provided operation type and return all results using the provided operation type. If not specified, this field is ignored.\n",
        "explode" : true,
        "in" : "query",
        "name" : "operation_type",
        "required" : false,
        "schema" : {
          "enum" : [ "create", "open", "read", "write" ],
          "type" : "string"
        },
        "style" : "form"
      },
      "queryAllowedTag" : {
        "description" : "the allow tag key you would like to filter on. This accepts tag key only and will return all allowed tag results matching the provided tag key. If not specified, this field is ignored.\n",
        "explode" : true,
        "in" : "query",
        "name" : "allowed_tag",
        "required" : false,
        "schema" : {
          "$ref" : "#/components/schemas/TagName"
        },
        "style" : "form"
      },
      "queryRedactedOrTokenizedTags" : {
        "description" : "the redacted or tokenized tag key you would like to filter on. This accepts a tag key only and will return all redacted and tokenized tag key results matching the provided tag key. If not specified, this field is ignored.\n",
        "explode" : true,
        "in" : "query",
        "name" : "redacted_or_tokenized_tag",
        "required" : false,
        "schema" : {
          "$ref" : "#/components/schemas/TagName"
        },
        "style" : "form"
      },
      "queryUrl" : {
        "description" : "the URL you would like to filter on. This is a prefix matched filter and will return results starting with the provided string. If not specified, this field is ignored.\n",
        "explode" : true,
        "in" : "query",
        "name" : "url",
        "required" : false,
        "schema" : {
          "type" : "string"
        },
        "style" : "form"
      },
      "querySpanTags" : {
        "description" : "the span tags you would like to filter on. This accepts a tag key only and will return all span tag key  results matching the provided tag key. If not specified, this field is ignored.\n",
        "explode" : true,
        "in" : "query",
        "name" : "span_tags",
        "required" : false,
        "schema" : {
          "type" : "string"
        },
        "style" : "form"
      },
      "queryCapsulesSortOn" : {
        "description" : "the capsule field you would like to sort on. This accepts the field only and will return results ordered on the provided field. If not specified, this field is ignored.\n",
        "explode" : true,
        "in" : "query",
        "name" : "sort_on",
        "required" : false,
        "schema" : {
          "enum" : [ "created", "id", "size" ],
          "type" : "string"
        },
        "style" : "form"
      },
      "queryStartAfter" : {
        "description" : "the pagination key you would like to retrieve results after. This accepts the pagination key only and works in combination with the sort_on parameter to return records strictly after the provided pagination key. If not  specified, this field is ignored.\n",
        "explode" : true,
        "in" : "query",
        "name" : "start_after",
        "required" : false,
        "schema" : {
          "type" : "string"
        },
        "style" : "form"
      },
      "queryAscending" : {
        "description" : "the defines whether a sorted result should be order ascending. This accepts a boolean value and when true will work in combination with the sort_on and start_after parameters to return values in ascending order. If not  specified, this field is ignored and treated as false.\n",
        "explode" : true,
        "in" : "query",
        "name" : "ascending",
        "required" : false,
        "schema" : {
          "type" : "boolean"
        },
        "style" : "form"
      },
      "queryDescription" : {
        "description" : "the description you would like to filter on. This is an in matched filter and will return results that  contain the provided string. If not specified, this field is ignored.\n",
        "explode" : true,
        "in" : "query",
        "name" : "description",
        "required" : false,
        "schema" : {
          "type" : "string"
        },
        "style" : "form"
      },
      "queryStartFromId" : {
        "description" : "which id to start from. This must be an ID of a record previously returned. The first result will have an ID less than this ID (because results are in reverse chronological order, and it is non-inclusive). You should omit this field if you are not continuing a paginated query.\n",
        "explode" : true,
        "in" : "query",
        "name" : "start_from_id",
        "required" : false,
        "schema" : {
          "$ref" : "#/components/schemas/LogEntryID"
        },
        "style" : "form"
      }
    },
    "responses" : {
      "PermanentRedirect" : {
        "content" : { },
        "description" : "Permanent Redirect",
        "headers" : {
          "Location" : {
            "description" : "The URL to which the client should be redirected",
            "explode" : false,
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "style" : "simple"
          }
        }
      },
      "ResourceExhausted" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ResourceExhaustedError"
            }
          }
        },
        "description" : "Resource exhausted."
      },
      "PreconditionFailed" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/PreconditionFailedError"
            }
          }
        },
        "description" : "Precondition failed."
      }
    },
    "schemas" : {
      "Error" : {
        "description" : "An internal error",
        "properties" : {
          "traceID" : {
            "type" : "string"
          },
          "message" : {
            "type" : "string"
          }
        },
        "required" : [ "message", "traceID" ],
        "type" : "object"
      },
      "DomainID" : {
        "description" : "A globally unique identifier for a domain",
        "pattern" : "^dm-[1-9A-HJ-NP-Za-km-z]{11}$",
        "type" : "string"
      },
      "ImportAlias" : {
        "description" : "An alias for a peer domain. It must be unique within a domain. The alias is used to refer to the peer domain in policies. A peer may have only one alias\n",
        "pattern" : "^[a-z][a-z0-9_]{2,31}$",
        "type" : "string"
      },
      "CapsuleID" : {
        "description" : "A globally unique identifier for a capsule",
        "pattern" : "^ca-[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{22}$",
        "type" : "string"
      },
      "LogEntryID" : {
        "description" : "A globally unique chronological identifier for a log record. If you sort by this identifier, your logs will be in chronological order\n",
        "pattern" : "^[0-9a-f]{32}",
        "type" : "string"
      },
      "PrincipalID" : {
        "description" : "A unique identifier for a principal in an identity provider",
        "pattern" : "^pr-[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{11}$",
        "type" : "string"
      },
      "CapsuleOperationToken" : {
        "description" : "A token used to tie requests together when creating and reading capsules.",
        "minLength" : 64,
        "type" : "string"
      },
      "FactID" : {
        "description" : "An identifier for a fact",
        "pattern" : "^ft-[a-z0-9]{16}$",
        "type" : "string"
      },
      "SessionID" : {
        "description" : "An identifier for an authentication session",
        "pattern" : "^sn-[a-z0-9]{22}$",
        "type" : "string"
      },
      "CapabilityName" : {
        "description" : "An identifier for a capability",
        "pattern" : "^[a-z][a-z0-9-_]{2,16}$",
        "type" : "string"
      },
      "CapabilityReference" : {
        "description" : "An identifier for a capability that might be imported from a peer domain. If it is, it will bear an imported resource prefix (either a domain identifier or an alias, followed by ::)\n",
        "pattern" : "^((dm-[1-9A-HJ-NP-Za-km-z]{11}|[a-z][a-z0-9_]{2,31})::)?[a-z][a-z0-9-_]{2,16}$",
        "type" : "string"
      },
      "HookName" : {
        "description" : "An identifier for a hook",
        "pattern" : "^[a-z][a-z0-9-]{2,32}$",
        "type" : "string"
      },
      "RuleID" : {
        "description" : "An identifier for a rule",
        "pattern" : "^rl-[a-z0-9]{16}$",
        "type" : "string"
      },
      "VersionConstraint" : {
        "description" : "A pattern for expressing hook version requirements. Note that this is used for expressing two things. The first is which major version of the hook to run on new data. Here, if the version starts with > or no special character, the newest version of the hook is used. If it starts with ~, then the major version is respected, but the newest minor and patch version available on the server will be used.\nThe second function of this pattern is to express a minimum version for read contexts such that if the capsule does not have hook data meeting the requirement, the hook data will be generated just in time. For this, you may express ~1.2.3 to say \"if the hook data is older than 1.2.3, generate it with 1.x.x\" or you may say >1.2.3 to say \"if the hook data is older than 1.2.3, generate it with the newest version\" (which could be 2.x.x).\n",
        "pattern" : "^(?:\\^|>)?\\d+\\.\\d+\\.\\d+$",
        "type" : "string"
      },
      "WriteContextName" : {
        "description" : "A human readable name for a write context",
        "pattern" : "^[a-z][a-z0-9_]{2,31}$",
        "type" : "string"
      },
      "ReadContextName" : {
        "description" : "A human readable name for a read context",
        "pattern" : "^[a-z][a-z0-9_]{2,31}$",
        "type" : "string"
      },
      "WriteContextReference" : {
        "description" : "An identifier for a write context that might be imported from a peer domain. If it is, it will bear an imported resource prefix (either a domain identifier or an alias, followed by ::)\n",
        "pattern" : "^((dm-[1-9A-HJ-NP-Za-km-z]{11}|[a-z][a-z0-9_]{2,31})::)?[a-z][a-z0-9_]{2,31}$",
        "type" : "string"
      },
      "ReadContextReference" : {
        "description" : "A human readable name for a read context",
        "pattern" : "^((dm-[1-9A-HJ-NP-Za-km-z]{11}|[a-z][a-z0-9_]{2,31})::)?[a-z][a-z0-9_]{2,31}$",
        "type" : "string"
      },
      "FactTypeName" : {
        "description" : "A human readable name for a fact type",
        "pattern" : "^[a-z][a-z0-9_]{2,31}$",
        "type" : "string"
      },
      "FactTypeReference" : {
        "description" : "An identifier for a fact type that might be imported from a peer domain. If it is, it will bear an imported resource prefix (either a domain identifier or an alias, followed by ::)\n",
        "pattern" : "^((dm-[1-9A-HJ-NP-Za-km-z]{11}|[a-z][a-z0-9_]{2,31})::)?[a-z][a-z0-9_]{2,31}$",
        "type" : "string"
      },
      "RuleReference" : {
        "description" : "An identifier for a domain policy rule that might be imported from a peer domain. If it is, it will bear an imported resource prefix (either a domain identifier or an alias, followed by ::)\n",
        "pattern" : "^((dm-[1-9A-HJ-NP-Za-km-z]{11}|[a-z][a-z0-9_]{2,31})::)?rl-[a-z0-9]{16}$$",
        "type" : "string"
      },
      "IdentityProviderName" : {
        "description" : "A human readable name for an identity provider",
        "pattern" : "^[a-z][a-z0-9_]{2,31}$",
        "type" : "string"
      },
      "IdentityProviderReference" : {
        "description" : "An identifier for an identity provider that might be imported from a peer domain. If it is, it will bear an imported resource prefix (either a domain identifier or an alias, followed by ::)\n",
        "pattern" : "^((dm-[1-9A-HJ-NP-Za-km-z]{11}|[a-z][a-z0-9_]{2,31})::)?[a-z][a-z0-9_]{2,31}$",
        "type" : "string"
      },
      "TagName" : {
        "pattern" : "^[a-z0-9./-]{2,64}$",
        "type" : "string"
      },
      "RootEncryptionKeyID" : {
        "description" : "A UUID, or \"default\" used for identifying root encryption keys.",
        "pattern" : "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}|default$",
        "type" : "string"
      },
      "RootEncryptionKeyReference" : {
        "description" : "A UUID or reference used for identifying root encryption keys. May also be \"default\" or \"active\" to refer to the default or active key. Note that it is not permitted to use the default key in a different domain.\n",
        "pattern" : "^((dm-[1-9A-HJ-NP-Za-km-z]{11}|[a-z][a-z0-9_]{2,31})::)?([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}|default|active)$",
        "type" : "string"
      },
      "ResourceNotFoundError" : {
        "description" : "Returned when interacting with a valid URL, but the request references an unknown resource\n",
        "properties" : {
          "resourceType" : {
            "description" : "which resource type cannot be found",
            "type" : "string"
          },
          "identifier" : {
            "description" : "the identifier for the resource we cannot locate",
            "type" : "string"
          },
          "message" : {
            "description" : "a free form message describing the error",
            "type" : "string"
          }
        },
        "required" : [ "identifier", "message", "resourceType" ],
        "type" : "object"
      },
      "ConflictError" : {
        "description" : "Returned when attempting to delete a resource that is still in use by  other resources\n",
        "properties" : {
          "resourceType" : {
            "description" : "which resource type cannot be deleted",
            "type" : "string"
          },
          "identifier" : {
            "description" : "the identifier for the resource we cannot delete",
            "type" : "string"
          },
          "message" : {
            "description" : "a free form message describing one or more of the resources that depend upon the resource, preventing it's deletion\n",
            "type" : "string"
          }
        },
        "required" : [ "identifier", "message", "resourceType" ],
        "type" : "object"
      },
      "InvalidRequestError" : {
        "description" : "Returned when one of the identifiers or arguments in the request is invalid\n",
        "properties" : {
          "field" : {
            "description" : "which field or path in the query is erroneous",
            "type" : "string"
          },
          "message" : {
            "description" : "a free form message describing the error",
            "type" : "string"
          }
        },
        "required" : [ "field", "message" ],
        "type" : "object"
      },
      "ResourceExhaustedError" : {
        "description" : "Returned when the server is unable to process the request due to resource exhaustion or rate limiting\n",
        "properties" : {
          "resourceType" : {
            "description" : "which resource type is exhausted",
            "type" : "string"
          },
          "identifier" : {
            "description" : "identifier for the resource that is exhausted",
            "type" : "string"
          },
          "message" : {
            "description" : "a free form message describing the error",
            "type" : "string"
          }
        },
        "required" : [ "identifier", "message", "resourceType" ],
        "type" : "object"
      },
      "PreconditionFailedError" : {
        "description" : "Returned when the server is unable to process the request due to a failed precondition.\n",
        "properties" : {
          "resourceType" : {
            "description" : "which resource type failed precondition.",
            "type" : "string"
          },
          "identifier" : {
            "description" : "identifier for the resource that the precondition failed on",
            "type" : "string"
          },
          "message" : {
            "description" : "a free form message describing the error",
            "type" : "string"
          }
        },
        "required" : [ "identifier", "message", "resourceType" ],
        "type" : "object"
      },
      "UnauthorizedError" : {
        "description" : "Returned when the server cannot authorize the request\n",
        "properties" : {
          "message" : {
            "description" : "a free form message describing the error",
            "type" : "string"
          }
        },
        "required" : [ "message" ],
        "type" : "object"
      },
      "ForbiddenError" : {
        "description" : "Returned when the server is forbidden form performing some action on the user's behalf by a third-party service (for example, AWS KMS).\n",
        "properties" : {
          "message" : {
            "description" : "a free form message describing the error",
            "type" : "string"
          }
        },
        "required" : [ "message" ],
        "type" : "object"
      },
      "NewDomain" : {
        "description" : "Parameters when creating a domain",
        "properties" : {
          "adminEmail" : {
            "minLength" : 6,
            "type" : "string"
          },
          "googleJWT" : {
            "description" : "If supplied, and if the principal claim contains the email\naddress specified as adminEmail, skip email verification.\n",
            "type" : "string"
          },
          "displayName" : {
            "maxLength" : 40,
            "type" : "string"
          }
        },
        "required" : [ "adminEmail" ],
        "type" : "object"
      },
      "CreatePeerDomain" : {
        "description" : "Configuration options for creating a new subdomain.\n",
        "properties" : {
          "nicknames" : {
            "description" : "a list of names for this domain. These can be used to look up this domain later by using domainFromNickname. All nicknames for peer domains must be unique within a domain\n",
            "items" : {
              "maxLength" : 128,
              "type" : "string"
            },
            "type" : "array"
          },
          "importAliasForParent" : {
            "$ref" : "#/components/schemas/ImportAlias"
          },
          "importAliasForChild" : {
            "$ref" : "#/components/schemas/ImportAlias"
          },
          "displayNameForParent" : {
            "description" : "The default display name used for this domain. The display name is also treated as a nickname and so can be used from domainFromNickname.\n",
            "maxLength" : 40,
            "minLength" : 1,
            "type" : "string"
          },
          "displayNameForChild" : {
            "description" : "The default display name used for this domain. The display name is also treated as a nickname and so can be used from domainFromNickname.\n",
            "maxLength" : 40,
            "minLength" : 1,
            "type" : "string"
          },
          "linkAll" : {
            "default" : false,
            "type" : "boolean"
          },
          "linkIdentityProviders" : {
            "default" : false,
            "type" : "boolean"
          },
          "linkFacts" : {
            "default" : false,
            "type" : "boolean"
          },
          "linkReadContexts" : {
            "default" : false,
            "type" : "boolean"
          },
          "linkWriteContexts" : {
            "default" : false,
            "type" : "boolean"
          },
          "linkCapabilities" : {
            "default" : false,
            "type" : "boolean"
          },
          "linkDomainPolicy" : {
            "default" : false,
            "type" : "boolean"
          },
          "linkDataPolicy" : {
            "default" : false,
            "type" : "boolean"
          },
          "linkRootEncryptionKeys" : {
            "default" : false,
            "type" : "boolean"
          },
          "linkCapsuleAccessLog" : {
            "default" : false,
            "type" : "boolean"
          },
          "linkControlLog" : {
            "default" : false,
            "type" : "boolean"
          },
          "linkCapsuleManifest" : {
            "default" : false,
            "type" : "boolean"
          }
        },
        "required" : [ "displayNameForChild", "importAliasForChild" ],
        "type" : "object"
      },
      "DomainPublicInfo" : {
        "description" : "Public information about a domain",
        "properties" : {
          "defaultDisplayName" : {
            "description" : "User friendly display name.",
            "maxLength" : 40,
            "type" : "string"
          },
          "id" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "identityProviders" : {
            "description" : "A list of identity providers configured in a domain",
            "items" : {
              "$ref" : "#/components/schemas/DomainIdentityProviderInfo"
            },
            "type" : "array"
          }
        },
        "required" : [ "defaultDisplayName", "id", "identityProviders" ],
        "type" : "object"
      },
      "DomainPrivateInfo" : {
        "description" : "Private information about a domain",
        "properties" : {
          "defaultDisplayName" : {
            "description" : "User friendly display name.",
            "maxLength" : 40,
            "type" : "string"
          },
          "id" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "identityProviders" : {
            "description" : "A list of identity providers configured in a domain",
            "items" : {
              "$ref" : "#/components/schemas/DomainIdentityProviderInfo"
            },
            "type" : "array"
          }
        },
        "required" : [ "defaultDisplayName", "id", "identityProviders" ],
        "type" : "object"
      },
      "Domain" : {
        "description" : "Information about a domain",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/DomainID"
          }
        },
        "required" : [ "id" ],
        "type" : "object"
      },
      "NewDomainResponse" : {
        "description" : "Information returned from a successful domain create request",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "apiKey" : {
            "type" : "string"
          }
        },
        "required" : [ "apiKey", "id" ],
        "type" : "object"
      },
      "DomainAuthenticate" : {
        "description" : "An object containing external credentials that can be transmuted into a domain identity token\n",
        "properties" : {
          "token" : {
            "type" : "string"
          }
        },
        "required" : [ "token" ],
        "type" : "object"
      },
      "DomainAuthenticateResponse" : {
        "description" : "A domain identity token",
        "properties" : {
          "token" : {
            "type" : "string"
          },
          "expiry" : {
            "description" : "the token expiration, in UTC",
            "format" : "date-time",
            "type" : "string"
          },
          "advisory" : {
            "description" : "Optional advisory message for the caller. This can be used to indicate that the authenticating client is out of date\n",
            "items" : {
              "type" : "string"
            },
            "type" : "array"
          },
          "groupLookupResult" : {
            "description" : "Optional message for use if user domain group lookup resolution fails. If this field is populated, it indicates that no capabilities were retrieved that relate to domain group mappings.\n",
            "type" : "string"
          }
        },
        "required" : [ "token" ],
        "type" : "object"
      },
      "NewFactTypeDefinition" : {
        "description" : "A type definition (schema) for a fact being created\n",
        "properties" : {
          "description" : {
            "maxLength" : 4096,
            "type" : "string"
          },
          "arguments" : {
            "items" : {
              "$ref" : "#/components/schemas/NewFactTypeDefinition_arguments_inner"
            },
            "maxItems" : 16,
            "minItems" : 1,
            "type" : "array"
          }
        },
        "required" : [ "arguments", "description", "name" ],
        "type" : "object"
      },
      "FactTypeDefinition" : {
        "description" : "A type definition (schema) for a fact\n",
        "properties" : {
          "name" : {
            "$ref" : "#/components/schemas/FactTypeReference"
          },
          "description" : {
            "maxLength" : 4096,
            "type" : "string"
          },
          "arguments" : {
            "items" : {
              "$ref" : "#/components/schemas/NewFactTypeDefinition_arguments_inner"
            },
            "maxItems" : 16,
            "minItems" : 1,
            "type" : "array"
          },
          "imported" : {
            "description" : "true if this fact type is imported",
            "type" : "boolean"
          },
          "sourceDomainID" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "sourceDomainName" : {
            "type" : "string"
          }
        },
        "required" : [ "arguments", "description", "imported", "name" ],
        "type" : "object"
      },
      "DomainFactList" : {
        "description" : "A list of defined fact types in the domain\n",
        "properties" : {
          "factTypes" : {
            "items" : {
              "$ref" : "#/components/schemas/FactTypeDefinition"
            },
            "type" : "array"
          }
        },
        "required" : [ "factTypes" ],
        "type" : "object"
      },
      "NewFact" : {
        "description" : "A fact is a piece of auxiliary information that can be used as part of an authorization policy. They are usually expressed as a statement such as has_role(principal, role_name)\n",
        "properties" : {
          "arguments" : {
            "items" : {
              "maxLength" : 256,
              "type" : "string"
            },
            "maxItems" : 16,
            "minItems" : 1,
            "type" : "array"
          }
        },
        "required" : [ "arguments" ],
        "type" : "object"
      },
      "Fact" : {
        "description" : "A fact is a piece of auxiliary information that can be used as part of an authorization policy. They are usually expressed as a statement such as has_role(principal, role_name)\n",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/FactID"
          },
          "name" : {
            "$ref" : "#/components/schemas/FactTypeReference"
          },
          "arguments" : {
            "items" : {
              "maxLength" : 256,
              "type" : "string"
            },
            "maxItems" : 16,
            "minItems" : 1,
            "type" : "array"
          }
        },
        "required" : [ "arguments", "id", "name" ],
        "type" : "object"
      },
      "FactList" : {
        "description" : "A list of facts\n",
        "properties" : {
          "facts" : {
            "items" : {
              "$ref" : "#/components/schemas/Fact"
            },
            "type" : "array"
          }
        },
        "required" : [ "facts" ],
        "type" : "object"
      },
      "Capability" : {
        "description" : "A capability is attached to authenticated domain identities by an identity provider, and confers additional permissions upon the identity. This is done by writing domain policy rules that reference the capability.\n",
        "properties" : {
          "name" : {
            "$ref" : "#/components/schemas/CapabilityName"
          },
          "value" : {
            "maxLength" : 256,
            "type" : "string"
          }
        },
        "required" : [ "name" ],
        "type" : "object"
      },
      "NewCapabilityDefinition" : {
        "description" : "A capability is attached to authenticated domain identities by an identity provider, and confers additional permissions upon the identity. This is done by writing domain policy rules that reference the capability.\n",
        "properties" : {
          "unary" : {
            "default" : false,
            "description" : "a unary capability does not have a value",
            "type" : "boolean"
          },
          "summary" : {
            "description" : "A short, single sentence description of this capability",
            "maxLength" : 140,
            "type" : "string"
          },
          "description" : {
            "description" : "A longer form description of this capability",
            "maxLength" : 4096,
            "type" : "string"
          }
        },
        "required" : [ "description", "summary", "unary" ],
        "type" : "object"
      },
      "CapabilityDefinition" : {
        "description" : "A capability is attached to authenticated domain identities by an identity provider, and confers additional permissions upon the identity. This is done by writing domain policy rules that reference the capability.\n",
        "properties" : {
          "name" : {
            "$ref" : "#/components/schemas/CapabilityReference"
          },
          "unary" : {
            "default" : false,
            "description" : "a unary capability does not have a value",
            "type" : "boolean"
          },
          "summary" : {
            "description" : "A short, single sentence description of this capability",
            "maxLength" : 140,
            "type" : "string"
          },
          "description" : {
            "description" : "A longer form description of this capability",
            "maxLength" : 4096,
            "type" : "string"
          },
          "imported" : {
            "description" : "Is this capability imported from a peer domain. Imported capabilities cannot be assigned to users, but can be referenced from domain policy rules\n",
            "type" : "boolean"
          },
          "sourceDomainID" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "sourceDomainName" : {
            "type" : "string"
          }
        },
        "required" : [ "description", "imported", "name", "summary", "unary" ],
        "type" : "object"
      },
      "UpdatePrincipalParams" : {
        "description" : "New principal settings to apply to principal.",
        "properties" : {
          "capabilities" : {
            "items" : {
              "$ref" : "#/components/schemas/Capability"
            },
            "type" : "array"
          },
          "comment" : {
            "description" : "A comment about the principal.",
            "type" : "string"
          }
        },
        "required" : [ "capabilities" ],
        "type" : "object"
      },
      "CapabilityDefinitionList" : {
        "description" : "A list of capability definitions",
        "properties" : {
          "capabilities" : {
            "items" : {
              "$ref" : "#/components/schemas/CapabilityDefinition"
            },
            "type" : "array"
          }
        },
        "required" : [ "capabilities" ],
        "type" : "object"
      },
      "VendorSettings" : {
        "description" : "Vendor settings for a domain",
        "properties" : {
          "name" : {
            "description" : "The name of the vendor associated with the domain.",
            "type" : "string"
          },
          "supportContact" : {
            "description" : "The contact point for the the vendor",
            "type" : "string"
          },
          "managedKeyId" : {
            "$ref" : "#/components/schemas/RootEncryptionKeyReference"
          },
          "HYOKDisabled" : {
            "description" : "A flag that indicates whether the subdomains of this domain should have the HYOK (Hold Your Own Key) feature enabled in the UI.\n",
            "type" : "boolean"
          }
        },
        "required" : [ "HYOKDisabled", "managedKeyId", "name", "supportContact" ],
        "type" : "object"
      },
      "NewVendorSettings" : {
        "description" : "Vendor settings for a domain",
        "properties" : {
          "name" : {
            "description" : "The name of the vendor associated with the domain.",
            "type" : "string"
          },
          "supportContact" : {
            "description" : "The contact point for the the vendor",
            "type" : "string"
          },
          "managedKeyId" : {
            "$ref" : "#/components/schemas/RootEncryptionKeyReference"
          },
          "HYOKDisabled" : {
            "description" : "A flag that indicates whether the subdomains of this domain should have the HYOK (Hold Your Own Key) feature enabled in the UI.\n",
            "type" : "boolean"
          }
        },
        "type" : "object"
      },
      "DisasterRecoverySettings" : {
        "properties" : {
          "enable" : {
            "description" : "Add a Disaster Recovery header to all encrypted capsules. If set to true, a DR public key must be set.\n",
            "type" : "boolean"
          },
          "publicKey" : {
            "description" : "An Antimatter Disaster Recovery public key to use if enable is true\n",
            "format" : "bytes",
            "type" : "string"
          }
        },
        "type" : "object"
      },
      "DomainSettings" : {
        "description" : "Additional configuration options for a domain",
        "properties" : {
          "adminContacts" : {
            "description" : "A list of admin contact details that have been validated.",
            "items" : {
              "format" : "email",
              "type" : "string"
            },
            "type" : "array"
          },
          "activeAdminContacts" : {
            "description" : "A list of admin contact details that have been validated.",
            "items" : {
              "format" : "email",
              "type" : "string"
            },
            "type" : "array"
          },
          "pendingAdminContacts" : {
            "description" : "A list of admin contact details that are pending validation.",
            "items" : {
              "format" : "email",
              "type" : "string"
            },
            "type" : "array"
          },
          "defaultDisplayName" : {
            "description" : "User friendly custom display name.",
            "maxLength" : 40,
            "type" : "string"
          },
          "defaultTokenLifetime" : {
            "description" : "The default lifetime in seconds of a domain authentication token generated for this domain.",
            "type" : "integer"
          },
          "maximumTokenLifetime" : {
            "description" : "The maximum lifetime in seconds that a domain authentication token can be generated for.",
            "type" : "integer"
          }
        },
        "required" : [ "adminContacts", "defaultDisplayName" ],
        "type" : "object"
      },
      "DomainSettingsPatch" : {
        "description" : "A JSON patch to apply to the domain settings",
        "properties" : {
          "patch" : {
            "$ref" : "#/components/schemas/PatchRequest"
          }
        },
        "required" : [ "patch" ],
        "type" : "object"
      },
      "DomainStatus" : {
        "description" : "Information about the status of the domain",
        "properties" : {
          "notifications" : {
            "items" : {
              "$ref" : "#/components/schemas/DomainStatus_notifications_inner"
            },
            "type" : "array"
          }
        },
        "type" : "object"
      },
      "DomainPolicy" : {
        "description" : "A domain's policy. These rules govern who can view, edit or use which parts of a domain's configuration. Rules are executed in order of ascending priority number, and the execution stops with the first matching rule. If no rules match, the default action is 'deny'. If domain edit policy rules are imported from other domains in the peering configuration, the rules in those domains are independently evaluated to yield an allow/deny result and the final result from every domain, including this one, will be ANDed together. Thus, a deny in any domain yields an overall deny, and allow is only returned if all domains return allow.\n",
        "properties" : {
          "rules" : {
            "items" : {
              "$ref" : "#/components/schemas/DomainPolicyRule"
            },
            "type" : "array"
          }
        },
        "required" : [ "rules" ],
        "type" : "object"
      },
      "DomainResourceSummary" : {
        "description" : "A list of the resources and permissions available\n",
        "properties" : {
          "schema" : {
            "items" : {
              "$ref" : "#/components/schemas/DomainResourceSummary_schema_inner"
            },
            "type" : "array"
          }
        },
        "required" : [ "schema" ],
        "type" : "object"
      },
      "PolicyRuleOperation" : {
        "enum" : [ "edit", "view", "use" ],
        "type" : "string"
      },
      "PolicyRuleResult" : {
        "enum" : [ "allow", "deny" ],
        "type" : "string"
      },
      "NewDomainPolicyRule" : {
        "description" : "A rule governing the domain's policy. All domain identity capabilities must match (AND) for the action to take effect. If the domainIdentity or facts sections are omitted, they match all domain identities and any fact configurations respectively.\n",
        "properties" : {
          "domainIdentity" : {
            "$ref" : "#/components/schemas/CapabilityRule"
          },
          "facts" : {
            "$ref" : "#/components/schemas/FactPolicyRules"
          },
          "path" : {
            "description" : "the path this rule governs. This pattern may contain glob expressions (e.g. '*' and '**').\n",
            "example" : "control/read-context/**",
            "type" : "string"
          },
          "operation" : {
            "$ref" : "#/components/schemas/PolicyRuleOperation"
          },
          "result" : {
            "$ref" : "#/components/schemas/PolicyRuleResult"
          },
          "priority" : {
            "description" : "This rule's priority. Lower priority numbers rules are evaluated first",
            "minimum" : 0,
            "type" : "integer"
          },
          "disabled" : {
            "description" : "If this rule is disabled or not.",
            "type" : "boolean"
          }
        },
        "required" : [ "disabled", "operation", "path", "priority", "result" ],
        "type" : "object"
      },
      "DomainPolicyRule" : {
        "description" : "A rule governing the domain's policy. All domain identity capabilities must match (AND) for the action to take effect. If the domainIdentity or facts sections are omitted, they match all domain identities and any fact configurations respectively.\n",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/RuleReference"
          },
          "domainIdentity" : {
            "$ref" : "#/components/schemas/CapabilityRule"
          },
          "facts" : {
            "$ref" : "#/components/schemas/FactPolicyRules"
          },
          "path" : {
            "description" : "the path this rule governs. This pattern may contain glob expressions (e.g. '*' and '**').\n",
            "example" : "control/read-context/**",
            "type" : "string"
          },
          "operation" : {
            "$ref" : "#/components/schemas/PolicyRuleOperation"
          },
          "result" : {
            "$ref" : "#/components/schemas/PolicyRuleResult"
          },
          "priority" : {
            "description" : "This rule's priority. Lower priority numbers rules are evaluated first",
            "minimum" : 0,
            "type" : "integer"
          },
          "disabled" : {
            "description" : "If this rule is disabled or not.",
            "type" : "boolean"
          },
          "imported" : {
            "description" : "true if this write context is imported",
            "type" : "boolean"
          },
          "sourceDomainID" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "sourceDomainName" : {
            "type" : "string"
          },
          "precedence" : {
            "description" : "for imported rules, whether this rule is evaluated before (<0) or after (>0) the current domain's rules. Always 0 for non-imported rules\n",
            "type" : "integer"
          },
          "invalid" : {
            "description" : "If the rule was created referencing a resource that was valid at the time of the rule's creation, but has since become invalid (e.g. if it was a peered resource and the peering has changed) then the rule will be ignored during policy evaluation, and \"invalid\" will be true when listing the domain policy rules\n",
            "type" : "boolean"
          }
        },
        "required" : [ "disabled", "id", "imported", "operation", "path", "precedence", "priority", "result" ],
        "type" : "object"
      },
      "CapabilityRule" : {
        "description" : "A rule that refers to a domain identity capability. These rules are ANDed together\n",
        "properties" : {
          "matchExpressions" : {
            "description" : "A list of capability matching patterns. Elements are ANDed together\n",
            "items" : {
              "$ref" : "#/components/schemas/CapabilityRule_matchExpressions_inner"
            },
            "type" : "array"
          }
        },
        "type" : "object"
      },
      "DataTaggingHookInput" : {
        "description" : "A request to classify PII in a batch of records",
        "properties" : {
          "records" : {
            "description" : "a batch of values to be processed. Every element within a record must belong to the same record.\n",
            "items" : {
              "$ref" : "#/components/schemas/DataTaggingHookInput_records_inner"
            },
            "type" : "array"
          }
        },
        "required" : [ "records" ],
        "type" : "object"
      },
      "UpsertSpanTagsRequest" : {
        "properties" : {
          "summary" : {
            "$ref" : "#/components/schemas/TagSummary"
          },
          "createToken" : {
            "$ref" : "#/components/schemas/CapsuleOperationToken"
          }
        },
        "required" : [ "createToken", "summary" ],
        "type" : "object"
      },
      "DataTaggingHookResponse" : {
        "description" : "A response from invoking a data tagging hook",
        "properties" : {
          "version" : {
            "example" : "3.4.3",
            "pattern" : "^\\d+\\.\\d+\\.\\d+$",
            "type" : "string"
          },
          "records" : {
            "description" : "the records that have been processed, one per input record\n",
            "items" : {
              "$ref" : "#/components/schemas/DataTaggingHookResponse_records_inner"
            },
            "type" : "array"
          }
        },
        "required" : [ "records", "version" ],
        "type" : "object"
      },
      "TagSummary" : {
        "properties" : {
          "uniqueTags" : {
            "items" : {
              "$ref" : "#/components/schemas/TagSummary_uniqueTags_inner"
            },
            "type" : "array"
          },
          "elidedTags" : {
            "description" : "for tags with a high number of unique values, they will not be accumulated in uniqueTags but will instead be summarized here.\n",
            "items" : {
              "$ref" : "#/components/schemas/TagSummary_elidedTags_inner"
            },
            "type" : "array"
          }
        },
        "required" : [ "elidedTags", "uniqueTags" ],
        "type" : "object"
      },
      "TagNameField" : {
        "description" : "the full name of this tag",
        "example" : "tag.antimatter.io/pii/name",
        "maxLength" : 64,
        "type" : "string"
      },
      "TagValueField" : {
        "description" : "the value of this tag, or the empty string if the tag is of type \"unary\". For a number type tag, numbers of the form \"3.14\" are supported (no exponential notation). For a boolean, \"true\" or \"false\" are supported. For a date, RFC3339 form must be used, but it can\n    be truncated to end before the \"T\" if no time is required.\n",
        "maxLength" : 256,
        "type" : "string"
      },
      "TagTypeField" : {
        "description" : "the type of this tag",
        "enum" : [ "string", "number", "boolean", "date", "unary" ],
        "type" : "string"
      },
      "Tag" : {
        "properties" : {
          "name" : {
            "$ref" : "#/components/schemas/TagNameField"
          },
          "value" : {
            "$ref" : "#/components/schemas/TagValueField"
          },
          "type" : {
            "$ref" : "#/components/schemas/TagTypeField"
          },
          "source" : {
            "description" : "where this tag came from. If it came from a hook, this will be of the form \"hooks/the_hookname\". Otherwise, this will be \"create\" indicating it was given by the user at the time the capsule was created, or it will be \"manual\" indicating it was added later.\n",
            "type" : "string"
          },
          "hook_version" : {
            "description" : "if this tag came from a hook, which version of that hook emitted the tag\n",
            "pattern" : "^\\d+\\.\\d+\\.\\d+$",
            "type" : "string"
          }
        },
        "required" : [ "name", "source", "type", "value" ],
        "type" : "object"
      },
      "TagMeta" : {
        "properties" : {
          "name" : {
            "description" : "the full name of this tag",
            "example" : "tag.antimatter.io/pii/name",
            "maxLength" : 64,
            "type" : "string"
          }
        },
        "required" : [ "name" ],
        "type" : "object"
      },
      "TagSet" : {
        "properties" : {
          "capsuleTags" : {
            "items" : {
              "$ref" : "#/components/schemas/Tag"
            },
            "type" : "array"
          },
          "spanTags" : {
            "items" : {
              "$ref" : "#/components/schemas/TagSet_spanTags_inner"
            },
            "type" : "array"
          }
        },
        "required" : [ "capsuleTags", "spanTags" ],
        "type" : "object"
      },
      "DeleteTags" : {
        "properties" : {
          "names" : {
            "description" : "the names of the tags to delete",
            "items" : {
              "type" : "string"
            },
            "type" : "array"
          }
        },
        "required" : [ "tagNames" ],
        "type" : "object"
      },
      "WriteContextConfigInfo" : {
        "description" : "Information about write context config rules",
        "properties" : {
          "keyReuseTTL" : {
            "default" : 0,
            "description" : "Number of seconds for which the client may reuse a given encryption\nkey for sealing multiple capsules\n",
            "format" : "int32",
            "minimum" : 0,
            "type" : "integer"
          },
          "defaultCapsuleTags" : {
            "items" : {
              "$ref" : "#/components/schemas/WriteContextClassifierTag"
            },
            "type" : "array"
          },
          "requiredHooks" : {
            "items" : {
              "$ref" : "#/components/schemas/WriteContextConfigInfo_requiredHooks_inner"
            },
            "type" : "array"
          }
        },
        "required" : [ "requiredHooks" ],
        "type" : "object"
      },
      "ClassifierRule" : {
        "description" : "Configuration for a classification hook.",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/RuleID"
          },
          "comment" : {
            "type" : "string"
          },
          "spanTags" : {
            "items" : {
              "$ref" : "#/components/schemas/WriteContextClassifierTag"
            },
            "type" : "array"
          },
          "capsuleTags" : {
            "items" : {
              "$ref" : "#/components/schemas/WriteContextClassifierTag"
            },
            "type" : "array"
          },
          "llmConfig" : {
            "$ref" : "#/components/schemas/LLMClassifierConfig"
          },
          "regexConfig" : {
            "$ref" : "#/components/schemas/RegexClassifierConfig"
          }
        },
        "required" : [ "capsuleTags", "config", "spanTags" ],
        "type" : "object"
      },
      "LLMClassifierConfig" : {
        "description" : "Configuration settings for llm-classifier",
        "properties" : {
          "model" : {
            "type" : "string"
          },
          "prompt" : {
            "type" : "string"
          }
        },
        "required" : [ "model", "prompt" ],
        "type" : "object"
      },
      "RegexClassifierConfig" : {
        "description" : "Configuration settings for regex-classifier",
        "properties" : {
          "pattern" : {
            "type" : "string"
          },
          "matchOnKey" : {
            "type" : "boolean"
          }
        },
        "required" : [ "matchOnKey", "pattern" ],
        "type" : "object"
      },
      "WriteContextClassifierTag" : {
        "description" : "Tag descriptor for a write context regex rule",
        "properties" : {
          "name" : {
            "$ref" : "#/components/schemas/TagNameField"
          },
          "value" : {
            "$ref" : "#/components/schemas/TagValueField"
          },
          "type" : {
            "$ref" : "#/components/schemas/TagTypeField"
          }
        },
        "required" : [ "name", "type" ],
        "type" : "object"
      },
      "WriteContextRegexRule" : {
        "description" : "Regex classifier rule for a write context",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/RuleID"
          },
          "pattern" : {
            "type" : "string"
          },
          "matchOnKey" : {
            "type" : "boolean"
          },
          "spanTags" : {
            "items" : {
              "$ref" : "#/components/schemas/WriteContextClassifierTag"
            },
            "type" : "array"
          },
          "capsuleTags" : {
            "items" : {
              "$ref" : "#/components/schemas/WriteContextClassifierTag"
            },
            "type" : "array"
          }
        },
        "required" : [ "capsuleTags", "matchOnKey", "pattern", "spanTags" ],
        "type" : "object"
      },
      "WriteContextDetails" : {
        "description" : "Details about a write context\n",
        "properties" : {
          "name" : {
            "$ref" : "#/components/schemas/WriteContextReference"
          },
          "summary" : {
            "description" : "A short, single sentence description of this write context",
            "maxLength" : 140,
            "type" : "string"
          },
          "description" : {
            "description" : "A longer form description of this write context",
            "maxLength" : 4096,
            "type" : "string"
          },
          "config" : {
            "$ref" : "#/components/schemas/WriteContextConfigInfo"
          },
          "imported" : {
            "description" : "true if this write context is imported",
            "type" : "boolean"
          },
          "sourceDomainID" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "sourceDomainName" : {
            "type" : "string"
          }
        },
        "required" : [ "config", "description", "imported", "name", "summary" ],
        "type" : "object"
      },
      "AddWriteContext" : {
        "description" : "Information for adding/updating a write context",
        "properties" : {
          "summary" : {
            "description" : "A short, single sentence description of this write context",
            "maxLength" : 140,
            "type" : "string"
          },
          "description" : {
            "description" : "A longer form description of this write context",
            "maxLength" : 4096,
            "type" : "string"
          },
          "config" : {
            "$ref" : "#/components/schemas/WriteContextConfigInfo"
          }
        },
        "required" : [ "config", "description", "summary" ],
        "type" : "object"
      },
      "WriteContextList" : {
        "description" : "A list of write contexts",
        "properties" : {
          "writeContexts" : {
            "items" : {
              "$ref" : "#/components/schemas/WriteContextDetails"
            },
            "type" : "array"
          }
        },
        "required" : [ "writeContexts" ],
        "type" : "object"
      },
      "ReadContextRuleMatchExpressions" : {
        "description" : "A list of expressions referencing the domainIdentity, readParameters and capsule/span tags. Each expression will be ANDed together, and ANDed with the factAssertions to determine if this rule activates.\n",
        "items" : {
          "$ref" : "#/components/schemas/ReadContextRuleMatchExpressions_inner"
        },
        "type" : "array"
      },
      "ReadContextRuleFacts" : {
        "description" : "assert the existence or nonexistence of facts that reference the domainIdentity, tags and readParameters. These assertions will be ANDed together, and ANDed with the matchExpressions\n",
        "items" : {
          "$ref" : "#/components/schemas/ReadContextRuleFacts_inner"
        },
        "type" : "array"
      },
      "NewReadContextConfigRule" : {
        "description" : "Information about what must be done to data when it is read from a capsule\n",
        "properties" : {
          "matchExpressions" : {
            "$ref" : "#/components/schemas/ReadContextRuleMatchExpressions"
          },
          "action" : {
            "enum" : [ "DenyCapsule", "DenyRecord", "Redact", "Tokenize", "Allow" ],
            "type" : "string"
          },
          "tokenScope" : {
            "description" : "if the action is Tokenize, what scope to use for the token\n",
            "enum" : [ "unique", "capsule", "domain" ],
            "type" : "string"
          },
          "tokenFormat" : {
            "description" : "if the action is Tokenize, what format should the token take. Explicit is of the form tk-xxxxxx and synthetic returns something that looks like the original data type (e.g. John Smith for a name) but is in fact a token\n",
            "enum" : [ "explicit", "synthetic" ],
            "type" : "string"
          },
          "facts" : {
            "$ref" : "#/components/schemas/ReadContextRuleFacts"
          },
          "priority" : {
            "description" : "This rule's priority. Lower priority numbers rules are evaluated first",
            "minimum" : 0,
            "type" : "integer"
          }
        },
        "required" : [ "action", "imported", "priority" ],
        "type" : "object"
      },
      "ReadContextConfigRule" : {
        "description" : "Information about what must be done to data when it is read from a capsule\n",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/RuleID"
          },
          "matchExpressions" : {
            "$ref" : "#/components/schemas/ReadContextRuleMatchExpressions"
          },
          "action" : {
            "enum" : [ "DenyCapsule", "DenyRecord", "Redact", "Tokenize", "Allow" ],
            "type" : "string"
          },
          "tokenScope" : {
            "description" : "if the action is Tokenize, what scope to use for the token\n",
            "enum" : [ "unique", "capsule", "domain" ],
            "type" : "string"
          },
          "tokenFormat" : {
            "description" : "if the action is Tokenize, what format should the token take. Explicit is of the form tk-xxxxxx and synthetic returns something that looks like the original data type (e.g. John Smith for a name) but is in fact a token\n",
            "enum" : [ "explicit", "synthetic" ],
            "type" : "string"
          },
          "facts" : {
            "$ref" : "#/components/schemas/ReadContextRuleFacts"
          },
          "priority" : {
            "description" : "This rule's priority. Lower priority numbers rules are evaluated first",
            "minimum" : 0,
            "type" : "integer"
          },
          "imported" : {
            "description" : "This rule has been merged into a read context from another domain. Note that rules inside a read context that is entirely imported will not bear the imported flag. Only rules that  have been mapped into a domain's own read context will bear the imported flag\n",
            "type" : "boolean"
          },
          "sourceDomainID" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "sourceDomainName" : {
            "type" : "string"
          }
        },
        "required" : [ "action", "id", "imported", "priority" ],
        "type" : "object"
      },
      "ReadContextRequiredHook" : {
        "properties" : {
          "hook" : {
            "$ref" : "#/components/schemas/HookName"
          },
          "constraint" : {
            "$ref" : "#/components/schemas/VersionConstraint"
          },
          "writeContext" : {
            "$ref" : "#/components/schemas/WriteContextName"
          }
        },
        "type" : "object"
      },
      "ReadContextParameter" : {
        "description" : "Declare parameters that can be passed in for use in read context configuration rules. It is expected that these are used for distinguishing who a read is being done on behalf of, and important attributes about that user (team, project, org etc).\n",
        "properties" : {
          "key" : {
            "type" : "string"
          },
          "required" : {
            "type" : "boolean"
          },
          "description" : {
            "type" : "string"
          }
        },
        "type" : "object"
      },
      "ReadContextShortDetails" : {
        "description" : "Abridged details about a read context\n",
        "properties" : {
          "name" : {
            "$ref" : "#/components/schemas/ReadContextReference"
          },
          "summary" : {
            "description" : "A short, single sentence description of this read context",
            "maxLength" : 140,
            "type" : "string"
          },
          "description" : {
            "description" : "A longer form description of this read context",
            "maxLength" : 4096,
            "type" : "string"
          },
          "disableReadLogging" : {
            "default" : false,
            "description" : "If true, skip creation of audit log events on read",
            "type" : "boolean"
          },
          "keyCacheTTL" : {
            "default" : 0,
            "description" : "Number of seconds for which cached encryption keys will be\nconsidered valid by the client\n",
            "format" : "int32",
            "minimum" : 0,
            "type" : "integer"
          },
          "readParameters" : {
            "items" : {
              "$ref" : "#/components/schemas/ReadContextParameter"
            },
            "type" : "array"
          },
          "imported" : {
            "description" : "true if this read context is imported",
            "type" : "boolean"
          },
          "sourceDomainID" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "sourceDomainName" : {
            "type" : "string"
          }
        },
        "required" : [ "description", "imported", "name", "readParameters", "summary" ],
        "type" : "object"
      },
      "ReadContextDetails" : {
        "description" : "Details about a read context\n",
        "properties" : {
          "name" : {
            "$ref" : "#/components/schemas/ReadContextReference"
          },
          "summary" : {
            "description" : "A short, single sentence description of this read context",
            "maxLength" : 140,
            "type" : "string"
          },
          "description" : {
            "description" : "A longer form description of this read context",
            "maxLength" : 4096,
            "type" : "string"
          },
          "disableReadLogging" : {
            "default" : false,
            "description" : "If true, skip creation of audit log events on read",
            "type" : "boolean"
          },
          "keyCacheTTL" : {
            "default" : 0,
            "description" : "Number of seconds for which cached encryption keys will be\nconsidered valid by the client\n",
            "format" : "int32",
            "minimum" : 0,
            "type" : "integer"
          },
          "requiredHooks" : {
            "items" : {
              "$ref" : "#/components/schemas/ReadContextRequiredHook"
            },
            "type" : "array"
          },
          "readParameters" : {
            "items" : {
              "$ref" : "#/components/schemas/ReadContextParameter"
            },
            "type" : "array"
          },
          "rules" : {
            "items" : {
              "$ref" : "#/components/schemas/ReadContextConfigRule"
            },
            "type" : "array"
          },
          "imported" : {
            "description" : "true if this read context is imported",
            "type" : "boolean"
          },
          "sourceDomainID" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "sourceDomainName" : {
            "type" : "string"
          },
          "policyAssembly" : {
            "description" : "a WASM bundle version of the policy associated with this\nread context.\n",
            "format" : "byte",
            "type" : "string"
          }
        },
        "required" : [ "config", "description", "imported", "name", "readParameters", "rules", "summary" ],
        "type" : "object"
      },
      "AddReadContext" : {
        "description" : "A request to add read contexts",
        "properties" : {
          "summary" : {
            "description" : "A short, single sentence description of this read context",
            "maxLength" : 140,
            "type" : "string"
          },
          "description" : {
            "description" : "A longer form description of this read context",
            "maxLength" : 4096,
            "type" : "string"
          },
          "disableReadLogging" : {
            "default" : false,
            "description" : "If true, skip creation of audit log events on read",
            "type" : "boolean"
          },
          "keyCacheTTL" : {
            "default" : 0,
            "description" : "Number of seconds for which cached encryption keys will be\nconsidered valid by the client\n",
            "format" : "int32",
            "minimum" : 0,
            "type" : "integer"
          },
          "requiredHooks" : {
            "items" : {
              "$ref" : "#/components/schemas/ReadContextRequiredHook"
            },
            "type" : "array"
          },
          "readParameters" : {
            "items" : {
              "$ref" : "#/components/schemas/ReadContextParameter"
            },
            "type" : "array"
          }
        },
        "required" : [ "description", "summary" ],
        "type" : "object"
      },
      "ReadContextList" : {
        "description" : "A list of read contexts",
        "properties" : {
          "readContexts" : {
            "items" : {
              "$ref" : "#/components/schemas/ReadContextShortDetails"
            },
            "type" : "array"
          }
        },
        "required" : [ "readContexts" ],
        "type" : "object"
      },
      "FactPolicyRules" : {
        "description" : "assert the existence or nonexistence of facts that reference the domainIdentity. These assertions will be ANDed together, and ANDed with the domainIdentity expression\n",
        "items" : {
          "$ref" : "#/components/schemas/FactPolicyRules_inner"
        },
        "type" : "array"
      },
      "DomainPeerList" : {
        "description" : "Information about the domains that this domain is peered with\n",
        "properties" : {
          "peers" : {
            "items" : {
              "$ref" : "#/components/schemas/DomainPeerList_peers_inner"
            },
            "type" : "array"
          }
        },
        "required" : [ "peers" ],
        "type" : "object"
      },
      "DomainPeerConfig" : {
        "description" : "Configuration of a domain peer. If the import alias is absent, the domain ID, without the initial \"dm-\" prefix, will be used\n",
        "properties" : {
          "exportIdentityProviders" : {
            "description" : "A list of identity providers that this peer domain may import from us.\n",
            "items" : {
              "$ref" : "#/components/schemas/IdentityProviderName"
            },
            "type" : "array"
          },
          "exportAllIdentityProviders" : {
            "description" : "If present and true, this overrides exportIdentityProviders and exports all identity providers\n",
            "type" : "boolean"
          },
          "exportFacts" : {
            "description" : "A list of fact types that this peer domain may import from us.\n",
            "items" : {
              "$ref" : "#/components/schemas/FactTypeName"
            },
            "type" : "array"
          },
          "exportAllFacts" : {
            "description" : "If present and true, this overrides exportFacts and exports all fact types\n",
            "type" : "boolean"
          },
          "exportReadContexts" : {
            "description" : "A list of read contexts that this peer domain may import from us.\n",
            "items" : {
              "$ref" : "#/components/schemas/ReadContextName"
            },
            "type" : "array"
          },
          "exportAllReadContexts" : {
            "description" : "If present and true, this overrides exportReadContexts and exports all read contexts\n",
            "type" : "boolean"
          },
          "exportAllDataPolicies" : {
            "description" : "If present and true, this overrides exportDataPolicies and exports all available data policies\n",
            "type" : "boolean"
          },
          "exportWriteContexts" : {
            "description" : "A list of write contexts that this peer domain may import from us.\n",
            "items" : {
              "$ref" : "#/components/schemas/WriteContextName"
            },
            "type" : "array"
          },
          "exportAllWriteContexts" : {
            "description" : "If present and true, this overrides exportWriteContexts and exports all write contexts\n",
            "type" : "boolean"
          },
          "exportCapabilities" : {
            "description" : "A list of capabilities that this peer may import from us\n",
            "items" : {
              "$ref" : "#/components/schemas/CapabilityName"
            },
            "type" : "array"
          },
          "exportAllCapabilities" : {
            "description" : "If present and true, this overrides exportCapabilities and exports all capabilities\n",
            "type" : "boolean"
          },
          "exportDomainPolicy" : {
            "description" : "Export domain policy to the target domain. Export of individual policy rules can be configured by restricting which capabilities and facts are exported, as rules referencing unexported facts and capabilities will not be exported.\n",
            "type" : "boolean"
          },
          "exportRootEncryptionKeys" : {
            "description" : "Export the root encryption keys to the target domain. Keys can only be exported as a whole, you cannot share individual keys. Additionally, the default encryption keys in a domain cannot be shared (note: default meaning the provider type, the  'active' key can be shared if it is not of type default).\n",
            "type" : "boolean"
          },
          "exportCapsuleAccessLog" : {
            "description" : "Allow the target domain to query the capsule access log for this domain\n",
            "type" : "boolean"
          },
          "exportControlLog" : {
            "description" : "Allow the target domain to query the control audit log for this domain\n",
            "type" : "boolean"
          },
          "exportCapsuleManifest" : {
            "description" : "Allow the target domain to query the list of capsules and their tags\n",
            "type" : "boolean"
          },
          "exportBilling" : {
            "description" : "Let this peer domain bill us for its usage. Admins/users in the peer domain may not see any sensitive billing information, they may just \"forward\" the bill to our domain.\n",
            "type" : "boolean"
          },
          "exportAdminContact" : {
            "description" : "Let this peer domain forward all admin communications to the admin contact for our domain. Admins/users in the peer domain may not see the admin contact details, they can just \"forward\" communication to the admin contact of our domain.\n",
            "type" : "boolean"
          },
          "nicknames" : {
            "description" : "a list of names for this domain. These can be used to look up this domain later by using domainFromNickname. All nicknames for a peer domain must be unique within a domain.\n",
            "items" : {
              "maxLength" : 128,
              "type" : "string"
            },
            "type" : "array"
          },
          "importAlias" : {
            "$ref" : "#/components/schemas/ImportAlias"
          },
          "forwardBilling" : {
            "description" : "Forward all charges incurred from operations in our domain to the peer domain. If this is set to true, the configured billing details in our domain have no effect.\n",
            "type" : "boolean"
          },
          "forwardAdminCommunications" : {
            "description" : "Forward all admin communications (account reset, billing, etc) that would be sent to the admin of our domain, to this peer domain instead. If this is set to true, the list of admin contacts configured in our domain is completely ignored.\n",
            "type" : "boolean"
          },
          "importIdentityProviders" : {
            "description" : "A list of identity providers to import from the peer domain.\n",
            "items" : {
              "$ref" : "#/components/schemas/IdentityProviderName"
            },
            "type" : "array"
          },
          "importAllIdentityProviders" : {
            "description" : "If present and true, this overrides importIdentityProviders and imports all available identityProviders contexts\n",
            "type" : "boolean"
          },
          "importFacts" : {
            "description" : "A list of facts types to import from the peer domain.\n",
            "items" : {
              "$ref" : "#/components/schemas/FactTypeName"
            },
            "type" : "array"
          },
          "importAllFacts" : {
            "description" : "If present and true, this overrides importFacts and imports all available facts\n",
            "type" : "boolean"
          },
          "importReadContexts" : {
            "description" : "A list of read contexts to import from the peer domain.\n",
            "items" : {
              "$ref" : "#/components/schemas/ReadContextName"
            },
            "type" : "array"
          },
          "importAllReadContexts" : {
            "description" : "If present and true, this overrides importReadContexts and imports all available read contexts\n",
            "type" : "boolean"
          },
          "importAllDataPolicies" : {
            "description" : "If present and true, this overrides importDataPolicies and imports all available data policies\n",
            "type" : "boolean"
          },
          "importWriteContexts" : {
            "description" : "A list of write contexts to import from the peer domain.\n",
            "items" : {
              "$ref" : "#/components/schemas/WriteContextName"
            },
            "type" : "array"
          },
          "importAllWriteContexts" : {
            "description" : "If present and true, this overrides importWriteContexts and imports all available write contexts\n",
            "type" : "boolean"
          },
          "importCapabilities" : {
            "description" : "A list of capabilities to import from the peer domain\n",
            "items" : {
              "$ref" : "#/components/schemas/CapabilityName"
            },
            "type" : "array"
          },
          "importAllCapabilities" : {
            "description" : "If present and true, this overrides importCapabilities and imports  all available capabilities\n",
            "type" : "boolean"
          },
          "importDomainPolicy" : {
            "description" : "Import all domain policy (limited by the imported capabilities and facts) into this domain\n",
            "type" : "boolean"
          },
          "importRootEncryptionKeys" : {
            "description" : "Import all root encryption keys into this domain\n",
            "type" : "boolean"
          },
          "importPrecedence" : {
            "description" : "For read contexts and domain policy, is the peer domain higher precedence  (<0) or lower precedence (>0) than the rules configured in the current domain (0). The precedence is also used to order the imported read context rules and domain policy rules with respect to policy imported from other peers. Note  that imported policy is always executed as an atomic unit, so interleaving  of imported rules and rules that exist in this domain is not possible.\n",
            "type" : "integer"
          },
          "importCapsuleAccessLog" : {
            "description" : "When querying the capsule access log, should results from this peer domain automatically be merged in\n",
            "type" : "boolean"
          },
          "importControlLog" : {
            "description" : "When querying the control audit log, should results from this peer domain automatically be merged in\n",
            "type" : "boolean"
          },
          "importCapsuleManifest" : {
            "description" : "When querying for capsules, should results from this peer domain automatically be merged in\n",
            "type" : "boolean"
          },
          "displayName" : {
            "description" : "The default display name used for this domain. The display name is also treated as a nickname and so can be used from domainFromNickname.\n",
            "maxLength" : 40,
            "minLength" : 1,
            "type" : "string"
          }
        },
        "required" : [ "displayName" ],
        "type" : "object"
      },
      "DomainControlLogResults" : {
        "description" : "The results for a query of the capsule access log\n",
        "properties" : {
          "results" : {
            "items" : {
              "$ref" : "#/components/schemas/DomainControlLogEntry"
            },
            "type" : "array"
          },
          "has_more" : {
            "description" : "if true, there are more results. Query again with start_from_id equal to  the last result's ID to get more results.\n",
            "type" : "boolean"
          }
        },
        "required" : [ "has_more", "results" ],
        "type" : "object"
      },
      "DomainControlLogEntry" : {
        "description" : "Results for a domain control log query\n",
        "properties" : {
          "domain" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "id" : {
            "$ref" : "#/components/schemas/LogEntryID"
          },
          "time" : {
            "description" : "the time of an operation, in UTC",
            "pattern" : "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{9})?Z$",
            "type" : "string",
            "x-oapi-codegen-extra-tags" : {
              "db" : "-"
            }
          },
          "session" : {
            "$ref" : "#/components/schemas/SessionID"
          },
          "url" : {
            "type" : "string"
          },
          "summary" : {
            "maxLength" : 100,
            "type" : "string"
          },
          "description" : {
            "additionalProperties" : {
              "type" : "string"
            },
            "type" : "object"
          },
          "issuer" : {
            "description" : "the principal's issuer",
            "type" : "string"
          },
          "principal" : {
            "description" : "the principal for this operation",
            "type" : "string"
          }
        },
        "required" : [ "description", "domain", "id", "issuer", "principal", "session", "summary", "time", "url" ],
        "type" : "object"
      },
      "DomainHooksList" : {
        "description" : "A list of available hooks in this domain\n",
        "properties" : {
          "hooks" : {
            "items" : {
              "$ref" : "#/components/schemas/DomainHooksList_hooks_inner"
            },
            "type" : "array"
          }
        },
        "type" : "object"
      },
      "CapsuleList" : {
        "description" : "List of capsules\n",
        "properties" : {
          "results" : {
            "items" : {
              "$ref" : "#/components/schemas/CapsuleInfo"
            },
            "type" : "array"
          },
          "has_more" : {
            "description" : "if true, there are more results than presented in this response.\n",
            "type" : "boolean"
          }
        },
        "required" : [ "has_more", "results" ],
        "type" : "object"
      },
      "CapsuleInfo" : {
        "description" : "A summary of the capsule\n",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/CapsuleID"
          },
          "domain" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "capsuleTags" : {
            "items" : {
              "$ref" : "#/components/schemas/Tag"
            },
            "type" : "array"
          },
          "spanTags" : {
            "$ref" : "#/components/schemas/TagSummary"
          },
          "size" : {
            "description" : "how big this capsule is",
            "format" : "int64",
            "type" : "integer"
          },
          "created" : {
            "description" : "when this capsule was sealed",
            "format" : "date-time",
            "type" : "string"
          },
          "pageKey" : {
            "description" : "generated key used to order and paginate on",
            "type" : "string"
          },
          "rows" : {
            "description" : "how many rows this capsule has",
            "format" : "int64",
            "type" : "integer"
          }
        },
        "required" : [ "capsuleTags", "created", "domain", "id", "rows", "size", "spanTags" ],
        "type" : "object"
      },
      "CapsuleSealRequest" : {
        "description" : "Information applied when sealing a capsule (marking it as complete)\n",
        "properties" : {
          "capsuleTags" : {
            "items" : {
              "$ref" : "#/components/schemas/Tag"
            },
            "type" : "array"
          },
          "spanTags" : {
            "$ref" : "#/components/schemas/TagSummary"
          },
          "size" : {
            "description" : "how big this capsule is",
            "format" : "int64",
            "type" : "integer"
          },
          "createToken" : {
            "$ref" : "#/components/schemas/CapsuleOperationToken"
          },
          "rows" : {
            "description" : "how many rows this capsule has",
            "format" : "int64",
            "type" : "integer"
          }
        },
        "required" : [ "capsuleTags", "createToken", "size", "spanTags" ],
        "type" : "object"
      },
      "CapsuleCreateResponse" : {
        "description" : "The response for the creation of a new capsule\n",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/CapsuleID"
          },
          "dataKey" : {
            "description" : "a CBOR encoded encryption key for the capsule",
            "format" : "byte",
            "type" : "string"
          },
          "encryptedDataKey" : {
            "description" : "a CBOR encoded encryption key for the capsule",
            "format" : "byte",
            "type" : "string"
          },
          "keyEncryptionKeyID" : {
            "description" : "The ID of the encryption key used to encrypt the data key.\n",
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "createToken" : {
            "$ref" : "#/components/schemas/CapsuleOperationToken"
          },
          "writeContextConfiguration" : {
            "$ref" : "#/components/schemas/WriteContextConfigInfo"
          }
        },
        "required" : [ "createToken", "dataKey", "encryptedDataKey", "id", "keyEncryptionKeyID", "writeContextConfiguration" ],
        "type" : "object"
      },
      "HookInvocation" : {
        "description" : "The name and version of a hook that has been invoked on a capsule.\n",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "version" : {
            "type" : "string"
          }
        },
        "required" : [ "name", "version" ],
        "type" : "object"
      },
      "CapsuleOpenRequest" : {
        "description" : "A request to open (decrypt) a capsule\n",
        "properties" : {
          "encryptedDek" : {
            "description" : "a CBOR encoded encrypted decryption key for the capsule",
            "format" : "byte",
            "type" : "string"
          },
          "keyID" : {
            "description" : "Encryption key ID",
            "format" : "int64",
            "type" : "integer"
          }
        },
        "required" : [ "encryptedDek", "keyID" ],
        "type" : "object"
      },
      "CapsuleOpenResponse" : {
        "description" : "Contains key material for a capsule\n",
        "properties" : {
          "decryptionKey" : {
            "description" : "a CBOR encoded decryption key for the capsule",
            "format" : "byte",
            "type" : "string"
          },
          "readContextConfiguration" : {
            "$ref" : "#/components/schemas/CapsuleOpenResponse_readContextConfiguration"
          },
          "openToken" : {
            "$ref" : "#/components/schemas/CapsuleOperationToken"
          },
          "capsuleTags" : {
            "description" : "the tags for this capsule",
            "items" : {
              "$ref" : "#/components/schemas/Tag"
            },
            "type" : "array"
          }
        },
        "required" : [ "capsuleTags", "decryptionKey", "openToken", "readContextConfiguration" ],
        "type" : "object"
      },
      "DomainTagInfoResults" : {
        "description" : "Ordered list of the top 100 tags.",
        "properties" : {
          "tags" : {
            "items" : {
              "$ref" : "#/components/schemas/TagMeta"
            },
            "type" : "array"
          },
          "has_more" : {
            "description" : "if true, there are more results than presented in this response.\n",
            "type" : "boolean"
          }
        },
        "required" : [ "has_more", "tags" ],
        "type" : "object"
      },
      "AccessLogResults" : {
        "description" : "The results for a query of the capsule access log\n",
        "properties" : {
          "results" : {
            "items" : {
              "$ref" : "#/components/schemas/AccessLogEntry"
            },
            "type" : "array"
          },
          "has_more" : {
            "description" : "if true, there are more results. Query again with start_from_id equal to  the last result's ID to get more results.\n",
            "type" : "boolean"
          }
        },
        "required" : [ "has_more", "results" ],
        "type" : "object"
      },
      "AddCapsuleLogEntryRequest" : {
        "description" : "A request to add a capsule log entry\n",
        "properties" : {
          "openToken" : {
            "$ref" : "#/components/schemas/CapsuleOperationToken"
          },
          "entry" : {
            "$ref" : "#/components/schemas/NewAccessLogEntry"
          }
        },
        "required" : [ "entry", "openToken" ],
        "type" : "object"
      },
      "AccessLogEntry" : {
        "description" : "An individual capsule data-plane log entry. If adding a new read log entry, the session should  be omitted (the server will fill it in)\n",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/LogEntryID"
          },
          "time" : {
            "description" : "the time of a read operation, in UTC",
            "pattern" : "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{9})?Z$",
            "type" : "string",
            "x-oapi-codegen-extra-tags" : {
              "db" : "-"
            }
          },
          "domain" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "capsule" : {
            "$ref" : "#/components/schemas/CapsuleID"
          },
          "operation" : {
            "enum" : [ "open", "read", "create" ],
            "type" : "string"
          },
          "session" : {
            "$ref" : "#/components/schemas/SessionID"
          },
          "location" : {
            "description" : "the location URL that this capsule resided in during the operation, if known\n",
            "type" : "string"
          },
          "createInfo" : {
            "$ref" : "#/components/schemas/AccessLogEntry_createInfo"
          },
          "openInfo" : {
            "$ref" : "#/components/schemas/AccessLogEntry_openInfo"
          },
          "readInfo" : {
            "$ref" : "#/components/schemas/AccessLogEntry_readInfo"
          },
          "capsuleTags" : {
            "items" : {
              "$ref" : "#/components/schemas/Tag"
            },
            "type" : "array"
          },
          "capsuleSpanTags" : {
            "$ref" : "#/components/schemas/TagSummary"
          },
          "capsuleSize" : {
            "description" : "how big this capsule is",
            "format" : "int64",
            "type" : "integer"
          },
          "capsuleCreated" : {
            "description" : "when this capsule was created",
            "format" : "date-time",
            "type" : "string"
          },
          "issuer" : {
            "description" : "the principals issuer",
            "type" : "string"
          },
          "principal" : {
            "description" : "the principal for this operation",
            "type" : "string"
          }
        },
        "required" : [ "capsule", "capsuleCreated", "capsuleSize", "capsuleSpanTags", "capsuleTags", "domain", "id", "issuer", "operation", "principal", "session", "time" ],
        "type" : "object"
      },
      "NewAccessLogEntry" : {
        "description" : "An individual capsule data-plane log entry, in the form required when inserting a  new record\n",
        "properties" : {
          "operation" : {
            "enum" : [ "read" ],
            "type" : "string"
          },
          "location" : {
            "description" : "the location URL that this capsule resided in during the operation, if known\n",
            "type" : "string"
          },
          "readInfo" : {
            "$ref" : "#/components/schemas/NewAccessLogEntry_readInfo"
          }
        },
        "required" : [ "operation", "readInfo" ],
        "type" : "object"
      },
      "DomainIdentityProviderType" : {
        "description" : "Type of the identity provider.",
        "enum" : [ "GoogleOAuth", "GCPServiceAccount", "APIKey" ],
        "type" : "string"
      },
      "DomainIdentityProviderPrincipalType" : {
        "description" : "Principal type supported by an identity provider",
        "enum" : [ "APIKey", "Email", "HostedDomain" ],
        "type" : "string"
      },
      "VerifyContactResponse" : {
        "description" : "Returned by successful contact email verification",
        "properties" : {
          "domain" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "email" : {
            "type" : "string"
          },
          "message" : {
            "type" : "string"
          }
        },
        "required" : [ "domain", "email", "message" ],
        "type" : "object"
      },
      "DomainIdentityGroupProviderDetails" : {
        "description" : "Information about an identity provider. This may be an imported provider or a provider in this domain.\n",
        "properties" : {
          "groupIdentityProviders" : {
            "items" : {
              "$ref" : "#/components/schemas/DomainIdentityGroupProviderDetails_groupIdentityProviders_inner"
            },
            "type" : "array"
          }
        },
        "type" : "object"
      },
      "DomainIdentityProviderInfo" : {
        "description" : "Information about an identity provider. This may be an imported provider or a provider in this domain\n",
        "properties" : {
          "name" : {
            "$ref" : "#/components/schemas/IdentityProviderReference"
          },
          "type" : {
            "$ref" : "#/components/schemas/DomainIdentityProviderType"
          },
          "imported" : {
            "description" : "Is this identity provider imported from a peer domain",
            "type" : "boolean"
          },
          "sourceDomainID" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "sourceDomainName" : {
            "type" : "string"
          },
          "supportedPrincipals" : {
            "items" : {
              "$ref" : "#/components/schemas/DomainIdentityProviderPrincipalType"
            },
            "type" : "array"
          },
          "details" : {
            "$ref" : "#/components/schemas/DomainIdentityProviderDetails"
          }
        },
        "required" : [ "imported", "name", "supportedPrincipals", "type" ],
        "type" : "object"
      },
      "DomainIdentityProviderList" : {
        "description" : "A list of identity providers",
        "properties" : {
          "identityProviders" : {
            "description" : "A list of identity providers configured in a domain",
            "items" : {
              "$ref" : "#/components/schemas/DomainIdentityProviderInfo"
            },
            "type" : "array"
          }
        },
        "type" : "object"
      },
      "APIKeyDomainIdentityProviderDetails" : {
        "description" : "Detailed information about an API key identity provider",
        "properties" : {
          "type" : {
            "enum" : [ "APIKey" ],
            "type" : "string"
          }
        },
        "type" : "object"
      },
      "GoogleOAuthDomainIdentityProviderDetails" : {
        "description" : "Detailed information about a Google OAuth identity provider. If the clientID is omitted, an Antimatter Client ID will be used.\n",
        "properties" : {
          "type" : {
            "enum" : [ "GoogleOAuth" ],
            "type" : "string"
          },
          "clientID" : {
            "type" : "string"
          },
          "groupMappings" : {
            "$ref" : "#/components/schemas/GoogleOAuthDomainIdentityProviderDetails_groupMappings"
          }
        },
        "type" : "object"
      },
      "GoogleOAuthDomainIdentityProviderGroupMappingDetails" : {
        "description" : "The group capability mapping object containing both mappings and administrative configuration.\n",
        "properties" : {
          "groupDomain" : {
            "description" : "The domain this group mapping applies to.",
            "type" : "string"
          },
          "domainGroupReaderAdmin" : {
            "description" : "The Groups Reader administrator to impersonate when looking up a user's group membership.\n",
            "type" : "string"
          },
          "groupCapabilities" : {
            "description" : "Detailed information about a Google OAuth identity provider's group mappings. If left empty, then no group mapping will be checked on use of this identity provider.\n",
            "items" : {
              "$ref" : "#/components/schemas/GoogleOAuthDomainIdentityProviderGroupCapabilityMappings"
            },
            "type" : "array"
          }
        },
        "required" : [ "domainGroupReaderAdmin", "groupCapabilities", "groupDomain" ],
        "type" : "object"
      },
      "GoogleOAuthDomainIdentityProviderGroupCapabilityMappings" : {
        "description" : "A mapping of group membership to allocated capabilities.\n",
        "properties" : {
          "group" : {
            "description" : "The group name to check if a user is a member of.",
            "type" : "string"
          },
          "capabilities" : {
            "description" : "The capabilities to assign if the user is a member of the group.",
            "items" : {
              "$ref" : "#/components/schemas/Capability"
            },
            "type" : "array"
          }
        },
        "required" : [ "capabilities", "group" ],
        "type" : "object"
      },
      "DomainIdentityProviderDetails" : {
        "discriminator" : {
          "mapping" : {
            "GoogleOAuth" : "#/components/schemas/GoogleOAuthDomainIdentityProviderDetails",
            "APIKey" : "#/components/schemas/APIKeyDomainIdentityProviderDetails"
          },
          "propertyName" : "type"
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/GoogleOAuthDomainIdentityProviderDetails"
        }, {
          "$ref" : "#/components/schemas/APIKeyDomainIdentityProviderDetails"
        } ]
      },
      "DomainIdentityProviderPrincipalList" : {
        "description" : "A list of principals in an identity provider",
        "properties" : {
          "principals" : {
            "items" : {
              "$ref" : "#/components/schemas/PrincipalSummary"
            },
            "type" : "array"
          }
        },
        "required" : [ "principals" ],
        "type" : "object"
      },
      "DomainIdentityAPIKeyPrincipalParams" : {
        "description" : "Details for an API key principal",
        "properties" : {
          "type" : {
            "enum" : [ "APIKey" ],
            "type" : "string"
          },
          "apiKeyID" : {
            "type" : "string"
          },
          "comment" : {
            "description" : "An optional comment for the API key principal",
            "type" : "string"
          }
        },
        "type" : "object"
      },
      "DomainIdentityEmailPrincipalParams" : {
        "description" : "Details for an email principal",
        "properties" : {
          "type" : {
            "enum" : [ "Email" ],
            "type" : "string"
          },
          "email" : {
            "format" : "email",
            "type" : "string"
          },
          "comment" : {
            "description" : "An optional comment for the email principal",
            "type" : "string"
          }
        },
        "required" : [ "email" ],
        "type" : "object"
      },
      "DomainIdentityHostedDomainPrincipalParams" : {
        "description" : "Additional details for a hosted domain principal",
        "properties" : {
          "type" : {
            "enum" : [ "HostedDomain" ],
            "type" : "string"
          },
          "hostedDomain" : {
            "type" : "string"
          },
          "comment" : {
            "description" : "An optional comment for the hosted domain principal",
            "type" : "string"
          }
        },
        "required" : [ "hostedDomain" ],
        "type" : "object"
      },
      "DomainIdentityPrincipalDetails" : {
        "discriminator" : {
          "mapping" : {
            "APIKey" : "#/components/schemas/DomainIdentityAPIKeyPrincipalParams",
            "Email" : "#/components/schemas/DomainIdentityEmailPrincipalParams",
            "HostedDomain" : "#/components/schemas/DomainIdentityHostedDomainPrincipalParams"
          },
          "propertyName" : "type"
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/DomainIdentityAPIKeyPrincipalParams"
        }, {
          "$ref" : "#/components/schemas/DomainIdentityEmailPrincipalParams"
        }, {
          "$ref" : "#/components/schemas/DomainIdentityHostedDomainPrincipalParams"
        } ]
      },
      "PrincipalSummary" : {
        "properties" : {
          "principalID" : {
            "$ref" : "#/components/schemas/PrincipalID"
          },
          "principalType" : {
            "$ref" : "#/components/schemas/DomainIdentityProviderPrincipalType"
          },
          "comment" : {
            "description" : "An optional comment for the principal",
            "type" : "string"
          },
          "email" : {
            "description" : "Principal email address if provided.",
            "type" : "string"
          }
        },
        "required" : [ "comment", "principalID", "principalType" ],
        "type" : "object"
      },
      "PrincipalInfo" : {
        "description" : "Detailed information about a principal",
        "properties" : {
          "principalID" : {
            "$ref" : "#/components/schemas/PrincipalID"
          },
          "capabilities" : {
            "items" : {
              "$ref" : "#/components/schemas/Capability"
            },
            "type" : "array"
          },
          "details" : {
            "$ref" : "#/components/schemas/DomainIdentityPrincipalDetails"
          }
        },
        "required" : [ "capabilities", "details", "principalID", "principalType" ],
        "type" : "object"
      },
      "DomainIdentityProviderPrincipalParams" : {
        "description" : "Details to create a domain identity principal",
        "properties" : {
          "capabilities" : {
            "items" : {
              "$ref" : "#/components/schemas/Capability"
            },
            "type" : "array"
          },
          "details" : {
            "$ref" : "#/components/schemas/DomainIdentityPrincipalDetails"
          }
        },
        "required" : [ "capabilities", "details" ],
        "type" : "object"
      },
      "KeyInfos" : {
        "description" : "Holds the required service account information for varying providers.\n",
        "properties" : {
          "description" : {
            "type" : "string"
          },
          "keyInformation" : {
            "$ref" : "#/components/schemas/KeyInfos_keyInformation"
          }
        },
        "required" : [ "keyInformation" ],
        "type" : "object"
      },
      "GCPServiceAccountKeyInfo" : {
        "description" : "The GCP service account information and details required to use the  provided GCP hosted encryption key for cryptographic operations.\n",
        "properties" : {
          "serviceAccountCredentials" : {
            "description" : "The Google service account contents as a base64 encoded  JSON string.\n",
            "format" : "byte",
            "type" : "string"
          },
          "projectID" : {
            "description" : "The Google project ID.",
            "type" : "string"
          },
          "location" : {
            "description" : "Location of Google keyring.",
            "type" : "string"
          },
          "keyringID" : {
            "description" : "The Google keyring's ID at location.",
            "type" : "string"
          },
          "keyID" : {
            "description" : "The key ID that should be used in the Google keyring.",
            "type" : "string"
          },
          "providerName" : {
            "enum" : [ "gcp_sa" ],
            "type" : "string"
          }
        },
        "required" : [ "keyID", "keyringID", "location", "projectID", "serviceAccountCredentials" ],
        "type" : "object"
      },
      "BYOKKeyInfo" : {
        "properties" : {
          "key" : {
            "description" : "The base64-encoded key material to use as the basis for an\nencryption key. It must be 256 bytes or longer\n",
            "format" : "byte",
            "type" : "string"
          },
          "providerName" : {
            "enum" : [ "byok" ],
            "type" : "string"
          }
        },
        "required" : [ "key" ],
        "type" : "object"
      },
      "AntimatterDelegatedGCPKeyInfo" : {
        "description" : "The details required to use an GCP Key root encryption key that has been  delegated to Antimatter's GCP service account. This will use Antimatter's  service account during set up of the GCP client.\n",
        "properties" : {
          "projectID" : {
            "description" : "The Google project ID.",
            "type" : "string"
          },
          "location" : {
            "description" : "Location of Google keyring.",
            "type" : "string"
          },
          "keyringID" : {
            "description" : "The Google keyring's ID at location.",
            "type" : "string"
          },
          "keyID" : {
            "description" : "The key ID that should be used in the Google keyring.",
            "type" : "string"
          },
          "providerName" : {
            "enum" : [ "gcp_am" ],
            "type" : "string"
          }
        },
        "required" : [ "keyID", "keyringID", "location", "projectID" ],
        "type" : "object"
      },
      "AWSServiceAccountKeyInfo" : {
        "description" : "The AWS service account information and details required to use the provided AWS hosted encryption keys for cryptographic operations.\n",
        "properties" : {
          "accessKeyID" : {
            "description" : "The AWS access key ID.",
            "type" : "string"
          },
          "secretAccessKey" : {
            "description" : "The access key ID's secret access key.",
            "type" : "string"
          },
          "keyARN" : {
            "description" : "The key ARN to be used.",
            "type" : "string"
          },
          "providerName" : {
            "enum" : [ "aws_sa" ],
            "type" : "string"
          }
        },
        "required" : [ "accessKeyID", "keyARN", "secretAccessKey" ],
        "type" : "object"
      },
      "AntimatterDelegatedAWSKeyInfo" : {
        "description" : "The details required to use an AWS KMS root encryption key that has been  delegated to Antimatter's AWS account. This will use Antimatter's service  account during set up of the AWS client.\n",
        "properties" : {
          "keyARN" : {
            "description" : "The key ARN to be used.",
            "type" : "string"
          },
          "providerName" : {
            "enum" : [ "aws_am" ],
            "type" : "string"
          }
        },
        "required" : [ "keyARN" ],
        "type" : "object"
      },
      "AzureServiceAccountKeyInfo" : {
        "description" : "The Azure service account information and details required to access the Azure HSM for cryptographic operations.\n",
        "properties" : {
          "tenantID" : {
            "description" : "The Azure service account directory ID.",
            "type" : "string"
          },
          "keyURL" : {
            "description" : "The name of the key in the Azure HSM.",
            "type" : "string"
          },
          "clientID" : {
            "description" : "The access key ID's secret access key.",
            "type" : "string"
          },
          "clientSecret" : {
            "description" : "The access key ID's secret access key.",
            "type" : "string"
          },
          "providerName" : {
            "enum" : [ "azure_sa" ],
            "type" : "string"
          }
        },
        "required" : [ "clientID", "clientSecret", "keyURL", "tenantID" ],
        "type" : "object"
      },
      "AntimatterDelegatedAzureKeyInfo" : {
        "description" : "The details required to use an Azure HSM root encryption key that has been  delegated to Antimatter's Azure account. This will use Antimatter's service  account during set up of the Azure client.\n",
        "properties" : {
          "tenantID" : {
            "description" : "The directory ID in containing the managed HSM.",
            "type" : "string"
          },
          "keyURL" : {
            "description" : "The full URL for the key",
            "type" : "string"
          },
          "providerName" : {
            "enum" : [ "azure_am" ],
            "type" : "string"
          }
        },
        "required" : [ "keyURL", "tenantID" ],
        "type" : "object"
      },
      "RootEncryptionKeyIDResponse" : {
        "description" : "The newly created root encryption key's ID.\n",
        "properties" : {
          "rekID" : {
            "description" : "The root encryption key ID.",
            "type" : "string"
          }
        },
        "required" : [ "rekID" ],
        "type" : "object"
      },
      "RootEncryptionKeyListResponse" : {
        "description" : "The newly created root encryption key's ID.\n",
        "items" : {
          "$ref" : "#/components/schemas/RootEncryptionKeyItem"
        },
        "type" : "array"
      },
      "RootEncryptionKeyItem" : {
        "properties" : {
          "source" : {
            "description" : "The root encryption key's provider source.",
            "type" : "string"
          },
          "resourcePath" : {
            "description" : "The cloud provider's resource path/alias.",
            "type" : "string"
          },
          "rekID" : {
            "$ref" : "#/components/schemas/RootEncryptionKeyReference"
          },
          "description" : {
            "description" : "The user defined description for the root encryption key.",
            "type" : "string"
          },
          "imported" : {
            "description" : "true if this root encryption key is imported",
            "type" : "boolean"
          },
          "sourceDomainID" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "sourceDomainName" : {
            "type" : "string"
          }
        },
        "required" : [ "description", "imported", "rekID", "resourcePath", "source" ],
        "type" : "object"
      },
      "RootEncryptionKeyTestResponse" : {
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/RootEncryptionKeyReference"
          },
          "source" : {
            "description" : "The root encryption key's provider source.",
            "type" : "string"
          },
          "resourcePath" : {
            "description" : "The cloud provider's resource path/alias",
            "type" : "string"
          },
          "description" : {
            "description" : "The user defined description for the root encryption key.",
            "type" : "string"
          },
          "status" : {
            "enum" : [ "HEALTHY", "UNREACHABLE", "MISCONFIGURED" ],
            "type" : "string"
          },
          "statusMessage" : {
            "type" : "string"
          },
          "latencyMS" : {
            "type" : "number"
          }
        },
        "required" : [ "description", "id", "latencyMS", "resourcePath", "source", "status", "statusMessage" ],
        "type" : "object"
      },
      "ActiveRootEncryptionKeyID" : {
        "description" : "The stored key ID to use as the active root encryption key.\n",
        "properties" : {
          "keyID" : {
            "$ref" : "#/components/schemas/RootEncryptionKeyReference"
          },
          "rotateBatch" : {
            "description" : "Indicates whether a batch of key encryption keys should be immediately rotated upon successful activation of the supplied root encryption key.\n",
            "type" : "boolean"
          }
        },
        "required" : [ "keyID" ],
        "type" : "object"
      },
      "ActiveRootEncryptionKeyResponse" : {
        "description" : "The results for an activate key query.\n",
        "properties" : {
          "has_more" : {
            "description" : "If true, there are still keys encrypted with non-active root encryption keys. Query again to encrypted another batch.\n",
            "type" : "boolean"
          }
        },
        "type" : "object"
      },
      "RotateKeyEncryptionKeyResponse" : {
        "description" : "The results for a rotation query\n",
        "properties" : {
          "has_more" : {
            "description" : "If true, there are still keys encrypted with non-active root encryption keys. Query again to encrypted another batch.\n",
            "type" : "boolean"
          }
        },
        "required" : [ "has_more" ],
        "type" : "object"
      },
      "AvailableRootEncryptionKeyProviders" : {
        "properties" : {
          "providers" : {
            "items" : {
              "$ref" : "#/components/schemas/AvailableRootEncryptionKeyProviders_providers_inner"
            },
            "type" : "array"
          }
        },
        "type" : "object"
      },
      "AvailableDelegatedRootEncryptionKeyProvider" : {
        "properties" : {
          "type" : {
            "enum" : [ "DelegatedRootEncryptionKeyProvider" ],
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "shortName" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "accountDetails" : {
            "type" : "string"
          }
        },
        "required" : [ "accountDetails", "description", "name", "shortName" ],
        "type" : "object"
      },
      "AvailableServiceAccountRootEncryptionKeyProvider" : {
        "properties" : {
          "type" : {
            "enum" : [ "ServiceAccountRootEncryptionKeyProvider" ],
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "shortName" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        },
        "required" : [ "description", "name", "shortName" ],
        "type" : "object"
      },
      "PatchRequest" : {
        "items" : {
          "$ref" : "#/components/schemas/PatchRequest_inner"
        },
        "type" : "array"
      },
      "JSONPatchRequestAdd" : {
        "additionalProperties" : false,
        "properties" : {
          "path" : {
            "description" : "A JSON Pointer path.",
            "type" : "string"
          },
          "value" : {
            "$ref" : "#/components/schemas/JSONPatchRequestAdd_value"
          },
          "op" : {
            "description" : "The operation to perform.",
            "enum" : [ "add" ],
            "type" : "string"
          }
        },
        "required" : [ "op", "path", "value" ],
        "type" : "object"
      },
      "JSONPatchRequestReplace" : {
        "additionalProperties" : false,
        "properties" : {
          "path" : {
            "description" : "A JSON Pointer path.",
            "type" : "string"
          },
          "value" : {
            "$ref" : "#/components/schemas/JSONPatchRequestReplace_value"
          },
          "op" : {
            "description" : "The operation to perform.",
            "enum" : [ "replace" ],
            "type" : "string"
          }
        },
        "required" : [ "op", "path", "value" ],
        "type" : "object"
      },
      "JSONPatchRequestTst" : {
        "additionalProperties" : false,
        "properties" : {
          "path" : {
            "description" : "A JSON Pointer path.",
            "type" : "string"
          },
          "value" : {
            "$ref" : "#/components/schemas/JSONPatchRequestTst_value"
          },
          "op" : {
            "description" : "The operation to perform.",
            "enum" : [ "test" ],
            "type" : "string"
          }
        },
        "required" : [ "op", "path", "value" ],
        "type" : "object"
      },
      "JSONPatchRequestRemove" : {
        "additionalProperties" : false,
        "properties" : {
          "path" : {
            "description" : "A JSON Pointer path.",
            "type" : "string"
          },
          "op" : {
            "description" : "The operation to perform.",
            "enum" : [ "remove" ],
            "type" : "string"
          }
        },
        "required" : [ "op", "path" ],
        "type" : "object"
      },
      "JSONPatchRequestMove" : {
        "additionalProperties" : false,
        "properties" : {
          "path" : {
            "description" : "A JSON Pointer path.",
            "type" : "string"
          },
          "op" : {
            "description" : "The operation to perform.",
            "enum" : [ "move" ],
            "type" : "string"
          }
        },
        "required" : [ "from", "op", "path" ],
        "type" : "object"
      },
      "JSONPatchRequestCopy" : {
        "additionalProperties" : false,
        "properties" : {
          "path" : {
            "description" : "A JSON Pointer path.",
            "type" : "string"
          },
          "op" : {
            "description" : "The operation to perform.",
            "enum" : [ "copy" ],
            "type" : "string"
          }
        },
        "required" : [ "from", "op", "path" ],
        "type" : "object"
      },
      "StarredDomainList" : {
        "properties" : {
          "domains" : {
            "items" : {
              "$ref" : "#/components/schemas/DomainID"
            },
            "type" : "array"
          }
        },
        "required" : [ "domains" ],
        "type" : "object"
      },
      "domainInsertIdentityProviderPrincipal_200_response" : {
        "properties" : {
          "principalID" : {
            "$ref" : "#/components/schemas/PrincipalID"
          },
          "apiKey" : {
            "type" : "string"
          }
        },
        "required" : [ "principalID" ],
        "type" : "object"
      },
      "domainContactIssueVerify_request" : {
        "description" : "Parameters to request new validation request",
        "properties" : {
          "adminEmail" : {
            "minLength" : 6,
            "type" : "string"
          }
        },
        "required" : [ "adminEmail" ],
        "type" : "object"
      },
      "domainGetWriteContextClassifierRules_200_response" : {
        "properties" : {
          "rules" : {
            "items" : {
              "$ref" : "#/components/schemas/ClassifierRule"
            },
            "type" : "array"
          }
        },
        "type" : "object"
      },
      "domainInsertWriteContextClassifierRule_200_response" : {
        "properties" : {
          "ruleID" : {
            "$ref" : "#/components/schemas/RuleID"
          }
        },
        "required" : [ "ruleID" ],
        "type" : "object"
      },
      "domainAddReadContextRule_200_response" : {
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/RuleID"
          }
        },
        "type" : "object"
      },
      "domainDataTaggingHookTest_request" : {
        "properties" : {
          "rule" : {
            "$ref" : "#/components/schemas/ClassifierRule"
          },
          "input" : {
            "$ref" : "#/components/schemas/DataTaggingHookInput"
          }
        },
        "required" : [ "input", "rule" ],
        "type" : "object"
      },
      "NewFactTypeDefinition_arguments_inner" : {
        "properties" : {
          "name" : {
            "description" : "the name of the argument",
            "maxLength" : 32,
            "minLength" : 1,
            "pattern" : "^[a-z][a-zA-Z0-9_]{2,31}$",
            "type" : "string"
          },
          "description" : {
            "description" : "the description of the argument",
            "maxLength" : 128,
            "type" : "string"
          }
        },
        "required" : [ "description", "name" ],
        "type" : "object"
      },
      "DomainStatus_notifications_inner" : {
        "properties" : {
          "summary" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "type" : {
            "enum" : [ "info", "alert" ],
            "type" : "string"
          }
        },
        "required" : [ "description", "summary", "type" ],
        "type" : "object"
      },
      "DomainResourceSummary_schema_inner" : {
        "properties" : {
          "resource" : {
            "description" : "The resource path. May contain {placeholder} entries",
            "type" : "string"
          },
          "operations" : {
            "items" : {
              "enum" : [ "edit", "view", "use" ],
              "type" : "string"
            },
            "type" : "array"
          },
          "placeholderValues" : {
            "additionalProperties" : {
              "items" : {
                "type" : "string"
              },
              "type" : "array"
            },
            "description" : "mapping from placeholder name to list of values",
            "type" : "object"
          },
          "description" : {
            "description" : "a user-friendly description of this resource",
            "type" : "string"
          }
        },
        "required" : [ "description", "operations", "placeholderValues", "resource" ],
        "type" : "object"
      },
      "CapabilityRule_matchExpressions_inner" : {
        "properties" : {
          "name" : {
            "$ref" : "#/components/schemas/CapabilityReference"
          },
          "operator" : {
            "enum" : [ "In", "NotIn", "Exists", "NotExists" ],
            "type" : "string"
          },
          "values" : {
            "items" : {
              "type" : "string"
            },
            "type" : "array"
          }
        },
        "required" : [ "name", "operator", "values" ],
        "type" : "object"
      },
      "DataTaggingHookInput_records_inner_elements_inner" : {
        "properties" : {
          "content" : {
            "description" : "the main content to be classified",
            "example" : "some sentence",
            "type" : "string"
          },
          "path" : {
            "description" : "if appropriate, the JSON path of the content in a larger object. If the content lies in a tabular form, the first (and perhaps only) element of this path should be the column name\n",
            "example" : "foo.bar[2].baz",
            "type" : "string"
          }
        },
        "required" : [ "content", "path" ],
        "type" : "object"
      },
      "DataTaggingHookInput_records_inner" : {
        "properties" : {
          "elements" : {
            "description" : "a batch of values associated with the same record (eg columns of a row), to be processed.\n",
            "items" : {
              "$ref" : "#/components/schemas/DataTaggingHookInput_records_inner_elements_inner"
            },
            "type" : "array"
          }
        },
        "required" : [ "elements" ],
        "type" : "object"
      },
      "DataTaggingHookResponse_records_inner" : {
        "properties" : {
          "elements" : {
            "description" : "the elements that have been processed, matching what was given as input.\n",
            "items" : {
              "$ref" : "#/components/schemas/TagSet"
            },
            "type" : "array"
          }
        },
        "required" : [ "elements" ],
        "type" : "object"
      },
      "TagSummary_uniqueTags_inner" : {
        "properties" : {
          "tag" : {
            "$ref" : "#/components/schemas/Tag"
          },
          "occurrences" : {
            "description" : "how many times this tag configuration appears",
            "type" : "integer"
          }
        },
        "required" : [ "occurrences", "tag" ],
        "type" : "object"
      },
      "TagSummary_elidedTags_inner" : {
        "properties" : {
          "tagName" : {
            "type" : "string"
          },
          "numUniqueTags" : {
            "description" : "how many unique configurations of this tag appeared. A unique configuration is a combination of value, type, source and hook_version in a Tag.\n",
            "type" : "integer"
          },
          "totalOccurrences" : {
            "description" : "how many tags with this tagName appeared",
            "type" : "integer"
          }
        },
        "required" : [ "numUniqueTags", "tagName", "totalOccurrences" ],
        "type" : "object"
      },
      "TagSet_spanTags_inner" : {
        "properties" : {
          "start" : {
            "description" : "the offset into the content that this span starts",
            "format" : "int64",
            "type" : "integer"
          },
          "end" : {
            "description" : "the offset into the content that this span ends",
            "format" : "int64",
            "type" : "integer"
          },
          "tags" : {
            "items" : {
              "$ref" : "#/components/schemas/Tag"
            },
            "type" : "array"
          }
        },
        "required" : [ "end", "start", "tags" ],
        "type" : "object"
      },
      "WriteContextConfigInfo_requiredHooks_inner" : {
        "properties" : {
          "hook" : {
            "$ref" : "#/components/schemas/HookName"
          },
          "constraint" : {
            "$ref" : "#/components/schemas/VersionConstraint"
          },
          "mode" : {
            "default" : "sync",
            "description" : "how should this hook be invoked",
            "enum" : [ "sync", "async" ],
            "type" : "string"
          }
        },
        "required" : [ "constraint", "hook", "mode" ],
        "type" : "object"
      },
      "ReadContextRuleMatchExpressions_inner" : {
        "properties" : {
          "source" : {
            "enum" : [ "domainIdentity", "readParameters", "tags" ],
            "type" : "string"
          },
          "key" : {
            "type" : "string"
          },
          "operator" : {
            "description" : "What to do with the value identified by `key`. In and NotIn compare with `values`, DateDeltaLessThan and DateDeltaGreaterThan treat the value as an RFC3339 date, and measure if the `now()-date` is less than or greater than the time span expressed in `value`.\n",
            "enum" : [ "In", "NotIn", "Exists", "NotExists", "DateDeltaLessThan", "DateDeltaGreaterThan" ],
            "type" : "string"
          },
          "values" : {
            "description" : "to be used with In and NotIn operators",
            "items" : {
              "type" : "string"
            },
            "type" : "array"
          },
          "value" : {
            "description" : "To be used with DateDelta operators. A time span in `23d4h5m32s` notation. It does not support interval shorthands greater than a day, so to express 3 months, for example, use `90d`. Positive time spans indicate the date appeared in the past. Negative time spans indicate the date appears in the future.\n",
            "type" : "string"
          }
        },
        "required" : [ "key", "operator", "source" ],
        "type" : "object"
      },
      "ReadContextRuleFacts_inner_arguments_inner" : {
        "properties" : {
          "source" : {
            "enum" : [ "domainIdentity", "readParameters", "tags", "literal" ],
            "type" : "string"
          },
          "key" : {
            "description" : "for source in [domainIdentity, readParameters, tags] what key to use",
            "type" : "string"
          },
          "value" : {
            "description" : "if source is literal, what is the value",
            "type" : "string"
          }
        },
        "type" : "object"
      },
      "ReadContextRuleFacts_inner" : {
        "properties" : {
          "operator" : {
            "description" : "whether this assertion matches when the fact exists or does not exist",
            "enum" : [ "Exists", "NotExists" ],
            "type" : "string"
          },
          "name" : {
            "description" : "the name of the fact",
            "type" : "string"
          },
          "arguments" : {
            "items" : {
              "$ref" : "#/components/schemas/ReadContextRuleFacts_inner_arguments_inner"
            },
            "type" : "array"
          }
        },
        "type" : "object"
      },
      "FactPolicyRules_inner_arguments_inner" : {
        "properties" : {
          "any" : {
            "default" : false,
            "description" : "this argument can have any value (don't care)",
            "type" : "boolean"
          },
          "source" : {
            "description" : "Which value to compare against. If literal, the 'value' field will be used. If 'domainIdentity' then the domain identity will be checked for a capability matching the reference in the 'capability' field.\n",
            "enum" : [ "domainIdentity", "literal" ],
            "type" : "string"
          },
          "capability" : {
            "$ref" : "#/components/schemas/CapabilityReference"
          },
          "value" : {
            "description" : "if source is literal, what is the value",
            "type" : "string"
          }
        },
        "type" : "object"
      },
      "FactPolicyRules_inner" : {
        "properties" : {
          "operator" : {
            "description" : "whether this assertion matches when the fact exists or does not exist",
            "enum" : [ "Exists", "NotExists" ],
            "type" : "string"
          },
          "name" : {
            "$ref" : "#/components/schemas/FactTypeReference"
          },
          "arguments" : {
            "items" : {
              "$ref" : "#/components/schemas/FactPolicyRules_inner_arguments_inner"
            },
            "maxItems" : 16,
            "type" : "array"
          }
        },
        "required" : [ "arguments", "name", "operator" ],
        "type" : "object"
      },
      "DomainPeerList_peers_inner" : {
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/DomainID"
          },
          "alias" : {
            "$ref" : "#/components/schemas/ImportAlias"
          }
        },
        "required" : [ "alias", "id" ],
        "type" : "object"
      },
      "DomainHooksList_hooks_inner" : {
        "properties" : {
          "name" : {
            "$ref" : "#/components/schemas/HookName"
          },
          "url" : {
            "type" : "string"
          },
          "version" : {
            "type" : "string"
          },
          "summary" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "outputSpanTags" : {
            "description" : "tags that this hook emits that apply to spans of data within the capsule",
            "items" : {
              "type" : "string"
            },
            "type" : "array"
          },
          "outputCapsuleTags" : {
            "description" : "tags that this hook emits that apply to the entire capsule",
            "items" : {
              "type" : "string"
            },
            "type" : "array"
          }
        },
        "required" : [ "description", "name", "outputCapsuleTags", "outputSpanTags", "summary", "url", "version" ],
        "type" : "object"
      },
      "CapsuleOpenResponse_readContextConfiguration" : {
        "description" : "the material required for enacting read context configuration (e.g. wasm stuff)",
        "properties" : {
          "disableReadLogging" : {
            "default" : false,
            "description" : "If true, skip creation of audit log events on read",
            "type" : "boolean"
          },
          "keyCacheTTL" : {
            "default" : 0,
            "description" : "Number of seconds for which cached encryption keys will be\nconsidered valid by the client\n",
            "format" : "int32",
            "minimum" : 0,
            "type" : "integer"
          },
          "policyAssembly" : {
            "description" : "a bundled version of the Rego policy associated with this open event.",
            "format" : "byte",
            "type" : "string"
          }
        },
        "required" : [ "policyAssembly" ],
        "type" : "object"
      },
      "AccessLogEntry_createInfo" : {
        "description" : "information available if the operation is of type \"create\".\n",
        "properties" : {
          "writeContext" : {
            "$ref" : "#/components/schemas/WriteContextReference"
          }
        },
        "required" : [ "writeContext" ],
        "type" : "object"
      },
      "AccessLogEntry_openInfo" : {
        "description" : "information available if the operation is of type \"open\".\n",
        "properties" : {
          "readContext" : {
            "$ref" : "#/components/schemas/ReadContextReference"
          }
        },
        "required" : [ "readContext" ],
        "type" : "object"
      },
      "AccessLogEntry_readInfo" : {
        "description" : "information available if the operation is of type \"read\". allowedTags are those that were allowed without transformation during the read. redactedTags are those that were redacted during the read. tokenizedTags are those that were tokenized during the read.\n",
        "properties" : {
          "parameters" : {
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "the client-specified parameters representing the user on whose behalf this read is being carried out. Valid only for operation = read\n",
            "type" : "object"
          },
          "readContext" : {
            "$ref" : "#/components/schemas/ReadContextReference"
          },
          "allowedTags" : {
            "$ref" : "#/components/schemas/TagSummary"
          },
          "redactedTags" : {
            "$ref" : "#/components/schemas/TagSummary"
          },
          "tokenizedTags" : {
            "$ref" : "#/components/schemas/TagSummary"
          },
          "returnedRecords" : {
            "description" : "the number of records returned by the read, including those with allowed, redacted or tokenized spans\n",
            "type" : "integer"
          },
          "filteredRecords" : {
            "description" : "the number of records that were completely filtered out during the read operation\n",
            "type" : "integer"
          },
          "returnedSpans" : {
            "description" : "the number of spans that were allowed during the read operation\n",
            "type" : "integer"
          },
          "filteredSpans" : {
            "description" : "the number of spans that were redacted during the read operation\n",
            "type" : "integer"
          }
        },
        "required" : [ "allowedTags", "filteredRecords", "filteredSpans", "parameters", "readContext", "redactedTags", "returnedRecords", "returnedSpans", "tokenizedTags" ],
        "type" : "object"
      },
      "NewAccessLogEntry_readInfo" : {
        "description" : "information available if the operation is of type \"read\". allowedTags are those that were allowed without transformation during the read. redactedTags are those that were redacted during the read. tokenizedTags are those that were tokenized during the read.\n",
        "properties" : {
          "parameters" : {
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "the client-specified parameters representing the user on whose behalf this read is being carried out. Valid only for operation = read\n",
            "type" : "object"
          },
          "allowedTags" : {
            "$ref" : "#/components/schemas/TagSummary"
          },
          "redactedTags" : {
            "$ref" : "#/components/schemas/TagSummary"
          },
          "tokenizedTags" : {
            "$ref" : "#/components/schemas/TagSummary"
          },
          "returnedRecords" : {
            "description" : "the number of records returned by the read, including those with allowed, redacted or tokenized spans\n",
            "type" : "integer"
          },
          "filteredRecords" : {
            "description" : "the number of records that were completely filtered out during the read operation\n",
            "type" : "integer"
          }
        },
        "required" : [ "allowedTags", "filteredRecords", "parameters", "redactedTags", "returnedRecords", "tokenizedTags" ],
        "type" : "object"
      },
      "DomainIdentityGroupProviderDetails_groupIdentityProviders_inner" : {
        "properties" : {
          "name" : {
            "description" : "The name of the group membership identity provider.",
            "type" : "string"
          },
          "description" : {
            "description" : "Detailed instructions on how to configure and enable this group membership identity provider.\n",
            "type" : "string"
          },
          "accountDetails" : {
            "description" : "The account delegation, if needed, has to be done to.",
            "type" : "string"
          }
        },
        "type" : "object"
      },
      "GoogleOAuthDomainIdentityProviderDetails_groupMappings" : {
        "properties" : {
          "mappings" : {
            "description" : "A detailed mapping of user group membership to capabilities associated  with these groups.\n",
            "items" : {
              "$ref" : "#/components/schemas/GoogleOAuthDomainIdentityProviderGroupMappingDetails"
            },
            "type" : "array"
          }
        },
        "type" : "object"
      },
      "KeyInfos_keyInformation" : {
        "discriminator" : {
          "mapping" : {
            "gcp_sa" : "#/components/schemas/GCPServiceAccountKeyInfo",
            "gcp_am" : "#/components/schemas/AntimatterDelegatedGCPKeyInfo",
            "aws_sa" : "#/components/schemas/AWSServiceAccountKeyInfo",
            "aws_am" : "#/components/schemas/AntimatterDelegatedAWSKeyInfo",
            "azure_sa" : "#/components/schemas/AzureServiceAccountKeyInfo",
            "azure_am" : "#/components/schemas/AntimatterDelegatedAzureKeyInfo",
            "byok" : "#/components/schemas/BYOKKeyInfo"
          },
          "propertyName" : "providerName"
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/GCPServiceAccountKeyInfo"
        }, {
          "$ref" : "#/components/schemas/AntimatterDelegatedGCPKeyInfo"
        }, {
          "$ref" : "#/components/schemas/AWSServiceAccountKeyInfo"
        }, {
          "$ref" : "#/components/schemas/AntimatterDelegatedAWSKeyInfo"
        }, {
          "$ref" : "#/components/schemas/AzureServiceAccountKeyInfo"
        }, {
          "$ref" : "#/components/schemas/AntimatterDelegatedAzureKeyInfo"
        }, {
          "$ref" : "#/components/schemas/BYOKKeyInfo"
        } ]
      },
      "AvailableRootEncryptionKeyProviders_providers_inner" : {
        "discriminator" : {
          "mapping" : {
            "DelegatedRootEncryptionKeyProvider" : "#/components/schemas/AvailableDelegatedRootEncryptionKeyProvider",
            "ServiceAccountRootEncryptionKeyProvider" : "#/components/schemas/AvailableServiceAccountRootEncryptionKeyProvider"
          },
          "propertyName" : "type"
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/AvailableDelegatedRootEncryptionKeyProvider"
        }, {
          "$ref" : "#/components/schemas/AvailableServiceAccountRootEncryptionKeyProvider"
        } ]
      },
      "PatchRequest_inner" : {
        "discriminator" : {
          "mapping" : {
            "add" : "#/components/schemas/JSONPatchRequestAdd",
            "replace" : "#/components/schemas/JSONPatchRequestReplace",
            "test" : "#/components/schemas/JSONPatchRequestTst",
            "remove" : "#/components/schemas/JSONPatchRequestRemove",
            "move" : "#/components/schemas/JSONPatchRequestMove",
            "copy" : "#/components/schemas/JSONPatchRequestCopy"
          },
          "propertyName" : "op"
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/JSONPatchRequestAdd"
        }, {
          "$ref" : "#/components/schemas/JSONPatchRequestReplace"
        }, {
          "$ref" : "#/components/schemas/JSONPatchRequestTst"
        }, {
          "$ref" : "#/components/schemas/JSONPatchRequestRemove"
        }, {
          "$ref" : "#/components/schemas/JSONPatchRequestMove"
        }, {
          "$ref" : "#/components/schemas/JSONPatchRequestCopy"
        } ]
      },
      "JSONPatchRequestAdd_value" : {
        "description" : "The value to add.",
        "oneOf" : [ {
          "type" : "string"
        }, {
          "type" : "number"
        }, {
          "type" : "boolean"
        } ]
      },
      "JSONPatchRequestReplace_value" : {
        "description" : "The value to replace.",
        "oneOf" : [ {
          "type" : "string"
        }, {
          "type" : "number"
        }, {
          "type" : "boolean"
        } ]
      },
      "JSONPatchRequestTst_value" : {
        "description" : "The value to test.",
        "oneOf" : [ {
          "type" : "string"
        }, {
          "type" : "number"
        }, {
          "type" : "boolean"
        } ]
      }
    },
    "securitySchemes" : {
      "domain_identity" : {
        "bearerFormat" : "JWT",
        "description" : "A JWT auth scheme using a token obtained from the domain /authenticate endpoint",
        "scheme" : "bearer",
        "type" : "http"
      },
      "oauth_token" : {
        "bearerFormat" : "JWT",
        "description" : "A JWT token obtained from the browser based Google OAuth flow",
        "scheme" : "bearer",
        "type" : "http"
      }
    }
  }
}