{
  "openapi": "3.1.0",
  "paths": {
    "/accounts": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Account"
                  }
                }
              }
            },
            "description": "The accounts defined on this account"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of accounts defined on the account",
        "operationId": "getAccounts",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List accounts",
        "tags": [
          "accounts"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountPost"
              }
            }
          },
          "description": "The definition of the new account",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            },
            "description": "The new account"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Create a subaccount.\n",
        "operationId": "createAccount",
        "summary": "Create account",
        "tags": [
          "accounts"
        ],
        "x-codegen-request-body-name": "account_fields"
      }
    },
    "/accounts/current": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            },
            "description": "Information about the account"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on the current account, as identified by the API key",
        "operationId": "getCurrentAccount",
        "summary": "Retrieve current account",
        "tags": [
          "accounts"
        ]
      }
    },
    "/accounts/current/billing": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountBilling"
                }
              }
            },
            "description": "Information about your account's cost."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get invoices, payments, and usage stats for the current account.",
        "operationId": "getCurrentAccountBilling",
        "summary": "Get billing information about the current account.",
        "tags": [
          "billing"
        ]
      }
    },
    "/accounts/current/usage": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountUsageSummary"
                }
              }
            },
            "description": "Usage metrics for the current account."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get historical usage metrics for the current account from the most recent metrics dashboard event.",
        "operationId": "getAccountCurrentUsage",
        "summary": "Get usage metrics for current account",
        "tags": [
          "accounts",
          "experimental"
        ]
      }
    },
    "/accounts/current/usage/all": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountUsageSummary"
                }
              }
            },
            "description": "Aggregated usage metrics for the current account and sub-accounts."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get aggregated historical usage metrics for the current account and all of its sub-accounts.",
        "operationId": "getAccountCurrentUsageAll",
        "summary": "Get usage metrics for current and sub accounts",
        "tags": [
          "accounts",
          "experimental"
        ]
      }
    },
    "/accounts/{account_id}": {
      "delete": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/DeletionScheduled"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Request an account deletion. In 24 hours, the account and all resources associated with it will be deleted. Contact support within the 24 hour window if you wish to reverse this.",
        "operationId": "deleteAccount",
        "parameters": [
          {
            "description": "The UUID of an account",
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete an account",
        "tags": [
          "accounts"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            },
            "description": "Information about the account"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a specific account. This must be an account controlled by your API key.",
        "operationId": "getAccount",
        "parameters": [
          {
            "description": "The UUID of an account",
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve an account",
        "tags": [
          "accounts"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AccountMergePatch"
              }
            }
          },
          "description": "Fields to update on the account (all optional)",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            },
            "description": "Information about the account"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Update the configuration of an account.",
        "operationId": "updateAccount",
        "parameters": [
          {
            "description": "The UUID of an account",
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Update an account",
        "tags": [
          "accounts"
        ]
      }
    },
    "/accounts/{account_id}/billing": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountBilling"
                }
              }
            },
            "description": "Information about your account's cost."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get invoices, payments, and usage stats for your account.",
        "operationId": "getAccountBilling",
        "parameters": [
          {
            "description": "The UUID of an account",
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get billing information about your account.",
        "tags": [
          "billing"
        ]
      }
    },
    "/accounts/{account_id}/usage": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountUsageSummary"
                }
              }
            },
            "description": "Usage metrics for the specified account."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "getAccountUsage",
        "parameters": [
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get usage metrics for a specific account",
        "tags": [
          "accounts",
          "experimental"
        ]
      }
    },
    "/atlases": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Atlas"
                  }
                }
              }
            },
            "description": "A list of atlases"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of the atlases defined on the account",
        "operationId": "getAtlases",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List atlases",
        "tags": [
          "atlases"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AtlasPost"
              }
            }
          },
          "description": "The atlas to create",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Atlas"
                }
              }
            },
            "description": "The atlas was successfully created"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Create a new atlas",
        "operationId": "createAtlas",
        "summary": "Create atlas",
        "tags": [
          "atlases"
        ],
        "x-codegen-request-body-name": "atlas_fields"
      }
    },
    "/atlases/{atlas_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "deleteAtlas",
        "parameters": [
          {
            "description": "The UUID of an atlas",
            "in": "path",
            "name": "atlas_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete an atlas",
        "tags": [
          "atlases"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Atlas"
                }
              }
            },
            "description": "The requested atlas"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Retrieve details on a specific atlas",
        "operationId": "getAtlas",
        "parameters": [
          {
            "description": "The UUID of an atlas",
            "in": "path",
            "name": "atlas_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve an atlas",
        "tags": [
          "atlases"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AtlasMergePatch"
              }
            }
          },
          "description": "Fields to update on the existing atlas (all optional)",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Atlas"
                }
              }
            },
            "description": "The updated atlas"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Update an existing atlas",
        "operationId": "updateAtlas",
        "parameters": [
          {
            "description": "The UUID of an atlas",
            "in": "path",
            "name": "atlas_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Update atlas",
        "tags": [
          "atlases"
        ],
        "x-codegen-request-body-name": "atlas_fields"
      }
    },
    "/atlases/{atlas_id}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The atlas was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Archive an atlas",
        "operationId": "archiveAtlas",
        "parameters": [
          {
            "description": "The UUID of an atlas",
            "in": "path",
            "name": "atlas_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Archive an atlas",
        "tags": [
          "atlases"
        ]
      }
    },
    "/atlases/{atlas_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdateAtlas",
        "parameters": [
          {
            "description": "The UUID of an atlas",
            "in": "path",
            "name": "atlas_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "atlases"
        ]
      }
    },
    "/atlases/{atlas_id}/locations": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Location"
                  }
                }
              }
            },
            "description": "A list of locations, with pagination metadata in headers",
            "headers": {
              "Link": {
                "description": "RFC 5988 pagination links with rel attributes (next, prev, first, last)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Total-Count": {
                "description": "Total number of records available",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of the locations belonging to a specific atlas",
        "operationId": "getAtlasLocations",
        "parameters": [
          {
            "description": "The UUID of an atlas",
            "in": "path",
            "name": "atlas_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Number of records to return. A larger value is reduced to 100.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 10,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of records to skip for pagination",
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "summary": "List the locations of an atlas",
        "tags": [
          "locations"
        ]
      }
    },
    "/atlases/{atlas_id}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The atlas was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Unarchive an atlas",
        "operationId": "unarchiveAtlas",
        "parameters": [
          {
            "description": "The UUID of an atlas",
            "in": "path",
            "name": "atlas_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive an atlas",
        "tags": [
          "atlases"
        ]
      }
    },
    "/attributes": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Attribute"
                  }
                }
              }
            },
            "description": "A list of attributes"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of attributes defined on the account",
        "operationId": "getAttributes",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List attributes",
        "tags": [
          "attributes"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttributePost"
              }
            }
          },
          "description": "The definition of the new attribute",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attribute"
                }
              }
            },
            "description": "The new attribute"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Add a new attribute that wraps a stream of assertions",
        "operationId": "createAttribute",
        "summary": "Create attribute",
        "tags": [
          "attributes"
        ]
      }
    },
    "/attributes/{attribute_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "deleteAttribute",
        "parameters": [
          {
            "description": "The UUID of an attribute",
            "in": "path",
            "name": "attribute_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete an attribute",
        "tags": [
          "attributes"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attribute"
                }
              }
            },
            "description": "Information about the attribute"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a specific attribute",
        "operationId": "getAttribute",
        "parameters": [
          {
            "description": "The UUID of an attribute",
            "in": "path",
            "name": "attribute_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve an attribute",
        "tags": [
          "attributes"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AttributeMergePatch"
              }
            }
          },
          "description": "Fields to update on the attribute (all optional)",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attribute"
                }
              }
            },
            "description": "Information about the attribute"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Update the configuration of an attribute",
        "operationId": "updateAttribute",
        "parameters": [
          {
            "description": "The UUID of an attribute",
            "in": "path",
            "name": "attribute_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Update an attribute",
        "tags": [
          "attributes"
        ],
        "x-codegen-request-body-name": "attribute_fields"
      }
    },
    "/attributes/{attribute_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdateAttribute",
        "parameters": [
          {
            "description": "The UUID of an attibute",
            "in": "path",
            "name": "attribute_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "attributes"
        ]
      }
    },
    "/cohorts": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Cohort"
                  }
                }
              }
            },
            "description": "A list of cohorts"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of cohorts defined on the account",
        "operationId": "getCohorts",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List cohorts",
        "tags": [
          "cohorts"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CohortPost"
              }
            }
          },
          "description": "The definition of the new cohort",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cohort"
                }
              }
            },
            "description": "The new cohort"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Add a new cohort (defined as people who have made qualifying emissions of certain events)",
        "operationId": "createCohort",
        "summary": "Create cohort",
        "tags": [
          "cohorts"
        ],
        "x-codegen-request-body-name": "cohort_fields"
      }
    },
    "/cohorts/{cohort_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "deleteCohort",
        "parameters": [
          {
            "description": "The UUID of a cohort",
            "in": "path",
            "name": "cohort_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a cohort",
        "tags": [
          "cohorts"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cohort"
                }
              }
            },
            "description": "Information about the cohort"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a specific cohort",
        "operationId": "getCohort",
        "parameters": [
          {
            "description": "The UUID of a cohort",
            "in": "path",
            "name": "cohort_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a cohort",
        "tags": [
          "cohorts"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CohortMergePatch"
              }
            }
          },
          "description": "Fields to update on the existing cohort. To delete an optional field, set it to null.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Cohort"
                }
              }
            },
            "description": "The updated cohort"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Edit configuration of a cohort",
        "operationId": "updateCohort",
        "parameters": [
          {
            "description": "The UUID of a cohort",
            "in": "path",
            "name": "cohort_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Edit a cohort",
        "tags": [
          "cohorts"
        ],
        "x-codegen-request-body-name": "cohort_fields"
      }
    },
    "/cohorts/{cohort_id}/analysis/membership": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CohortAnalysisMembership"
                }
              }
            },
            "description": "Analysis of cohort membership counts over time. Bucketed by days, weeks, and months."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "getCohortAnalysisMembership",
        "parameters": [
          {
            "description": "The UUID of a cohort",
            "in": "path",
            "name": "cohort_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get the cohort membership counts over time.",
        "tags": [
          "cohorts"
        ]
      }
    },
    "/cohorts/{cohort_id}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The cohort was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Archive a cohort",
        "operationId": "archiveCohort",
        "parameters": [
          {
            "description": "The UUID of a cohort",
            "in": "path",
            "name": "cohort_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Archive a cohort",
        "tags": [
          "cohorts"
        ]
      }
    },
    "/cohorts/{cohort_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdateCohort",
        "parameters": [
          {
            "description": "The UUID of a cohort",
            "in": "path",
            "name": "cohort_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "cohorts"
        ]
      }
    },
    "/cohorts/{cohort_id}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The cohort was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Unarchive a cohort",
        "operationId": "unarchiveCohort",
        "parameters": [
          {
            "description": "The UUID of a cohort",
            "in": "path",
            "name": "cohort_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a cohort",
        "tags": [
          "cohorts"
        ]
      }
    },
    "/connections": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Connection"
                  }
                }
              }
            },
            "description": "The connections defined on this account"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of connections defined on the account",
        "operationId": "getConnections",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List connections",
        "tags": [
          "connections"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectionPost"
              }
            }
          },
          "description": "The definition of the new connection",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Connection"
                }
              }
            },
            "description": "The new connection"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Add a new connection.\n\nConnections are configuration for connecting data between Faraday and an external location. They are required when working with <a href=\"https://faraday.ai/developers/reference/createtarget\">**replication targets**</a>.\n\nAll connections have a `type` that determines which options may be specified.\n\nConnection `type` is specified in the `options` object.\n",
        "operationId": "createConnection",
        "summary": "Create connection",
        "tags": [
          "connections"
        ],
        "x-codegen-request-body-name": "connection_fields"
      }
    },
    "/connections/{connection_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Delete a connection",
        "operationId": "deleteConnection",
        "parameters": [
          {
            "description": "The UUID of a connection",
            "in": "path",
            "name": "connection_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a connection",
        "tags": [
          "connections"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Connection"
                }
              }
            },
            "description": "Information about the connection",
            "links": {
              "datasets": {
                "operationId": "getConnectionDatasets",
                "parameters": {
                  "connection_id": "$response.body#/id"
                }
              },
              "targets": {
                "operationId": "getConnectionTargets",
                "parameters": {
                  "connection_id": "$response.body#/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a specific connection",
        "operationId": "getConnection",
        "parameters": [
          {
            "description": "The UUID of a connection",
            "in": "path",
            "name": "connection_id",
            "required": true,
            "schema": {
              "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a connection",
        "tags": [
          "connections"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectionMergePatch"
              }
            }
          },
          "description": "Fields to update on the connection",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Connection"
                }
              }
            },
            "description": "Information about the connection"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Update the configuration of a connection.",
        "operationId": "updateConnection",
        "parameters": [
          {
            "description": "The UUID of a connection",
            "in": "path",
            "name": "connection_id",
            "required": true,
            "schema": {
              "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Update a connection",
        "tags": [
          "connections"
        ]
      }
    },
    "/connections/{connection_id}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The connection was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Archive a connection",
        "operationId": "archiveConnection",
        "parameters": [
          {
            "description": "The UUID of a connection",
            "in": "path",
            "name": "connection_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Archive a connection",
        "tags": [
          "connections"
        ]
      }
    },
    "/connections/{connection_id}/datasets": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Dataset"
                  }
                }
              }
            },
            "description": "The list of datasets"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get all datasets that use this connection",
        "operationId": "getConnectionDatasets",
        "parameters": [
          {
            "description": "The UUID of a connection",
            "in": "path",
            "name": "connection_id",
            "required": true,
            "schema": {
              "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve all datasets that use this connection",
        "tags": [
          "connections"
        ]
      }
    },
    "/connections/{connection_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdateConnection",
        "parameters": [
          {
            "description": "The UUID of a connection",
            "in": "path",
            "name": "connection_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "connections"
        ]
      }
    },
    "/connections/{connection_id}/rotate_credentials": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RotateCredentialsRequest"
              }
            }
          },
          "description": "Configuration for credential rotation",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Connection"
                }
              }
            },
            "description": "The credentials were successfully rotated"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Rotate credentials for a Snowflake or ClickHouse connection.\nThis regenerates the connection type's keypair.\n",
        "operationId": "rotateConnectionCredentials",
        "parameters": [
          {
            "description": "The UUID of a connection",
            "in": "path",
            "name": "connection_id",
            "required": true,
            "schema": {
              "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Rotate credentials for a connection",
        "tags": [
          "connections"
        ]
      }
    },
    "/connections/{connection_id}/targets": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Target"
                  }
                }
              }
            },
            "description": "The list of targets"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get all targets that use this connection",
        "operationId": "getConnectionTargets",
        "parameters": [
          {
            "description": "The UUID of a connection",
            "in": "path",
            "name": "connection_id",
            "required": true,
            "schema": {
              "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve all targets that use this connection",
        "tags": [
          "connections"
        ]
      }
    },
    "/connections/{connection_id}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The connection was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Unarchive a connection",
        "operationId": "unarchiveConnection",
        "parameters": [
          {
            "description": "The UUID of a connection",
            "in": "path",
            "name": "connection_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a connection",
        "tags": [
          "connections"
        ]
      }
    },
    "/datasets": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Dataset"
                  }
                }
              }
            },
            "description": "A list of datasets"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of the datasets defined on the account",
        "operationId": "getDatasets",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List datasets",
        "tags": [
          "datasets"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DatasetPost"
              }
            }
          },
          "description": "The dataset to create",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Dataset"
                }
              }
            },
            "description": "The dataset was successfully created"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Create a new dataset",
        "operationId": "createDataset",
        "summary": "Create dataset",
        "tags": [
          "datasets"
        ],
        "x-codegen-request-body-name": "dataset_fields"
      }
    },
    "/datasets/{dataset_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "deleteDataset",
        "parameters": [
          {
            "description": "The UUID of a dataset",
            "in": "path",
            "name": "dataset_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a dataset",
        "tags": [
          "datasets"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Dataset"
                }
              }
            },
            "description": "The requested dataset"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Retrieve details on a specific dataset",
        "operationId": "getDataset",
        "parameters": [
          {
            "description": "The UUID of a dataset",
            "in": "path",
            "name": "dataset_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a dataset",
        "tags": [
          "datasets"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DatasetMergePatch"
              }
            }
          },
          "description": "Fields to update on the existing dataset (all optional)",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Dataset"
                }
              }
            },
            "description": "The updated dataset"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Update an existing dataset",
        "operationId": "updateDataset",
        "parameters": [
          {
            "description": "The UUID of a dataset",
            "in": "path",
            "name": "dataset_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Update dataset",
        "tags": [
          "datasets"
        ],
        "x-codegen-request-body-name": "dataset_fields"
      }
    },
    "/datasets/{dataset_id}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The dataset was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Archive a dataset",
        "operationId": "archiveDataset",
        "parameters": [
          {
            "description": "The UUID of a dataset",
            "in": "path",
            "name": "dataset_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Archive a dataset",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{dataset_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdateDataset",
        "parameters": [
          {
            "description": "The UUID of a dataset",
            "in": "path",
            "name": "dataset_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{dataset_id}/logs/ingress": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DatasetIngressLog"
                  }
                }
              }
            },
            "description": "Successful response with pagination metadata in headers",
            "headers": {
              "Link": {
                "description": "RFC 5988 pagination links with rel attributes (next, prev, first, last)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Total-Count": {
                "description": "Total number of records available",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Retrieves ingress metrics for a specific dataset",
        "operationId": "getDatasetIngressLogs",
        "parameters": [
          {
            "description": "UUID of the dataset",
            "in": "path",
            "name": "dataset_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Number of records to return",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 10,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of records to skip for pagination",
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "summary": "Get dataset ingress metrics over time",
        "tags": [
          "datasets",
          "experimental"
        ]
      }
    },
    "/datasets/{dataset_id}/logs/ingress/{log_id}": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DatasetIngressLog"
                }
              }
            },
            "description": "Successful response"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Retrieves a specific ingress log entry for a dataset",
        "operationId": "getDatasetIngressLog",
        "parameters": [
          {
            "description": "UUID of the dataset",
            "in": "path",
            "name": "dataset_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "UUID of the ingress log",
            "in": "path",
            "name": "log_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get a single dataset ingress log by ID",
        "tags": [
          "datasets",
          "experimental"
        ]
      }
    },
    "/datasets/{dataset_id}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The dataset was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Unarchive a dataset",
        "operationId": "unarchiveDataset",
        "parameters": [
          {
            "description": "The UUID of a dataset",
            "in": "path",
            "name": "dataset_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a dataset",
        "tags": [
          "datasets"
        ]
      }
    },
    "/feature_stores": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FeatureStore"
                  }
                }
              }
            },
            "description": "A list of feature stores"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of feature stores defined on the account",
        "operationId": "getFeatureStores",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List feature stores",
        "tags": [
          "feature_stores"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeatureStorePost"
              }
            }
          },
          "description": "The definition of the new feature store",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeatureStore"
                }
              }
            },
            "description": "The new feature store"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Add a new feature store that compiles attributes",
        "operationId": "createFeatureStore",
        "summary": "Create feature store",
        "tags": [
          "feature_stores"
        ]
      }
    },
    "/feature_stores/{feature_store_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "deleteFeatureStore",
        "parameters": [
          {
            "description": "The UUID of a feature store",
            "in": "path",
            "name": "feature_store_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a feature store",
        "tags": [
          "feature_stores"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeatureStore"
                }
              }
            },
            "description": "Information about the feature store"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a specific feature store",
        "operationId": "getFeatureStore",
        "parameters": [
          {
            "description": "The UUID of a feature store",
            "in": "path",
            "name": "feature_store_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a feature store",
        "tags": [
          "feature_stores"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/FeatureStoreMergePatch"
              }
            }
          },
          "description": "Fields to update on the feature store (all optional)",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeatureStore"
                }
              }
            },
            "description": "Information about the feature store"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Update the configuration of a feature store",
        "operationId": "updateFeatureStore",
        "parameters": [
          {
            "description": "The UUID of a feature store",
            "in": "path",
            "name": "feature_store_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Update a feature store",
        "tags": [
          "feature_stores"
        ],
        "x-codegen-request-body-name": "feature_store_fields"
      }
    },
    "/feature_stores/{feature_store_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdateFeatureStore",
        "parameters": [
          {
            "description": "The UUID of a feature_store",
            "in": "path",
            "name": "feature_store_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "feature_stores"
        ]
      }
    },
    "/graph": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GraphEdge"
                  }
                }
              }
            },
            "description": "The list of graph edges"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Each object in the list is an edge in the dependency graph.",
        "operationId": "getGraph",
        "summary": "Retrieve a dependency graph for all resources on an account",
        "tags": [
          "graph"
        ]
      }
    },
    "/knowledgebase/overview": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgebaseOverview"
                }
              }
            },
            "description": "The current overview"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get the current revision of this account's knowledgebase overview.\nIf no overview has ever been written, `revision_id` and `created_at` are absent\nand `content` is the empty string.\n",
        "operationId": "getKnowledgebaseOverview",
        "summary": "Retrieve the account overview",
        "tags": [
          "knowledgebase"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KnowledgebaseOverviewPatch"
              }
            }
          },
          "description": "The new overview content plus the revision it was based on",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgebaseOverview"
                }
              }
            },
            "description": "The newly saved overview revision"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Save a new revision of the account overview. Optimistic locking: pass back\nthe `revision_id` you read; if the server's current revision has moved past\nit, the request is rejected with 409. Omit `revision_id` only when the\noverview has never been written before.\n",
        "operationId": "updateKnowledgebaseOverview",
        "summary": "Update the account overview",
        "tags": [
          "knowledgebase"
        ],
        "x-codegen-request-body-name": "knowledgebase_overview_fields"
      }
    },
    "/knowledgebase/overview/revisions": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/KnowledgebaseOverviewRevisionSummary"
                  }
                }
              }
            },
            "description": "The list of overview revisions"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "List every saved revision of the account overview, newest first.\n",
        "operationId": "listKnowledgebaseOverviewRevisions",
        "summary": "List account overview revisions",
        "tags": [
          "knowledgebase"
        ]
      }
    },
    "/knowledgebase/overview/revisions/{revision_id}": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgebaseOverview"
                }
              }
            },
            "description": "The requested overview revision"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Read an older saved revision of the account overview. The shape matches\nthe current-revision endpoint.\n",
        "operationId": "getKnowledgebaseOverviewRevision",
        "parameters": [
          {
            "description": "The UUID of an account overview revision",
            "in": "path",
            "name": "revision_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "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}$",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a specific account overview revision",
        "tags": [
          "knowledgebase"
        ]
      }
    },
    "/knowledgebase/use_case_checklist": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UseCaseChecklistRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UseCaseChecklist"
                }
              }
            },
            "description": "The checklist for the draft"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "A fast, text-only completeness check for a use case still being\nwritten: given the draft `title`, `preface`, and `technical_details`,\nit returns the use case's `flavor` and a per-flavor checklist of\nrequirements, each marked covered / partial / missing. Intended to be\ncalled (debounced) as the author types. Ephemeral — nothing is\npersisted, and it does not gate anything (the review does). Runs on a\nfast model, so it is guidance rather than an authoritative verdict.\n",
        "operationId": "useCaseChecklist",
        "summary": "Real-time checklist for a use-case draft",
        "tags": [
          "knowledgebase",
          "experimental"
        ]
      }
    },
    "/knowledgebase/use_cases": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UseCaseSummary"
                  }
                }
              }
            },
            "description": "The list of use cases"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of use cases for the calling account. Returns summary fields\nonly; fetch a specific use case to see its preface, guide, and resources.\n",
        "operationId": "listUseCases",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List use cases",
        "tags": [
          "knowledgebase"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UseCasePost"
              }
            }
          },
          "description": "The use case to create",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UseCase"
                }
              }
            },
            "description": "The newly created use case"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Create a new use case under the calling account.",
        "operationId": "createUseCase",
        "summary": "Create a use case",
        "tags": [
          "knowledgebase"
        ],
        "x-codegen-request-body-name": "use_case_fields"
      }
    },
    "/knowledgebase/use_cases/{use_case_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Delete a use case. Unlike archiving, a deleted use case is no longer\nreturned by any read, including when listing archived use cases.\n",
        "operationId": "deleteUseCase",
        "parameters": [
          {
            "description": "The UUID of a use case",
            "in": "path",
            "name": "use_case_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "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}$",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a use case",
        "tags": [
          "knowledgebase"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UseCase"
                }
              }
            },
            "description": "The requested use case"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get the full current revision of a use case, including its computed `resources` list.",
        "operationId": "getUseCase",
        "parameters": [
          {
            "description": "The UUID of a use case",
            "in": "path",
            "name": "use_case_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "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}$",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a use case",
        "tags": [
          "knowledgebase"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UseCasePatch"
              }
            }
          },
          "description": "Fields to update on the existing use case",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UseCase"
                }
              }
            },
            "description": "The newly saved use case revision"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Save a new revision of a use case. Optimistic locking: pass back the\n`revision_id` you read; if the server's current revision has moved past\nit, the request is rejected with 409. Fields not present are left at\ntheir current values.\n",
        "operationId": "updateUseCase",
        "parameters": [
          {
            "description": "The UUID of a use case",
            "in": "path",
            "name": "use_case_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "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}$",
              "type": "string"
            }
          }
        ],
        "summary": "Update a use case",
        "tags": [
          "knowledgebase"
        ],
        "x-codegen-request-body-name": "use_case_fields"
      }
    },
    "/knowledgebase/use_cases/{use_case_id}/archive": {
      "post": {
        "responses": {
          "200": {
            "content": {},
            "description": "The use case was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Archive a use case. Use cases have no downstream dependents so no cascade configuration is required.",
        "operationId": "archiveUseCase",
        "parameters": [
          {
            "description": "The UUID of a use case",
            "in": "path",
            "name": "use_case_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "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}$",
              "type": "string"
            }
          }
        ],
        "summary": "Archive a use case",
        "tags": [
          "knowledgebase"
        ]
      }
    },
    "/knowledgebase/use_cases/{use_case_id}/review": {
      "post": {
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UseCaseReview"
                }
              }
            },
            "description": "The review was enqueued"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Request an agentic review of a use case: does it carry enough — its\npreface plus technical details — to generate a correct implementation\nguide and to audit the account against it? Enqueues the review and\nreturns it immediately with `status: \"pending\"`; it is filled in\nasynchronously. Poll the use case (its computed `review` field) or read\nthis response's `id` to see the result once `status` is `\"ready\"`.\n",
        "operationId": "reviewUseCase",
        "parameters": [
          {
            "description": "The UUID of a use case",
            "in": "path",
            "name": "use_case_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "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}$",
              "type": "string"
            }
          }
        ],
        "summary": "Request a review of a use case",
        "tags": [
          "knowledgebase",
          "experimental"
        ]
      }
    },
    "/knowledgebase/use_cases/{use_case_id}/revisions": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UseCaseRevisionSummary"
                  }
                }
              }
            },
            "description": "The list of use case revisions"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "List every saved revision of a use case, newest first.",
        "operationId": "listUseCaseRevisions",
        "parameters": [
          {
            "description": "The UUID of a use case",
            "in": "path",
            "name": "use_case_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "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}$",
              "type": "string"
            }
          }
        ],
        "summary": "List use case revisions",
        "tags": [
          "knowledgebase"
        ]
      }
    },
    "/knowledgebase/use_cases/{use_case_id}/revisions/{revision_id}": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UseCaseRevision"
                }
              }
            },
            "description": "The requested use case revision"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Read an older saved revision of a use case. The shape matches the\ncurrent-revision endpoint, except `resources` is omitted (resources are\na live computed property, not part of the versioned content).\n",
        "operationId": "getUseCaseRevision",
        "parameters": [
          {
            "description": "The UUID of a use case",
            "in": "path",
            "name": "use_case_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "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}$",
              "type": "string"
            }
          },
          {
            "description": "The UUID of a use case revision",
            "in": "path",
            "name": "revision_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "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}$",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a specific use case revision",
        "tags": [
          "knowledgebase"
        ]
      }
    },
    "/knowledgebase/use_cases/{use_case_id}/unarchive": {
      "post": {
        "responses": {
          "200": {
            "content": {},
            "description": "The use case was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Unarchive a use case.",
        "operationId": "unarchiveUseCase",
        "parameters": [
          {
            "description": "The UUID of a use case",
            "in": "path",
            "name": "use_case_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "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}$",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a use case",
        "tags": [
          "knowledgebase"
        ]
      }
    },
    "/locations": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Location"
                  }
                }
              }
            },
            "description": "A list of locations, with pagination metadata in headers",
            "headers": {
              "Link": {
                "description": "RFC 5988 pagination links with rel attributes (next, prev, first, last)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Total-Count": {
                "description": "Total number of records available",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of the locations belonging to every atlas on the account",
        "operationId": "getLocations",
        "parameters": [
          {
            "description": "Number of records to return. A larger value is reduced to 100.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 10,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of records to skip for pagination",
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "summary": "List locations",
        "tags": [
          "locations"
        ]
      }
    },
    "/market_opportunity_analyses": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MarketOpportunityAnalysis"
                  }
                }
              }
            },
            "description": "List of market opportunity analyses"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "getMarketOpportunityAnalyses",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "Get all market opportunity analyses",
        "tags": [
          "market_opportunity_analyses"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarketOpportunityAnalysisPost"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketOpportunityAnalysis"
                }
              }
            },
            "description": "Created market opportunity analysis"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "createMarketOpportunityAnalysis",
        "summary": "Create a new market opportunity analysis",
        "tags": [
          "market_opportunity_analyses"
        ],
        "x-codegen-request-body-name": "market_opportunity_analysis_fields"
      }
    },
    "/market_opportunity_analyses/{market_opportunity_analysis_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "deleteMarketOpportunityAnalysis",
        "parameters": [
          {
            "description": "The UUID of a market opportunity analysis",
            "in": "path",
            "name": "market_opportunity_analysis_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a specific market opportunity analysis",
        "tags": [
          "market_opportunity_analyses"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketOpportunityAnalysis"
                }
              }
            },
            "description": "market opportunity analysis"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "getMarketOpportunityAnalysis",
        "parameters": [
          {
            "in": "path",
            "name": "market_opportunity_analysis_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Get a specific market opportunity analysis",
        "tags": [
          "market_opportunity_analyses"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarketOpportunityAnalysisMergePatch"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketOpportunityAnalysis"
                }
              }
            },
            "description": "Updated market opportunity analysis"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "updateMarketOpportunityAnalysis",
        "parameters": [
          {
            "in": "path",
            "name": "market_opportunity_analysis_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Update a specific market opportunity analysis",
        "tags": [
          "market_opportunity_analyses"
        ],
        "x-codegen-request-body-name": "market_opportunity_analysis_fields"
      }
    },
    "/market_opportunity_analyses/{market_opportunity_analysis_id}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The market opportunity analysis was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "archiveMarketOpportunityAnalysis",
        "parameters": [
          {
            "in": "path",
            "name": "market_opportunity_analysis_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Archive a specific market opportunity analysis",
        "tags": [
          "market_opportunity_analyses"
        ]
      }
    },
    "/market_opportunity_analyses/{market_opportunity_analysis_id}/force_update": {
      "post": {
        "responses": {
          "200": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.",
        "operationId": "forceUpdateMarketOpportunityAnalysis",
        "parameters": [
          {
            "description": "The UUID of a market opportunity analysis",
            "in": "path",
            "name": "market_opportunity_analysis_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "market_opportunity_analyses"
        ]
      }
    },
    "/market_opportunity_analyses/{market_opportunity_analysis_id}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The market opportunity analysis was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "unarchiveMarketOpportunityAnalysis",
        "parameters": [
          {
            "in": "path",
            "name": "market_opportunity_analysis_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a specific market opportunity analysis",
        "tags": [
          "market_opportunity_analyses"
        ]
      }
    },
    "/migrations": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Migration"
                  }
                }
              }
            },
            "description": "Migrations visible from the current account"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "getMigrations",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List migrations",
        "tags": [
          "migrations",
          "experimental"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MigrationPost"
              }
            }
          },
          "description": "The definition of the new migration",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Migration"
                }
              }
            },
            "description": "Created migration"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "createMigration",
        "summary": "Create a migration",
        "tags": [
          "migrations",
          "experimental"
        ],
        "x-codegen-request-body-name": "migration_fields"
      }
    },
    "/migrations/{migration_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "deleteMigration",
        "parameters": [
          {
            "description": "The UUID of a migration",
            "in": "path",
            "name": "migration_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a migration",
        "tags": [
          "migrations",
          "experimental"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Migration"
                }
              }
            },
            "description": "The requested migration"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "getMigration",
        "parameters": [
          {
            "description": "The UUID of a migration",
            "in": "path",
            "name": "migration_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a migration",
        "tags": [
          "migrations",
          "experimental"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MigrationMergePatch"
              }
            }
          },
          "description": "Fields to update on the existing migration. To delete an optional field, set it to null.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Migration"
                }
              }
            },
            "description": "Updated migration"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Update a migration with a JSON Merge Patch. Configuration fields\n(`notes`, `datasets`, `targets`, `cohorts`, `outcomes`, `persona_sets`,\n`recommenders`) may be changed only by the owning FIG v2 account while\nthe migration is unapproved. Either linked account may provide a\nnon-null `approved_at` to queue the account move. The server records the\napproval time; repeated approval requests succeed without changing the\nfirst approval.\n",
        "operationId": "updateMigration",
        "parameters": [
          {
            "description": "The UUID of a migration",
            "in": "path",
            "name": "migration_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Update a migration",
        "tags": [
          "migrations",
          "experimental"
        ],
        "x-codegen-request-body-name": "migration_fields"
      }
    },
    "/migrations/{migration_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdateMigration",
        "parameters": [
          {
            "description": "The UUID of a migration",
            "in": "path",
            "name": "migration_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "migrations",
          "experimental"
        ]
      }
    },
    "/outcomes": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Outcome"
                  }
                }
              }
            },
            "description": "A list of outcomes"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of outcomes defined on the account",
        "operationId": "getOutcomes",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List outcomes",
        "tags": [
          "outcomes"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OutcomePost"
              }
            }
          },
          "description": "The definition of the new outcome",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Outcome"
                }
              }
            },
            "description": "The new outcome"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Add a new outcome (defined as a prediction of how likely individuals are to transition from one cohort to another)",
        "operationId": "createOutcome",
        "summary": "Create outcome",
        "tags": [
          "outcomes"
        ],
        "x-codegen-request-body-name": "outcome_fields"
      }
    },
    "/outcomes/{outcome_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "deleteOutcome",
        "parameters": [
          {
            "description": "The UUID of an outcome",
            "in": "path",
            "name": "outcome_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete an outcome",
        "tags": [
          "outcomes"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Outcome"
                }
              }
            },
            "description": "Information about the outcome"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a specific outcome",
        "operationId": "getOutcome",
        "parameters": [
          {
            "description": "The UUID of an outcome",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "in": "path",
            "name": "outcome_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve an outcome",
        "tags": [
          "outcomes"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/OutcomeMergePatch"
              }
            }
          },
          "description": "Fields to update on the existing outcome. To delete an optional field, you will need to set it to null.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Outcome"
                }
              }
            },
            "description": "The updated outcome"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Edit configuration of an existing outcome",
        "operationId": "updateOutcome",
        "parameters": [
          {
            "description": "The UUID of an outcome",
            "in": "path",
            "name": "outcome_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Edit an outcome",
        "tags": [
          "outcomes"
        ],
        "x-codegen-request-body-name": "outcome_fields"
      }
    },
    "/outcomes/{outcome_id}/analysis": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutcomeAnalysis"
                }
              }
            },
            "description": "Information about the outcome analysis"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a specific outcome's analysis report on model performance, bias, etc.",
        "operationId": "getOutcomeAnalysis",
        "parameters": [
          {
            "description": "The UUID of an outcome",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "in": "path",
            "name": "outcome_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve an outcome's analysis",
        "tags": [
          "outcomes"
        ]
      }
    },
    "/outcomes/{outcome_id}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The outcome was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Archive a outcome",
        "operationId": "archiveOutcome",
        "parameters": [
          {
            "description": "The UUID of a outcome",
            "in": "path",
            "name": "outcome_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Archive a outcome",
        "tags": [
          "outcomes"
        ]
      }
    },
    "/outcomes/{outcome_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdateOutcome",
        "parameters": [
          {
            "description": "The UUID of a outcome",
            "in": "path",
            "name": "outcome_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "outcomes"
        ]
      }
    },
    "/outcomes/{outcome_id}/report.html": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "text/html": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            },
            "description": "HTML file containing outcome report"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Download an HTML report containing information such as the objective of the model, performance, and important features",
        "operationId": "getOutcomeDownload",
        "parameters": [
          {
            "description": "The UUID of a outcome",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "in": "path",
            "name": "outcome_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve outcome report",
        "tags": [
          "outcomes"
        ]
      }
    },
    "/outcomes/{outcome_id}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The outcome was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Unarchive a outcome",
        "operationId": "unarchiveOutcome",
        "parameters": [
          {
            "description": "The UUID of a outcome",
            "in": "path",
            "name": "outcome_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a outcome",
        "tags": [
          "outcomes"
        ]
      }
    },
    "/persona_sets": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PersonaSet"
                  }
                }
              }
            },
            "description": "Information about the persona sets"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "A list of available persona sets",
        "operationId": "getPersonaSets",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List persona sets",
        "tags": [
          "persona_sets"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PersonaSetPost"
              }
            }
          },
          "description": "Configuration parameters for the new persona model",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonaSet"
                }
              }
            },
            "description": "The newly created persona set (still building)"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Invoke the build of a new persona set for a given cohort",
        "operationId": "createPersonaSet",
        "summary": "Create persona set",
        "tags": [
          "persona_sets"
        ]
      }
    },
    "/persona_sets/{persona_set_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "deletePersonaSet",
        "parameters": [
          {
            "description": "The UUID of a persona set",
            "in": "path",
            "name": "persona_set_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a persona set",
        "tags": [
          "persona_sets"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonaSet"
                }
              }
            },
            "description": "Information on the persona set",
            "links": {
              "cohort": {
                "operationId": "getCohort",
                "parameters": {
                  "cohort_id": "$response.body#/cohort_id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Details on a specific persona set, including details on all of its constituent personas",
        "operationId": "getPersonaSet",
        "parameters": [
          {
            "description": "The UUID of a persona set",
            "in": "path",
            "name": "persona_set_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a persona set",
        "tags": [
          "persona_sets"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PersonaSetMergePatch"
              }
            }
          },
          "description": "Fields to update on the existing persona set. To delete an optional field, set it to null.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonaSet"
                }
              }
            },
            "description": "The updated persona set"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Edit a persona set",
        "operationId": "updatePersonaSet",
        "parameters": [
          {
            "description": "The UUID of a persona set",
            "in": "path",
            "name": "persona_set_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Edit a persona set",
        "tags": [
          "persona_sets"
        ],
        "x-codegen-request-body-name": "persona_set_fields"
      }
    },
    "/persona_sets/{persona_set_id}/analysis/dimensions": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PersonaSetAnalysisDimensions"
                  }
                }
              }
            },
            "description": "Various counts and analysis info (either trait based or other) about the personas within the set."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "getPersonaSetAnalysisDimensions",
        "parameters": [
          {
            "description": "The UUID of a persona set",
            "in": "path",
            "name": "persona_set_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get various trait breakdown information about a persona set.",
        "tags": [
          "persona_sets"
        ]
      }
    },
    "/persona_sets/{persona_set_id}/analysis/flow": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonaSetAnalysisFlow"
                }
              }
            },
            "description": "Analysis of purchase value by persona over time."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "deprecated": true,
        "operationId": "getPersonaSetAnalysisFlow",
        "parameters": [
          {
            "description": "The UUID of a persona set",
            "in": "path",
            "name": "persona_set_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get various flow of persona sets over time.",
        "tags": [
          "persona_sets"
        ]
      }
    },
    "/persona_sets/{persona_set_id}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The persona set was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Archive a persona set",
        "operationId": "archivePersonaSet",
        "parameters": [
          {
            "description": "The UUID of a persona set",
            "in": "path",
            "name": "persona_set_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Archive a persona set",
        "tags": [
          "persona_sets"
        ]
      }
    },
    "/persona_sets/{persona_set_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdatePersonaSet",
        "parameters": [
          {
            "description": "The UUID of a persona set",
            "in": "path",
            "name": "persona_set_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "persona_sets"
        ]
      }
    },
    "/persona_sets/{persona_set_id}/personas/{persona_id}": {
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PersonaMergePatch"
              }
            }
          },
          "description": "Fields to update on the existing persona. To delete an optional field, set it to null.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Persona"
                }
              }
            },
            "description": "The updated persona"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Edit a persona",
        "operationId": "updatePersona",
        "parameters": [
          {
            "description": "The UUID of a persona set",
            "in": "path",
            "name": "persona_set_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The UUID of a persona",
            "in": "path",
            "name": "persona_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Edit a persona",
        "tags": [
          "persona_sets"
        ],
        "x-codegen-request-body-name": "persona_fields"
      }
    },
    "/persona_sets/{persona_set_id}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The personaSet was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Unarchive a persona set",
        "operationId": "unarchivePersonaSet",
        "parameters": [
          {
            "description": "The UUID of a persona set",
            "in": "path",
            "name": "persona_set_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a persona set",
        "tags": [
          "persona_sets"
        ]
      }
    },
    "/places": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Place"
                  }
                }
              }
            },
            "description": "A list of places"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "deprecated": true,
        "description": "Get a list of the places defined on the account. Geometry and addresses are omitted from\nthis endpoint's response to avoid overly large response sizes. If you want to inspect a place's geometry or\naddresses, then use GET /places/<place id>.\n\nPlaces are superseded by atlases, whose locations are built from a connection or an\nuploaded file. See GET /atlases.\n",
        "operationId": "getPlaces",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List places",
        "tags": [
          "places"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlacePost"
              }
            }
          },
          "description": "The place to create",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Place"
                }
              }
            },
            "description": "The place was successfully created"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "deprecated": true,
        "description": "Create a new place.\n\nPlaces are superseded by atlases, whose locations are built from a connection or an\nuploaded file. Build new spatial filters on an atlas: see POST /atlases.\n",
        "operationId": "createPlace",
        "summary": "Create place",
        "tags": [
          "places"
        ],
        "x-codegen-request-body-name": "place_fields"
      }
    },
    "/places/{place_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "deprecated": true,
        "description": "Delete a place.\n\nPlaces are superseded by atlases, whose locations are built from a connection or an\nuploaded file. See DELETE /atlases/{atlas_id}.\n",
        "operationId": "deletePlace",
        "parameters": [
          {
            "description": "The UUID of a place",
            "in": "path",
            "name": "place_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a place",
        "tags": [
          "places"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Place"
                }
              }
            },
            "description": "The requested place"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "deprecated": true,
        "description": "Retrieve details on a specific place.\n\nPlaces are superseded by atlases, whose locations are built from a connection or an\nuploaded file. See GET /atlases/{atlas_id}.\n",
        "operationId": "getPlace",
        "parameters": [
          {
            "description": "The UUID of a place",
            "in": "path",
            "name": "place_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a place",
        "tags": [
          "places"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PlaceMergePatch"
              }
            }
          },
          "description": "Fields to update on the existing place (all optional)",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Place"
                }
              }
            },
            "description": "The updated place"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "deprecated": true,
        "description": "Update an existing place.\n\nPlaces are superseded by atlases, whose locations are built from a connection or an\nuploaded file. See PATCH /atlases/{atlas_id}.\n",
        "operationId": "updatePlace",
        "parameters": [
          {
            "description": "The UUID of a place",
            "in": "path",
            "name": "place_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Update place",
        "tags": [
          "places"
        ],
        "x-codegen-request-body-name": "place_fields"
      }
    },
    "/places/{place_id}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The place was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "deprecated": true,
        "description": "Archive a place.\n\nPlaces are superseded by atlases, whose locations are built from a connection or an\nuploaded file. See POST /atlases/{atlas_id}/archive.\n",
        "operationId": "archivePlace",
        "parameters": [
          {
            "description": "The UUID of a place",
            "in": "path",
            "name": "place_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Archive a place",
        "tags": [
          "places"
        ]
      }
    },
    "/places/{place_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "deprecated": true,
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n\nPlaces are superseded by atlases, whose locations are built from a connection or an\nuploaded file. See POST /atlases/{atlas_id}/force_update.\n",
        "operationId": "forceUpdatePlace",
        "parameters": [
          {
            "description": "The UUID of a place",
            "in": "path",
            "name": "place_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "places"
        ]
      }
    },
    "/places/{place_id}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The place was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "deprecated": true,
        "description": "Unarchive a place.\n\nPlaces are superseded by atlases, whose locations are built from a connection or an\nuploaded file. See POST /atlases/{atlas_id}/unarchive.\n",
        "operationId": "unarchivePlace",
        "parameters": [
          {
            "description": "The UUID of a place",
            "in": "path",
            "name": "place_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a place",
        "tags": [
          "places"
        ]
      }
    },
    "/recommenders": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Recommender"
                  }
                }
              }
            },
            "description": "A list of recommenders"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of recommenders defined on the account",
        "operationId": "getRecommenders",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List recommenders",
        "tags": [
          "recommenders"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecommenderPost"
              }
            }
          },
          "description": "The definition of the new recommender",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Recommender"
                }
              }
            },
            "description": "The new recommender"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Add a new recommender.\n\nThis feature is experimental and subject to change. To enable this feature, contact your account manager.\n",
        "operationId": "createRecommender",
        "summary": "Create recommender",
        "tags": [
          "recommenders"
        ],
        "x-codegen-request-body-name": "recommender_fields"
      }
    },
    "/recommenders/{recommender_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "deleteRecommender",
        "parameters": [
          {
            "description": "The UUID of a recommender",
            "in": "path",
            "name": "recommender_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a recommender",
        "tags": [
          "recommenders"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Recommender"
                }
              }
            },
            "description": "Information about the recommender"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a specific recommender",
        "operationId": "getRecommender",
        "parameters": [
          {
            "description": "The UUID of a recommender",
            "in": "path",
            "name": "recommender_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a recommender",
        "tags": [
          "recommenders"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RecommenderMergePatch"
              }
            }
          },
          "description": "Fields to update on the existing recommender. To delete an optional field, set it to null.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Recommender"
                }
              }
            },
            "description": "The updated recommender"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Edit configuration of a recommender",
        "operationId": "updateRecommender",
        "parameters": [
          {
            "description": "The UUID of a recommender",
            "in": "path",
            "name": "recommender_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Edit a recommender",
        "tags": [
          "recommenders"
        ],
        "x-codegen-request-body-name": "recommender_fields"
      }
    },
    "/recommenders/{recommender_id}/analysis": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecommenderAnalysis"
                }
              }
            },
            "description": "Information about the recommender analysis"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a specific recommender's analysis report on model performance, bias, etc.",
        "operationId": "getRecommenderAnalysis",
        "parameters": [
          {
            "description": "The UUID of a recommender",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "in": "path",
            "name": "recommender_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a recommenders's analysis",
        "tags": [
          "recommenders"
        ]
      }
    },
    "/recommenders/{recommender_id}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The recommender was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Archive a recommender",
        "operationId": "archiveRecommender",
        "parameters": [
          {
            "description": "The UUID of a recommender",
            "in": "path",
            "name": "recommender_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Archive a recommender",
        "tags": [
          "recommenders"
        ]
      }
    },
    "/recommenders/{recommender_id}/force_update": {
      "post": {
        "responses": {
          "200": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.",
        "operationId": "forceUpdateRecommender",
        "parameters": [
          {
            "description": "The UUID of a recommender",
            "in": "path",
            "name": "recommender_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "recommenders"
        ]
      }
    },
    "/recommenders/{recommender_id}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The recommender was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Unarchive a recommender",
        "operationId": "unarchiveRecommender",
        "parameters": [
          {
            "description": "The UUID of a recommender",
            "in": "path",
            "name": "recommender_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a recommender",
        "tags": [
          "recommenders"
        ]
      }
    },
    "/scopes": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Scope"
                  }
                }
              }
            },
            "description": "The scopes defined on this account"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of scopes defined on the account",
        "operationId": "getScopes",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List scopes",
        "tags": [
          "scopes"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScopePost"
              }
            }
          },
          "description": "The definition of the new scope",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Scope"
                }
              }
            },
            "description": "The new scope"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Add a new scope",
        "operationId": "createScope",
        "summary": "Create scope",
        "tags": [
          "scopes"
        ],
        "x-codegen-request-body-name": "scope_fields"
      }
    },
    "/scopes/{scope_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "deleteScope",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a scope",
        "tags": [
          "scopes"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Scope"
                }
              }
            },
            "description": "Information about the scope",
            "links": {
              "datasets": {
                "operationId": "getScopeDatasets",
                "parameters": {
                  "scope_id": "$response.body#/id"
                }
              },
              "payloadCohorts": {
                "operationId": "getScopePayloadCohorts",
                "parameters": {
                  "scope_id": "$response.body#/id"
                }
              },
              "payloadOutcomes": {
                "operationId": "getScopePayloadOutcomes",
                "parameters": {
                  "scope_id": "$response.body#/id"
                }
              },
              "payloadPersonaSets": {
                "operationId": "getScopePayloadPersonaSets",
                "parameters": {
                  "scope_id": "$response.body#/id"
                }
              },
              "payloadRecommenders": {
                "operationId": "getScopePayloadRecommenders",
                "parameters": {
                  "scope_id": "$response.body#/id"
                }
              },
              "populationCohorts": {
                "operationId": "getScopePopulationCohorts",
                "parameters": {
                  "scope_id": "$response.body#/id"
                }
              },
              "populationExclusionAddressLevelCohorts": {
                "operationId": "getScopePopulationExclusionAddressLevelCohorts",
                "parameters": {
                  "scope_id": "$response.body#/id"
                }
              },
              "populationExclusionCohorts": {
                "operationId": "getScopePopulationExclusionCohorts",
                "parameters": {
                  "scope_id": "$response.body#/id"
                }
              },
              "targets": {
                "operationId": "getScopeTargets",
                "parameters": {
                  "scope_id": "$response.body#/id"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a specific scope",
        "operationId": "getScope",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a scope",
        "tags": [
          "scopes"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ScopeMergePatch"
              }
            }
          },
          "description": "Fields to update on the scope (all optional)",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Scope"
                }
              }
            },
            "description": "Information about the scope"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Update the configuration of a scope.",
        "operationId": "updateScope",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Update a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/analysis": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScopeAnalysis"
                }
              }
            },
            "description": "Information about the scope performance and other analysis"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get analysis for a scope",
        "operationId": "getScopeAnalysis",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get analysis for a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/analysis/geography": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScopeGeography"
                }
              }
            },
            "description": "Geographic breakdown for this scope"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a postcode- and state-level breakdown of the scope population, including per-payload-cohort counts. `postcodes` may be omitted when the scope spans more than 250 distinct postcodes (the UI distribution table saturates at that point); `states` is always present.",
        "operationId": "getScopeGeography",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get geographic breakdown for a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The scope was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Archive a scope",
        "operationId": "archiveScope",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Archive a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/datasets": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Dataset"
                  }
                }
              }
            },
            "description": "A list of datasets"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Retrieve all datasets associated with a scope. For example, if your scope has population_cohorts, you built those cohorts using data from one of your datasets. This endpoint gets all such datasets. This can be used with referenced targets, to figure out which source tables the target can reference.",
        "operationId": "getScopeDatasets",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve all datasets associated with a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/efficacy": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScopeEfficacy"
                }
              }
            },
            "description": "Information about the efficacy for this scope"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get efficacy for a scope",
        "operationId": "getScopeEfficacy",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get efficacy for a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdateScope",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/payload/cohorts": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Cohort"
                  }
                }
              }
            },
            "description": "Information about the payload cohorts for this scope"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get payload cohorts for a scope",
        "operationId": "getScopePayloadCohorts",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get payload cohorts for a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/payload/outcomes": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Outcome"
                  }
                }
              }
            },
            "description": "Information about the payload outcomes for this scope"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get payload outcomes for a scope",
        "operationId": "getScopePayloadOutcomes",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get payload outcomes for a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/payload/persona_sets": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PersonaSet"
                  }
                }
              }
            },
            "description": "Information about the payload persona sets for this scope"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get payload persona sets for a scope",
        "operationId": "getScopePayloadPersonaSets",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get payload persona sets for a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/payload/recommenders": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Recommender"
                  }
                }
              }
            },
            "description": "Information about the payload recommenders for this scope"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get payload recommenders for a scope",
        "operationId": "getScopePayloadRecommenders",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get payload recommenders for a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/population/cohorts": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Cohort"
                  }
                }
              }
            },
            "description": "Information about the population cohorts for this scope"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get population cohorts for a scope",
        "operationId": "getScopePopulationCohorts",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get population cohorts for a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/population/exclusion_address_level_cohorts": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Cohort"
                  }
                }
              }
            },
            "description": "Information about the address-level population exclusion cohorts for this scope"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get address-level population exclusion cohorts for a scope",
        "operationId": "getScopePopulationExclusionAddressLevelCohorts",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get address-level population exclusion cohorts for a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/population/exclusion_cohorts": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Cohort"
                  }
                }
              }
            },
            "description": "Information about the population exclusion cohorts for this scope"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get population exclusion cohorts for a scope",
        "operationId": "getScopePopulationExclusionCohorts",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get population exclusion cohorts for a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/targets": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Target"
                  }
                }
              }
            },
            "description": "Information about the targets for this scope"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get targets for a scope",
        "operationId": "getScopeTargets",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get targets for a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/scopes/{scope_id}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The scope was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Unarchive a scope",
        "operationId": "unarchiveScope",
        "parameters": [
          {
            "description": "The UUID of a scope",
            "in": "path",
            "name": "scope_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a scope",
        "tags": [
          "scopes"
        ]
      }
    },
    "/streams": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Stream"
                  }
                }
              }
            },
            "description": "The event stream."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "List all streams present on the account",
        "operationId": "getStreams",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List streams",
        "tags": [
          "streams"
        ]
      }
    },
    "/streams/{stream_id_or_name}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "deleteStream",
        "parameters": [
          {
            "description": "The stream's UUID or name",
            "in": "path",
            "name": "stream_id_or_name",
            "required": true,
            "schema": {
              "example": "orders",
              "maxLength": 64,
              "type": "string"
            }
          }
        ],
        "summary": "Delete a stream",
        "tags": [
          "streams"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Stream"
                }
              }
            },
            "description": "The event stream."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Look up a specific event stream.",
        "operationId": "getStream",
        "parameters": [
          {
            "description": "The stream's UUID or name",
            "in": "path",
            "name": "stream_id_or_name",
            "required": true,
            "schema": {
              "example": "orders",
              "maxLength": 64,
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a stream",
        "tags": [
          "streams"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/StreamMergePatch"
              }
            }
          },
          "description": "Fields to update on the existing stream. To delete an optional field, set it to null.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Stream"
                }
              }
            },
            "description": "The updated stream"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Update the configuration of a stream",
        "operationId": "updateStream",
        "parameters": [
          {
            "description": "The stream's UUID or name",
            "in": "path",
            "name": "stream_id_or_name",
            "required": true,
            "schema": {
              "example": "orders",
              "maxLength": 64,
              "type": "string"
            }
          }
        ],
        "summary": "Update a stream",
        "tags": [
          "streams"
        ],
        "x-codegen-request-body-name": "stream_fields"
      }
    },
    "/streams/{stream_id_or_name}/analysis": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamAnalysis"
                }
              }
            },
            "description": "Analysis of stream event counts over time."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "getStreamAnalysis",
        "parameters": [
          {
            "description": "The UUID of a stream or stream name",
            "in": "path",
            "name": "stream_id_or_name",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get the count of stream events emitted over a time period.",
        "tags": [
          "streams"
        ]
      }
    },
    "/streams/{stream_id_or_name}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The stream was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Archive a stream",
        "operationId": "archiveStream",
        "parameters": [
          {
            "description": "The UUID of a stream",
            "in": "path",
            "name": "stream_id_or_name",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Archive a stream",
        "tags": [
          "streams"
        ]
      }
    },
    "/streams/{stream_id_or_name}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdateStream",
        "parameters": [
          {
            "description": "The UUID of a stream",
            "in": "path",
            "name": "stream_id_or_name",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "streams"
        ]
      }
    },
    "/streams/{stream_id_or_name}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The stream was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Unarchive a stream",
        "operationId": "unarchiveStream",
        "parameters": [
          {
            "description": "The UUID of a stream",
            "in": "path",
            "name": "stream_id_or_name",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a stream",
        "tags": [
          "streams"
        ]
      }
    },
    "/streams/{stream_name}": {
      "post": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Stream"
                }
              }
            },
            "description": "The event stream."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Look up (or create) an event stream by name.",
        "operationId": "findOrCreateStream",
        "parameters": [
          {
            "description": "The name of the event stream to find or create.",
            "in": "path",
            "name": "stream_name",
            "required": true,
            "schema": {
              "example": "orders",
              "maxLength": 64,
              "type": "string"
            }
          }
        ],
        "summary": "Create a stream",
        "tags": [
          "streams"
        ]
      }
    },
    "/targets": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Target"
                  }
                }
              }
            },
            "description": "The targets defined on this account"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of targets defined on the account",
        "operationId": "getTargets",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List targets",
        "tags": [
          "targets"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TargetPost"
              }
            }
          },
          "description": "The definition of the new target",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Target"
                }
              }
            },
            "description": "The new target"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Add a new target.\n\nTargets are configuration for exporting data from Faraday, possibly to an external environment (with <a href=\"https://faraday.ai/developers/reference/createconnection\">/connections</a>).\n\nThere are three types of targets:\n<table>\n<thead>\n<tr><th>Target type</th><th>Description</th><th>API requirement</th></tr>\n</thead>\n<tbody>\n<tr><td><strong>Publication</strong></td><td>Faraday <em>hosts</em> your predictions for convenient retrieval as needed.</td><td>Specify a <code>type</code> of <code>hosted_csv</code> in <code>options</code>. Omit <code>connection_id</code>.</td></tr>\n<tr><td><strong>Replication</strong></td><td>Faraday copies your predictions to systems <em>you</em> control. You may then push them to third parties like Facebook, Google Ads, etc.</td><td>Specify a valid <code>connection_id</code> and the corresponding <code>type</code> of the connection in <code>options</code>.</td></tr>\n<tr><td><strong>Managed</strong></td><td>Faraday manages a push to third parties like Facebook, Google Ads, and more.</td><td>Must be on an enterprise plan. Contact Customer Success to set up.</td></tr>\n</tbody>\n</table>\n",
        "operationId": "createTarget",
        "summary": "Create target",
        "tags": [
          "targets"
        ],
        "x-codegen-request-body-name": "target_fields"
      }
    },
    "/targets/{target_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Delete a target",
        "operationId": "deleteTarget",
        "parameters": [
          {
            "description": "The UUID of a target",
            "in": "path",
            "name": "target_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a target",
        "tags": [
          "targets"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Target"
                }
              }
            },
            "description": "Information about the target"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a specific target",
        "operationId": "getTarget",
        "parameters": [
          {
            "description": "The UUID of a target",
            "in": "path",
            "name": "target_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a target",
        "tags": [
          "targets"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TargetMergePatch"
              }
            }
          },
          "description": "Fields to update on the target (all optional)",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Target"
                }
              }
            },
            "description": "Information about the target"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Update the configuration of a target.",
        "operationId": "updateTarget",
        "parameters": [
          {
            "description": "The UUID of a target",
            "in": "path",
            "name": "target_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Update a target",
        "tags": [
          "targets"
        ]
      }
    },
    "/targets/{target_id}/analysis": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TargetAnalysis"
                }
              }
            },
            "description": "Information about the target analysis"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a target's analysis report for specific trait, attribute, and/or geography dimensions.",
        "operationId": "getTargetAnalysis",
        "parameters": [
          {
            "description": "The UUID of a target",
            "in": "path",
            "name": "target_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a target's analysis",
        "tags": [
          "targets"
        ]
      }
    },
    "/targets/{target_id}/analysis/pdf": {
      "get": {
        "responses": {
          "302": {
            "content": {},
            "description": "Redirect to the signed URL for the report. Read Location header for path to download. Ensure your fetch library or tool follows the Location header (e.g., curl -L). Note that not all tools or libraries will automatically follow the Location header from a redirect by default. Expires in 1 minute.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Gets a redirect URL to download a PDF report.",
        "operationId": "getTargetAnalysisReport",
        "parameters": [
          {
            "description": "The UUID of a target",
            "in": "path",
            "name": "target_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve target analysis report",
        "tags": [
          "targets"
        ]
      }
    },
    "/targets/{target_id}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The target was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Archive a target",
        "operationId": "archiveTarget",
        "parameters": [
          {
            "description": "The UUID of a target",
            "in": "path",
            "name": "target_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Archive a target",
        "tags": [
          "targets"
        ]
      }
    },
    "/targets/{target_id}/download.csv": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The CSV file"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "downloadTarget",
        "parameters": [
          {
            "description": "The UUID of a target",
            "in": "path",
            "name": "target_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Download the default output of a target",
        "tags": [
          "targets"
        ]
      }
    },
    "/targets/{target_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdateTarget",
        "parameters": [
          {
            "description": "The UUID of a target",
            "in": "path",
            "name": "target_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "targets"
        ]
      }
    },
    "/targets/{target_id}/lookup": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TargetLookupRequest"
              }
            }
          },
          "description": "A lookup request",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TargetLookupResponse"
                }
              }
            },
            "description": "The lookup response"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Use either PII or a spatial aggregate to retrieve the payload of a Lookup API target.\nSee the Lookup API specification's [quickstart](https://faraday.ai/docs/features/lookup-api#retrieve-predictions) for more details, including examples.\n",
        "operationId": "lookupOnTarget",
        "parameters": [
          {
            "description": "The UUID of a target",
            "in": "path",
            "name": "target_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Perform a lookup on the target, if its type is Lookup API.",
        "tags": [
          "targets"
        ]
      }
    },
    "/targets/{target_id}/preview": {
      "post": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "target_id",
                    "message"
                  ],
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "A human-readable status message."
                    },
                    "target_id": {
                      "type": "string",
                      "description": "The Target UUID."
                    }
                  },
                  "additionalProperties": false,
                  "description": "A target preview response."
                }
              }
            },
            "description": "Target preview successfully started"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a preview delivery (first 1000 results) of a target",
        "operationId": "createTargetPreview",
        "parameters": [
          {
            "description": "The UUID of a target",
            "in": "path",
            "name": "target_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Start a preview delivery",
        "tags": [
          "targets"
        ]
      }
    },
    "/targets/{target_id}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The target was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Unarchive a target",
        "operationId": "unarchiveTarget",
        "parameters": [
          {
            "description": "The UUID of a target",
            "in": "path",
            "name": "target_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a target",
        "tags": [
          "targets"
        ]
      }
    },
    "/traits": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Delete all traits without a source dataset.",
        "operationId": "deleteAllOrphanedTraits",
        "summary": "Delete all orphaned traits",
        "tags": [
          "traits"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Trait"
                  }
                }
              }
            },
            "description": "The traits available for this account."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of all available traits, including those provided by Faraday and those defined by the user.",
        "operationId": "getTraits",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List all user-defined and Faraday-provided traits",
        "tags": [
          "traits"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TraitPost"
              }
            }
          },
          "description": "The definition of the new Trait",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Trait"
                }
              }
            },
            "description": "The new Trait"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Create a new user-defined Trait. You can connect your uploaded data to this trait by sending a PATCH to the\nrelevant dataset with `output_to_traits` defined.\n",
        "operationId": "createTrait",
        "summary": "Create a Trait",
        "tags": [
          "traits"
        ],
        "x-codegen-request-body-name": "trait_fields"
      }
    },
    "/traits.csv": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The CSV file"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a csv of all available traits, including those provided by Faraday and those defined by the user.",
        "operationId": "getTraitsCsv",
        "summary": "List all user-defined and Faraday-provided traits, in csv form",
        "tags": [
          "traits"
        ]
      }
    },
    "/traits/{trait_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Delete a trait",
        "operationId": "deleteTrait",
        "parameters": [
          {
            "description": "The UUID of a trait",
            "in": "path",
            "name": "trait_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a trait",
        "tags": [
          "traits"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Trait"
                }
              }
            },
            "description": "Information about the trait"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a specific trait by ID.",
        "operationId": "getTrait",
        "parameters": [
          {
            "description": "the UUID of a trait.",
            "in": "path",
            "name": "trait_id",
            "required": true,
            "schema": {
              "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Get a specific trait",
        "tags": [
          "traits"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TraitMergePatch"
              }
            }
          },
          "description": "Fields to update on the trait",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Trait"
                }
              }
            },
            "description": "Information about the Trait"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Update the configuration of a trait",
        "operationId": "updateTrait",
        "parameters": [
          {
            "description": "The UUID of a trait",
            "in": "path",
            "name": "trait_id",
            "required": true,
            "schema": {
              "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Update a trait",
        "tags": [
          "traits"
        ]
      }
    },
    "/traits/{trait_id}/analysis/dimensions": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalysisDimensionsTrait"
                }
              }
            },
            "description": "Counts and analysis info about the trait."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "getTraitAnalysisDimensions",
        "parameters": [
          {
            "description": "The UUID of a trait",
            "in": "path",
            "name": "trait_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "The percentage of the US population that falls into each category of this trait.",
        "tags": [
          "traits"
        ]
      }
    },
    "/traits/{trait_id}/archive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be archived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The trait was successfully archived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Archive a trait",
        "operationId": "archiveTrait",
        "parameters": [
          {
            "description": "The UUID of a trait",
            "in": "path",
            "name": "trait_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Archive a trait",
        "tags": [
          "traits"
        ]
      }
    },
    "/traits/{trait_id}/force_update": {
      "post": {
        "responses": {
          "202": {
            "$ref": "#/components/responses/JobStarted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Trigger a rerun for this resource.\nFaraday automatically updates resources when their config changes,\nbut this option is available in case of transient errors.\n",
        "operationId": "forceUpdateTrait",
        "parameters": [
          {
            "description": "The UUID of a trait",
            "in": "path",
            "name": "trait_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Trigger a rerun for this resource.",
        "tags": [
          "traits"
        ]
      }
    },
    "/traits/{trait_id}/unarchive": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArchiveConfig"
              }
            }
          },
          "description": "configure any resources that should be unarchived alongside this one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "The trait was successfully unarchived"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Unarchive a trait",
        "operationId": "unarchiveTrait",
        "parameters": [
          {
            "description": "The UUID of a trait",
            "in": "path",
            "name": "trait_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Unarchive a trait",
        "tags": [
          "traits"
        ]
      }
    },
    "/uploads": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Upload"
                  }
                }
              }
            },
            "description": "Information about the uploaded files"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "A list of files uploaded via /uploads/{directory}/{filename}, and their metadata",
        "operationId": "getUploads",
        "summary": "Retrieve the list of previously uploaded files",
        "tags": [
          "uploads"
        ]
      }
    },
    "/uploads/{directory}/{filename}": {
      "delete": {
        "responses": {
          "200": {
            "content": {},
            "description": "File successfully deleted."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Delete a CSV file previously uploaded.",
        "operationId": "deleteUpload",
        "parameters": [
          {
            "description": "A directory of files which can be imported as a single dataset",
            "in": "path",
            "name": "directory",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadDirectory"
            }
          },
          {
            "description": "The name of an individual data file in a dataset",
            "in": "path",
            "name": "filename",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadFileName"
            }
          }
        ],
        "summary": "Delete a file",
        "tags": [
          "uploads"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            },
            "description": "csv file previously uploaded"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "The file uploaded via /uploads/{directory}/{filename}",
        "operationId": "getUpload",
        "parameters": [
          {
            "description": "A directory of files which can be imported as a single dataset",
            "in": "path",
            "name": "directory",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadDirectory"
            }
          },
          {
            "description": "The name of an individual data file in a dataset",
            "in": "path",
            "name": "filename",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadFileName"
            }
          }
        ],
        "summary": "Download a previously uploaded file",
        "tags": [
          "uploads"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {},
            "description": "Upload successful."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Upload a CSV file containing data to process.",
        "operationId": "createUpload",
        "parameters": [
          {
            "description": "A directory of files which can be imported as a single dataset",
            "in": "path",
            "name": "directory",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadDirectory"
            }
          },
          {
            "description": "The name of an individual data file in a dataset",
            "in": "path",
            "name": "filename",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadFileName"
            }
          }
        ],
        "summary": "Add a file",
        "tags": [
          "uploads"
        ]
      }
    },
    "/usages": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AccountUsage"
                  }
                }
              }
            },
            "description": "Information about the account's usages"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get usage stats for your account.",
        "operationId": "getUsages",
        "summary": "Get usage stats for your account.",
        "tags": [
          "usage"
        ]
      }
    },
    "/webhook_endpoints": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookEndpoint"
                  }
                }
              }
            },
            "description": "The webhook endpoints defined on this account"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get a list of webhook endpoints defined on the account",
        "operationId": "getWebhookEndpoints",
        "parameters": [
          {
            "$ref": "#/components/parameters/ResourceIds"
          }
        ],
        "summary": "List webhook endpoints",
        "tags": [
          "webhooks"
        ]
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookEndpointPost"
              }
            }
          },
          "description": "The definition of the new webhook endpoint",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpoint"
                }
              }
            },
            "description": "The new webhook endpoint"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Add a new webhook endpoint",
        "operationId": "createWebhookEndpoint",
        "summary": "Create webhook endpoint",
        "tags": [
          "webhooks"
        ],
        "x-codegen-request-body-name": "webhook_endpoint_fields"
      }
    },
    "/webhook_endpoints/{webhook_endpoint_id}": {
      "delete": {
        "responses": {
          "204": {
            "$ref": "#/components/responses/Deleted"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Delete a webhook endpoint",
        "operationId": "deleteWebhookEndpoint",
        "parameters": [
          {
            "description": "The UUID of a webhook endpoint",
            "in": "path",
            "name": "webhook_endpoint_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Delete a webhook endpoint",
        "tags": [
          "webhooks"
        ]
      },
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpoint"
                }
              }
            },
            "description": "Information about the webhook endpoint"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Get details on a specific webhook endpoint",
        "operationId": "getWebhookEndpoint",
        "parameters": [
          {
            "description": "The UUID of a webhook endpoint",
            "in": "path",
            "name": "webhook_endpoint_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Retrieve a webhook",
        "tags": [
          "webhooks"
        ]
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookEndpointMergePatch"
              }
            }
          },
          "description": "Fields to update on the webhook endpoint",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpoint"
                }
              }
            },
            "description": "Information about the webhook endpoint"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "description": "Update the configuration of a webhook endpoint",
        "operationId": "updateWebhookEndpoint",
        "parameters": [
          {
            "description": "The UUID of a webhook endpoint",
            "in": "path",
            "name": "webhook_endpoint_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "summary": "Update a webhook endpoint",
        "tags": [
          "webhooks"
        ]
      }
    }
  },
  "components": {
    "responses": {
      "BadRequest": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The request was invalid."
      },
      "Conflict": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The request was formatted correctly, but conflicted with an existing resource."
      },
      "Deleted": {
        "content": {},
        "description": "The resource was successfully deleted."
      },
      "DeletionScheduled": {
        "content": {},
        "description": "The resource was successfully scheduled for deletion."
      },
      "Forbidden": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "Access to this resource was forbidden."
      },
      "InternalServerError": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "An internal server error occurred."
      },
      "JobStarted": {
        "content": {},
        "description": "The resource was queued for a rerun."
      },
      "NotFound": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "The requested resource ID was not found."
      },
      "Unauthorized": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "No API key was supplied."
      }
    },
    "schemas": {
      "Account": {
        "type": "object",
        "required": [
          "created_at",
          "id",
          "name",
          "resource_type",
          "status",
          "updated_at"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "The API key for the account. Use this to authenticate API calls.",
            "example": "prod_fdysec_abcd",
            "x-secret": true
          },
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "branding": {
            "type": "object",
            "properties": {
              "suppress_from_reports": {
                "type": "boolean",
                "description": "Suppress all branding from all reports. If not specified, defaults to false.\n"
              }
            },
            "description": "Whitelabel branding for the account.\n"
          },
          "commitment": {
            "$ref": "#/components/schemas/AccountCommitment"
          },
          "contract_started_at": {
            "type": "string",
            "description": "The start date of the account's contract with Faraday.",
            "format": "date"
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "format": "uuid"
          },
          "identity_graph": {
            "type": "object",
            "required": [
              "feature_store_id"
            ],
            "properties": {
              "feature_store_id": {
                "type": "string",
                "description": "The feature store this account uses for retrieving metadata such as attributes.",
                "format": "uuid"
              }
            },
            "description": "Faraday identity graph configuration."
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "The name of the account.\n",
            "example": "Acme Wind Turbines",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "parent_account_id": {
            "type": "string",
            "description": "If this is a subaccount, the id of its parent account.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource."
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "stripe_customer_id": {
            "type": "string",
            "description": "The stripe ID for billing purposes.\n",
            "example": "Stripe Customer ID"
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "The top-level organizing abstraction at Faraday. Data cannot be shared among accounts, \neven if they are controlled by the same entity.\n"
      },
      "AccountBilling": {
        "type": "object",
        "properties": {
          "invoices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Invoice"
            }
          },
          "payments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Payment"
            }
          },
          "usages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountUsage"
            }
          }
        },
        "additionalProperties": false
      },
      "AccountCommitment": {
        "type": "object",
        "properties": {
          "monthly_cost": {
            "type": "number",
            "description": "The amount billed to the account per month"
          },
          "renewal_date": {
            "type": "string",
            "description": "The date at which the account's contract with Faraday renews.",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "AccountMergePatch": {
        "type": "object",
        "properties": {
          "branding": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "suppress_from_reports": {
                    "type": "boolean",
                    "description": "Suppress all branding from all reports. If not specified, defaults to false.\n"
                  }
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whitelabel branding for the account.\n"
          },
          "name": {
            "type": "string",
            "description": "The name of the account.\n",
            "example": "Acme Wind Turbines",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Account` type.)\n\nThe top-level organizing abstraction at Faraday. Data cannot be shared among accounts, \neven if they are controlled by the same entity.\n"
      },
      "AccountPost": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "branding": {
            "type": "object",
            "properties": {
              "suppress_from_reports": {
                "type": "boolean",
                "description": "Suppress all branding from all reports. If not specified, defaults to false.\n"
              }
            },
            "description": "Whitelabel branding for the account.\n"
          },
          "name": {
            "type": "string",
            "description": "The name of the account.\n",
            "example": "Acme Wind Turbines",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Account` type.)\n\nThe top-level organizing abstraction at Faraday. Data cannot be shared among accounts, \neven if they are controlled by the same entity.\n"
      },
      "AccountPut": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "branding": {
            "type": "object",
            "properties": {
              "suppress_from_reports": {
                "type": "boolean",
                "description": "Suppress all branding from all reports. If not specified, defaults to false.\n"
              }
            },
            "description": "Whitelabel branding for the account.\n"
          },
          "name": {
            "type": "string",
            "description": "The name of the account.\n",
            "example": "Acme Wind Turbines",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Account` type.)\n\nThe top-level organizing abstraction at Faraday. Data cannot be shared among accounts, \neven if they are controlled by the same entity.\n"
      },
      "AccountUsage": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "The feature being used by the account",
            "example": "Number of known contacts (KCs) allowed"
          },
          "limit": {
            "type": "integer",
            "description": "How many instances of this feature that the account is allowed to use as part of its current plan.",
            "example": 10
          },
          "name": {
            "type": "string",
            "description": "A machine-friendly description of the feature being used by the account",
            "example": "cohort.max_count"
          },
          "usage": {
            "type": "integer",
            "description": "How many instances of this feature that the account uses",
            "example": 10
          }
        },
        "additionalProperties": false,
        "description": "Your account's usage of various Faraday features."
      },
      "AccountUsageBatchDeployments": {
        "type": "object",
        "properties": {
          "consumer_data": {
            "$ref": "#/components/schemas/AccountUsageTimePeriod",
            "description": "Number of distinct people for whom any amount of consumer data was deployed during each reporting period."
          },
          "identity_data": {
            "$ref": "#/components/schemas/AccountUsageTimePeriod",
            "description": "Number of distinct people for whom any amount of identity data was deployed during each reporting period."
          },
          "people_with_nearest_location": {
            "$ref": "#/components/schemas/AccountUsageTimePeriod",
            "description": "Number of distinct people deployed with a nearest atlas location during each reporting period. People whose payload carried no location are not counted."
          },
          "predictive_data": {
            "$ref": "#/components/schemas/AccountUsagePredictiveData",
            "description": "Number of distinct person/prediction combinations deployed during each reporting period. For example, deploying a persona and a lead score for a single person counts as 2."
          },
          "unknown_contact_addresses": {
            "$ref": "#/components/schemas/AccountUsageTimePeriod",
            "description": "Number of mailing addresses for unknown people (people not in any active dataset) deployed during each reporting period."
          },
          "unknown_contact_email_hashes": {
            "$ref": "#/components/schemas/AccountUsageTimePeriod",
            "description": "Number of email hashes for unknown people (people not in any active dataset) deployed during each reporting period."
          }
        },
        "additionalProperties": false,
        "description": "Usage metrics for batch context deployments."
      },
      "AccountUsageLookupApiRequests": {
        "type": "object",
        "properties": {
          "requests": {
            "$ref": "#/components/schemas/AccountUsageTimePeriod",
            "description": "Total Lookup API requests (calls), including unmatched."
          },
          "successful": {
            "$ref": "#/components/schemas/AccountUsageTimePeriod",
            "description": "Successful Lookup API requests where a match was made."
          },
          "successful_consumer_data": {
            "$ref": "#/components/schemas/AccountUsageTimePeriod",
            "description": "Successful Lookup API requests that returned consumer data."
          },
          "successful_identity_data": {
            "$ref": "#/components/schemas/AccountUsageTimePeriod",
            "description": "Successful Lookup API requests that returned identity data."
          },
          "successful_prediction_data": {
            "$ref": "#/components/schemas/AccountUsageTimePeriod",
            "description": "Successful Lookup API requests that returned prediction data."
          }
        },
        "additionalProperties": false,
        "description": "Usage metrics for Lookup API requests. Usage is not de-duplicated — if the same call is made twice, both count."
      },
      "AccountUsagePredictiveData": {
        "type": "object",
        "properties": {
          "last_12_months": {
            "$ref": "#/components/schemas/AccountUsageTimePeriodValue",
            "description": "Total predictive data count for the last 12 months."
          },
          "last_month": {
            "$ref": "#/components/schemas/AccountUsageTimePeriodValue",
            "description": "Total predictive data count for the last full month."
          },
          "limit": {
            "type": "integer",
            "description": "Customer's yearly contractual limit for predictive data. Omitted when no limit is on record. Populated for the `batch_deployments.predictive_data` sub-object. Populated only on /usage/all; omitted from per-account responses since we only emit the total contracted limit currently."
          },
          "month_to_date": {
            "$ref": "#/components/schemas/AccountUsageTimePeriodValue",
            "description": "Total predictive data count for the current month to date."
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountUsagePredictiveResource"
            },
            "description": "Per-resource breakdown of predictive data counts."
          }
        },
        "additionalProperties": false,
        "description": "Predictive data usage counts with per-resource breakdown. Counts distinct person/prediction combinations."
      },
      "AccountUsagePredictiveResource": {
        "type": "object",
        "required": [
          "resource_id",
          "resource_type"
        ],
        "properties": {
          "last_12_months": {
            "$ref": "#/components/schemas/AccountUsageTimePeriodValue",
            "description": "Value for the last 12 months."
          },
          "last_month": {
            "$ref": "#/components/schemas/AccountUsageTimePeriodValue",
            "description": "Value for the last full month."
          },
          "month_to_date": {
            "$ref": "#/components/schemas/AccountUsageTimePeriodValue",
            "description": "Value for the current month to date."
          },
          "resource_id": {
            "type": "string",
            "description": "The ID of the predictive resource (e.g. outcome).",
            "format": "uuid"
          },
          "resource_type": {
            "type": "string",
            "description": "The type of predictive resource."
          }
        },
        "additionalProperties": false,
        "description": "Per-resource breakdown of predictive data usage (e.g. per outcome or persona set)."
      },
      "AccountUsageSummary": {
        "type": "object",
        "required": [
          "id",
          "started_at",
          "finished_at"
        ],
        "properties": {
          "batch_deployments": {
            "$ref": "#/components/schemas/AccountUsageBatchDeployments"
          },
          "finished_at": {
            "type": "string",
            "description": "When this usage data recording completed. Not a usage period boundary — see inner period fields for specific time ranges.",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "description": "The ID of the usage event.",
            "format": "uuid"
          },
          "lookup_api_requests": {
            "$ref": "#/components/schemas/AccountUsageLookupApiRequests"
          },
          "started_at": {
            "type": "string",
            "description": "When this usage data was recorded. Not a usage period boundary — see inner period fields for specific time ranges.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A summary of the account's usage metrics across batch deployments and Lookup API requests."
      },
      "AccountUsageTimePeriod": {
        "type": "object",
        "properties": {
          "last_month": {
            "$ref": "#/components/schemas/AccountUsageTimePeriodValue",
            "description": "Usage during the full previous calendar month."
          },
          "limit": {
            "type": "integer",
            "description": "Customer's yearly contractual limit for this metric. Omitted when no limit is on record. Populated only on /usage/all; omitted from per-account responses since we only emit the total contracted limit currently."
          },
          "month_to_date": {
            "$ref": "#/components/schemas/AccountUsageTimePeriodValue",
            "description": "Usage during the current calendar month."
          },
          "term_period_to_last_month": {
            "$ref": "#/components/schemas/AccountUsageTimePeriodValue",
            "description": "Usage during the current year (12-month period) of the contract term."
          }
        },
        "additionalProperties": false,
        "description": "A set of usage values broken down by time period."
      },
      "AccountUsageTimePeriodValue": {
        "type": "object",
        "required": [
          "count"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "The usage count for this time period."
          }
        },
        "additionalProperties": false,
        "description": "A usage count for a time period."
      },
      "AddressInfo": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "example": "Anytown"
          },
          "house_number_and_street": {
            "type": "string",
            "example": "123 Main Street"
          },
          "postcode": {
            "type": "string",
            "example": "00001",
            "pattern": "\\d\\d\\d\\d\\d"
          },
          "state": {
            "type": "string",
            "example": "Farazona or FZ"
          },
          "unit_number": {
            "type": "string",
            "example": 1
          }
        },
        "additionalProperties": false,
        "description": "An address to be geocoded.\n"
      },
      "AllowedClusteringAttributes": {
        "type": "string",
        "description": "The set of Faraday-provided attributes allowed for clustering, on accounts with an identity graph feature store set.\n\nBy default, Faraday considers a fixed subset of these broadly effective attributes when discovering your personas; advanced users may override that recommendation with any members of this set.\n",
        "enum": [
          "fig/total_purchase_count_observed_quintile",
          "fig/total_amount_spent_on_purchases_quintile",
          "fig/age",
          "fig/collectibles_art_antiques_interest",
          "fig/general_book_reading_interest",
          "fig/charitable_donation_interest",
          "fig/nutrition_interest",
          "fig/household_education",
          "fig/automated_valuation_model",
          "fig/tax_assessed_property_value",
          "fig/gardening_interest",
          "fig/gender",
          "fig/fitness_interest",
          "fig/home_ownership_status",
          "fig/household_income",
          "fig/household_size",
          "fig/length_of_residence",
          "fig/interest_in_sports",
          "fig/property_living_area",
          "fig/marital_status",
          "fig/individual_marital_status",
          "fig/music_interest",
          "fig/net_worth",
          "fig/current_installment_loan_to_value",
          "fig/pet_interest",
          "fig/purchased_via_internet",
          "fig/shopping_styles",
          "fig/general_travel_interest",
          "fig/travel_interest",
          "fig/housing_density",
          "fig/credit_score_proxy",
          "fig/marketing_value_overall",
          "fig/home_year_built"
        ]
      },
      "AnalysisDimensionsAttribute": {
        "type": "object",
        "required": [
          "bins",
          "attribute_name"
        ],
        "properties": {
          "attribute_name": {
            "type": "string",
            "description": "The name of the attribute used to calculate this dimension.",
            "example": "fig/age",
            "pattern": "^fig/[a-z][a-z0-9_]+$"
          },
          "bins": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisDimensionsTraitBin"
            },
            "description": "The list of bins calculated for this persona set dimension."
          },
          "salient": {
            "type": "boolean",
            "description": "Whether the attribute distinguishes the persona from the rest of the persona set.",
            "default": false
          }
        }
      },
      "AnalysisDimensionsTrait": {
        "type": "object",
        "required": [
          "bins",
          "trait_name"
        ],
        "properties": {
          "bins": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisDimensionsTraitBin"
            },
            "description": "The list of bins calculated for this persona set dimension."
          },
          "salient": {
            "type": "boolean",
            "description": "Whether the trait distinguishes the persona from the rest of the persona set.",
            "default": false
          },
          "trait_name": {
            "type": "string",
            "description": "The machine name of the trait used to calculate this dimension."
          }
        }
      },
      "AnalysisDimensionsTraitBin": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/AnalysisDimensionsTraitBinBoolean"
          },
          {
            "$ref": "#/components/schemas/AnalysisDimensionsTraitBinDate"
          },
          {
            "$ref": "#/components/schemas/AnalysisDimensionsTraitBinNumber"
          },
          {
            "$ref": "#/components/schemas/AnalysisDimensionsTraitBinText"
          }
        ],
        "discriminator": {
          "propertyName": "data_type",
          "mapping": {
            "boolean": "#/components/schemas/AnalysisDimensionsTraitBinBoolean",
            "date": "#/components/schemas/AnalysisDimensionsTraitBinDate",
            "number": "#/components/schemas/AnalysisDimensionsTraitBinNumber",
            "text": "#/components/schemas/AnalysisDimensionsTraitBinText"
          }
        }
      },
      "AnalysisDimensionsTraitBinBoolean": {
        "type": "object",
        "required": [
          "data_type",
          "count",
          "percent"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "The numeric total of individuals found by this status."
          },
          "data_type": {
            "type": "string",
            "description": "Nominal dimensions are represented as a list of bins, where each bin is a boolean or no value (to represent null) and a resulting count that is the individuals found that match that value.",
            "const": "boolean"
          },
          "percent": {
            "type": "number",
            "description": "The count represented as a percentage based on the sum of counts."
          },
          "value": {
            "type": "boolean",
            "description": "The status used to count individuals by. No value means an invidiual with neither true or false value i.e. null."
          }
        }
      },
      "AnalysisDimensionsTraitBinDate": {
        "type": "object",
        "required": [
          "data_type",
          "count",
          "percent"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "The numeric total of individuals found within this bin range."
          },
          "data_type": {
            "type": "string",
            "description": "Ordinal dimensions are represented as a list of bins, where each bin is a range from X to Y and a resulting count of individuals that match within that range.",
            "const": "date"
          },
          "max": {
            "type": "string",
            "description": "The upper range of the bin for this dimension. Max can be null, meaning it is all values above the min range for this bin."
          },
          "min": {
            "type": "string",
            "description": "The lower range of the bin for this dimension. Min can be null, meaning it is all values below the max range for this bin."
          },
          "percent": {
            "type": "number",
            "description": "The count represented as a percentage based on the sum of counts."
          }
        }
      },
      "AnalysisDimensionsTraitBinNumber": {
        "type": "object",
        "required": [
          "data_type",
          "count",
          "percent"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "The numeric total of individuals found within this bin range."
          },
          "data_type": {
            "type": "string",
            "description": "Ordinal dimensions are represented as a list of bins, where each bin is a range from X to Y and a resulting count of individuals that match within that range.",
            "const": "number"
          },
          "max": {
            "type": "number",
            "description": "The upper range of the bin for this dimension. Max can be null, meaning it is all values above the min range for this bin."
          },
          "min": {
            "type": "number",
            "description": "The lower range of the bin for this dimension. Min can be null, meaning it is all values below the max range for this bin."
          },
          "percent": {
            "type": "number",
            "description": "The count represented as a percentage based on the sum of counts."
          }
        }
      },
      "AnalysisDimensionsTraitBinText": {
        "type": "object",
        "required": [
          "data_type",
          "value",
          "count",
          "percent"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "The numeric total of individuals found by this category."
          },
          "data_type": {
            "type": "string",
            "description": "Text dimensions are represented as a list of bins, where each bin is a single category (from a list of categories for the given trait) and a resulting count that is the individuals found that match the category.",
            "const": "text"
          },
          "percent": {
            "type": "number",
            "description": "The count represented as a percentage based on the sum of counts."
          },
          "value": {
            "type": "string",
            "description": "The category used to count individuals by."
          }
        }
      },
      "AnalysisFeatureDirectionality": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/AnalysisFeatureDirectionalityBoolean"
          },
          {
            "$ref": "#/components/schemas/AnalysisFeatureDirectionalityDate"
          },
          {
            "$ref": "#/components/schemas/AnalysisFeatureDirectionalityNumber"
          },
          {
            "$ref": "#/components/schemas/AnalysisFeatureDirectionalityText"
          }
        ],
        "discriminator": {
          "propertyName": "data_type",
          "mapping": {
            "boolean": "#/components/schemas/AnalysisFeatureDirectionalityBoolean",
            "date": "#/components/schemas/AnalysisFeatureDirectionalityDate",
            "number": "#/components/schemas/AnalysisFeatureDirectionalityNumber",
            "text": "#/components/schemas/AnalysisFeatureDirectionalityText"
          }
        }
      },
      "AnalysisFeatureDirectionalityBoolean": {
        "type": "object",
        "required": [
          "data_type",
          "value",
          "impact",
          "density"
        ],
        "properties": {
          "data_type": {
            "type": "string",
            "const": "boolean"
          },
          "density": {
            "type": "number",
            "description": "The percentage of data that falls in that particular bin.",
            "example": 0.75,
            "maximum": 1,
            "minimum": 0
          },
          "impact": {
            "type": "integer",
            "description": "The impact the feature has on the model."
          },
          "value": {
            "type": "boolean"
          }
        },
        "description": "Directionality of a boolean feature"
      },
      "AnalysisFeatureDirectionalityDate": {
        "type": "object",
        "required": [
          "data_type",
          "min",
          "impact",
          "density"
        ],
        "properties": {
          "data_type": {
            "type": "string",
            "const": "date"
          },
          "density": {
            "type": "number",
            "description": "The percentage of data that falls in that particular bin."
          },
          "impact": {
            "type": "integer",
            "description": "The impact the feature has on the model."
          },
          "max": {
            "type": "string",
            "format": "date"
          },
          "min": {
            "type": "string",
            "format": "date"
          }
        },
        "description": "Directionality of a date feature"
      },
      "AnalysisFeatureDirectionalityNumber": {
        "type": "object",
        "required": [
          "data_type",
          "min",
          "impact",
          "density"
        ],
        "properties": {
          "data_type": {
            "type": "string",
            "const": "number"
          },
          "density": {
            "type": "number",
            "description": "The percentage of data that falls in that particular bin."
          },
          "impact": {
            "type": "integer",
            "description": "The impact the feature has on the model."
          },
          "max": {
            "type": "number"
          },
          "min": {
            "type": "number"
          }
        },
        "description": "Directionality of a numeric feature"
      },
      "AnalysisFeatureDirectionalityText": {
        "type": "object",
        "required": [
          "data_type",
          "value",
          "impact",
          "density"
        ],
        "properties": {
          "data_type": {
            "type": "string",
            "const": "text"
          },
          "density": {
            "type": "number",
            "description": "The percentage of data that falls in that particular bin."
          },
          "impact": {
            "type": "integer",
            "description": "The impact the feature has on the model."
          },
          "value": {
            "type": "string"
          }
        },
        "description": "Directionality of a text feature"
      },
      "AnalysisRocCurvePoint": {
        "type": "object",
        "required": [
          "x",
          "y"
        ],
        "properties": {
          "x": {
            "type": "number",
            "description": "A given false positive rate.",
            "example": 0.5
          },
          "y": {
            "type": "number",
            "description": "The estimated true positive rate corresponding to `x`.",
            "example": 0.75
          }
        },
        "description": "Data to construct a ROC curve. Each point consists of a false positive rate `x`, an estimated true positive rate `y_mean` corresponding to `x`, and error bounds on the true positive rate `y_min` and `y_max`."
      },
      "ArchiveConfig": {
        "type": "object",
        "properties": {
          "cascade_to": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Only allow the following resources to be archived/unarchived.\nIf a downstream or upstream resource would be archived/unarchived, and is not in this list, throw an error.\nA migration never needs to be listed here, and listing one does nothing.\n"
          },
          "cascade_to_all": {
            "type": "boolean",
            "description": "When archiving a resource, if this is set to true, archive the resource and all its downstream resources. \nWhen unarchiving a resource, if this is set to true, unarchive the resource and all its upstream resources.\nIf false, and there are downstream/upstream resource that would be archived/unarchived, throw an error.\nA migration is left out of both cascades: it reports on the resources it pairs rather than building anything from them, so it is never archived or unarchived along with them.\n"
          }
        },
        "additionalProperties": false
      },
      "Atlas": {
        "type": "object",
        "required": [
          "created_at",
          "id",
          "name",
          "options",
          "output_to_locations",
          "resource_type",
          "status",
          "updated_at"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "connection_id": {
            "type": "string",
            "description": "The UUID of a connection - see <a href=\"https://faraday.ai/developers/reference/createconnection\">/connections</a> for more detail.\n\nOnly a subset of connection types can be configured for atlas ingestion - see the list available in `options`.\n\nIf this is null, the account's hosted CSV connection is used, and is provisioned if it does not exist yet.\n",
            "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
            "format": "uuid"
          },
          "counts": {
            "type": "object",
            "properties": {
              "empty_geometry": {
                "type": "integer",
                "description": "The number of rows whose geometry was read but encloses nowhere, such as an empty point. There is no place for such a row to put a location.\n",
                "example": 1
              },
              "locatable": {
                "type": "integer",
                "description": "The number of rows that produced a location. Rows that could not be located are not included in the atlas.\n",
                "example": 994
              },
              "oversized_geometry": {
                "type": "integer",
                "description": "The number of rows whose geometry describes too large an outline to hold on a location.\n",
                "example": 1
              },
              "rows": {
                "type": "integer",
                "description": "The total number of rows in the source data.",
                "example": 1000
              },
              "unreadable_geometry": {
                "type": "integer",
                "description": "The number of rows whose geometry could not be read. The value was missing, was not a geometry, or gave coordinates outside the range of longitude and latitude — including coordinates in a projection other than WGS 84.\n",
                "example": 4
              }
            },
            "description": "Location counts for this atlas. These will only be displayed if the atlas built successfully.\n"
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "detected_columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DatasetColumn"
            },
            "description": "An array of columns\n",
            "example": [
              {
                "data_type": "text",
                "is_nullable": false,
                "name": "store_id"
              },
              {
                "data_type": "long",
                "is_nullable": true,
                "name": "sq_ft"
              }
            ]
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "example": "4c6c0f1e-0a58-4f1a-9c8a-52a1a1a3f5b7",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "An identifying name for this atlas.\n",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "options": {
            "$ref": "#/components/schemas/AtlasOptions"
          },
          "output_to_locations": {
            "$ref": "#/components/schemas/OutputToLocations",
            "description": "How to build a location out of each row of the source data. Each member below names a column in the source data.\n\nEach location is placed by exactly one of three groups of columns: a geometry column (`geometry`), a coordinate pair (`latitude` and `longitude`), or address columns (`house_number_and_street`, `city`, `state` and `postcode`). Naming columns from more than one group is rejected. Naming none is allowed: an atlas can be created before the columns of its source data are known, and configured once they are. Addresses are geocoded to a point during ingestion.\n"
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource.",
            "example": "atlases"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A collection of geographic locations, such as stores, branches, or service areas.\n\nAn atlas imports location data from a connection the same way a dataset imports tabular data. Its locations can be used to filter cohorts spatially, to include the nearest location in a scope payload, and to scope a market opportunity analysis.\n"
      },
      "AtlasMergePatch": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "An identifying name for this atlas.\n",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "options": {
            "$ref": "#/components/schemas/AtlasOptionsMergePatch"
          },
          "output_to_locations": {
            "$ref": "#/components/schemas/OutputToLocationsMergePatch",
            "description": "How to build a location out of each row of the source data. Each member below names a column in the source data.\n\nEach location is placed by exactly one of three groups of columns: a geometry column (`geometry`), a coordinate pair (`latitude` and `longitude`), or address columns (`house_number_and_street`, `city`, `state` and `postcode`). Naming columns from more than one group is rejected. Naming none is allowed: an atlas can be created before the columns of its source data are known, and configured once they are. Addresses are geocoded to a point during ingestion.\n"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Atlas` type.)\n\nA collection of geographic locations, such as stores, branches, or service areas.\n\nAn atlas imports location data from a connection the same way a dataset imports tabular data. Its locations can be used to filter cohorts spatially, to include the nearest location in a scope payload, and to scope a market opportunity analysis.\n"
      },
      "AtlasOptions": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/DatasetOptionsAthena"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraMysql"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraPostgres"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsMysql"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsPostgres"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsSqlServer"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRedshiftServerless"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAzureSqlServer"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsBigQuery"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsClickhouse"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricks"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksDeltaSharing"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlMysql"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgres"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServer"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpGcsCsv"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsHostedCsv"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMotherduck"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMysql"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsPostgres"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsRedshift"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsS3Csv"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSftp"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSnowflake"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSqlServer"
          }
        ],
        "description": "Atlas connection options",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/DatasetOptionsAthena",
            "aws_aurora_mysql": "#/components/schemas/DatasetOptionsAwsAuroraMysql",
            "aws_aurora_postgres": "#/components/schemas/DatasetOptionsAwsAuroraPostgres",
            "aws_rds_mysql": "#/components/schemas/DatasetOptionsAwsRdsMysql",
            "aws_rds_postgres": "#/components/schemas/DatasetOptionsAwsRdsPostgres",
            "aws_rds_sql_server": "#/components/schemas/DatasetOptionsAwsRdsSqlServer",
            "aws_redshift_serverless": "#/components/schemas/DatasetOptionsAwsRedshiftServerless",
            "azure_sql_server": "#/components/schemas/DatasetOptionsAzureSqlServer",
            "bigquery": "#/components/schemas/DatasetOptionsBigQuery",
            "clickhouse": "#/components/schemas/DatasetOptionsClickhouse",
            "databricks": "#/components/schemas/DatasetOptionsDatabricks",
            "databricks_delta_sharing": "#/components/schemas/DatasetOptionsDatabricksDeltaSharing",
            "gcp_cloud_sql_mysql": "#/components/schemas/DatasetOptionsGcpCloudSqlMysql",
            "gcp_cloud_sql_postgres": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgres",
            "gcp_cloud_sql_sql_server": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServer",
            "gcp_gcs_csv": "#/components/schemas/DatasetOptionsGcpGcsCsv",
            "hosted_csv": "#/components/schemas/DatasetOptionsHostedCsv",
            "motherduck": "#/components/schemas/DatasetOptionsMotherduck",
            "mysql": "#/components/schemas/DatasetOptionsMysql",
            "postgres": "#/components/schemas/DatasetOptionsPostgres",
            "redshift": "#/components/schemas/DatasetOptionsRedshift",
            "s3_csv": "#/components/schemas/DatasetOptionsS3Csv",
            "sftp": "#/components/schemas/DatasetOptionsSftp",
            "snowflake": "#/components/schemas/DatasetOptionsSnowflake",
            "sql_server": "#/components/schemas/DatasetOptionsSqlServer"
          }
        }
      },
      "AtlasOptionsMergePatch": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/DatasetOptionsAthenaMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRedshiftServerlessMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAzureSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsBigQueryMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsClickhouseMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksDeltaSharingMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpGcsCsvMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsHostedCsvMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMotherduckMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsRedshiftMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsS3CsvMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSftpMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSnowflakeMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSqlServerMergePatch"
          }
        ],
        "description": "Atlas connection options",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/DatasetOptionsAthenaMergePatch",
            "aws_aurora_mysql": "#/components/schemas/DatasetOptionsAwsAuroraMysqlMergePatch",
            "aws_aurora_postgres": "#/components/schemas/DatasetOptionsAwsAuroraPostgresMergePatch",
            "aws_rds_mysql": "#/components/schemas/DatasetOptionsAwsRdsMysqlMergePatch",
            "aws_rds_postgres": "#/components/schemas/DatasetOptionsAwsRdsPostgresMergePatch",
            "aws_rds_sql_server": "#/components/schemas/DatasetOptionsAwsRdsSqlServerMergePatch",
            "aws_redshift_serverless": "#/components/schemas/DatasetOptionsAwsRedshiftServerlessMergePatch",
            "azure_sql_server": "#/components/schemas/DatasetOptionsAzureSqlServerMergePatch",
            "bigquery": "#/components/schemas/DatasetOptionsBigQueryMergePatch",
            "clickhouse": "#/components/schemas/DatasetOptionsClickhouseMergePatch",
            "databricks": "#/components/schemas/DatasetOptionsDatabricksMergePatch",
            "databricks_delta_sharing": "#/components/schemas/DatasetOptionsDatabricksDeltaSharingMergePatch",
            "gcp_cloud_sql_mysql": "#/components/schemas/DatasetOptionsGcpCloudSqlMysqlMergePatch",
            "gcp_cloud_sql_postgres": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgresMergePatch",
            "gcp_cloud_sql_sql_server": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServerMergePatch",
            "gcp_gcs_csv": "#/components/schemas/DatasetOptionsGcpGcsCsvMergePatch",
            "hosted_csv": "#/components/schemas/DatasetOptionsHostedCsvMergePatch",
            "motherduck": "#/components/schemas/DatasetOptionsMotherduckMergePatch",
            "mysql": "#/components/schemas/DatasetOptionsMysqlMergePatch",
            "postgres": "#/components/schemas/DatasetOptionsPostgresMergePatch",
            "redshift": "#/components/schemas/DatasetOptionsRedshiftMergePatch",
            "s3_csv": "#/components/schemas/DatasetOptionsS3CsvMergePatch",
            "sftp": "#/components/schemas/DatasetOptionsSftpMergePatch",
            "snowflake": "#/components/schemas/DatasetOptionsSnowflakeMergePatch",
            "sql_server": "#/components/schemas/DatasetOptionsSqlServerMergePatch"
          }
        }
      },
      "AtlasOptionsPost": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/DatasetOptionsAthenaPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraMysqlPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraPostgresPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsMysqlPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsPostgresPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRedshiftServerlessPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAzureSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsBigQueryPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsClickhousePost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksDeltaSharingPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlMysqlPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgresPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpGcsCsvPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsHostedCsvPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMotherduckPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMysqlPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsPostgresPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsRedshiftPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsS3CsvPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSftpPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSnowflakePost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSqlServerPost"
          }
        ],
        "description": "Atlas connection options",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/DatasetOptionsAthenaPost",
            "aws_aurora_mysql": "#/components/schemas/DatasetOptionsAwsAuroraMysqlPost",
            "aws_aurora_postgres": "#/components/schemas/DatasetOptionsAwsAuroraPostgresPost",
            "aws_rds_mysql": "#/components/schemas/DatasetOptionsAwsRdsMysqlPost",
            "aws_rds_postgres": "#/components/schemas/DatasetOptionsAwsRdsPostgresPost",
            "aws_rds_sql_server": "#/components/schemas/DatasetOptionsAwsRdsSqlServerPost",
            "aws_redshift_serverless": "#/components/schemas/DatasetOptionsAwsRedshiftServerlessPost",
            "azure_sql_server": "#/components/schemas/DatasetOptionsAzureSqlServerPost",
            "bigquery": "#/components/schemas/DatasetOptionsBigQueryPost",
            "clickhouse": "#/components/schemas/DatasetOptionsClickhousePost",
            "databricks": "#/components/schemas/DatasetOptionsDatabricksPost",
            "databricks_delta_sharing": "#/components/schemas/DatasetOptionsDatabricksDeltaSharingPost",
            "gcp_cloud_sql_mysql": "#/components/schemas/DatasetOptionsGcpCloudSqlMysqlPost",
            "gcp_cloud_sql_postgres": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgresPost",
            "gcp_cloud_sql_sql_server": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServerPost",
            "gcp_gcs_csv": "#/components/schemas/DatasetOptionsGcpGcsCsvPost",
            "hosted_csv": "#/components/schemas/DatasetOptionsHostedCsvPost",
            "motherduck": "#/components/schemas/DatasetOptionsMotherduckPost",
            "mysql": "#/components/schemas/DatasetOptionsMysqlPost",
            "postgres": "#/components/schemas/DatasetOptionsPostgresPost",
            "redshift": "#/components/schemas/DatasetOptionsRedshiftPost",
            "s3_csv": "#/components/schemas/DatasetOptionsS3CsvPost",
            "sftp": "#/components/schemas/DatasetOptionsSftpPost",
            "snowflake": "#/components/schemas/DatasetOptionsSnowflakePost",
            "sql_server": "#/components/schemas/DatasetOptionsSqlServerPost"
          }
        }
      },
      "AtlasOptionsPut": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/DatasetOptionsAthenaPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraMysqlPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraPostgresPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsMysqlPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsPostgresPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRedshiftServerlessPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAzureSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsBigQueryPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsClickhousePut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksDeltaSharingPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlMysqlPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgresPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpGcsCsvPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsHostedCsvPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMotherduckPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMysqlPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsPostgresPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsRedshiftPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsS3CsvPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSftpPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSnowflakePut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSqlServerPut"
          }
        ],
        "description": "Atlas connection options",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/DatasetOptionsAthenaPut",
            "aws_aurora_mysql": "#/components/schemas/DatasetOptionsAwsAuroraMysqlPut",
            "aws_aurora_postgres": "#/components/schemas/DatasetOptionsAwsAuroraPostgresPut",
            "aws_rds_mysql": "#/components/schemas/DatasetOptionsAwsRdsMysqlPut",
            "aws_rds_postgres": "#/components/schemas/DatasetOptionsAwsRdsPostgresPut",
            "aws_rds_sql_server": "#/components/schemas/DatasetOptionsAwsRdsSqlServerPut",
            "aws_redshift_serverless": "#/components/schemas/DatasetOptionsAwsRedshiftServerlessPut",
            "azure_sql_server": "#/components/schemas/DatasetOptionsAzureSqlServerPut",
            "bigquery": "#/components/schemas/DatasetOptionsBigQueryPut",
            "clickhouse": "#/components/schemas/DatasetOptionsClickhousePut",
            "databricks": "#/components/schemas/DatasetOptionsDatabricksPut",
            "databricks_delta_sharing": "#/components/schemas/DatasetOptionsDatabricksDeltaSharingPut",
            "gcp_cloud_sql_mysql": "#/components/schemas/DatasetOptionsGcpCloudSqlMysqlPut",
            "gcp_cloud_sql_postgres": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgresPut",
            "gcp_cloud_sql_sql_server": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServerPut",
            "gcp_gcs_csv": "#/components/schemas/DatasetOptionsGcpGcsCsvPut",
            "hosted_csv": "#/components/schemas/DatasetOptionsHostedCsvPut",
            "motherduck": "#/components/schemas/DatasetOptionsMotherduckPut",
            "mysql": "#/components/schemas/DatasetOptionsMysqlPut",
            "postgres": "#/components/schemas/DatasetOptionsPostgresPut",
            "redshift": "#/components/schemas/DatasetOptionsRedshiftPut",
            "s3_csv": "#/components/schemas/DatasetOptionsS3CsvPut",
            "sftp": "#/components/schemas/DatasetOptionsSftpPut",
            "snowflake": "#/components/schemas/DatasetOptionsSnowflakePut",
            "sql_server": "#/components/schemas/DatasetOptionsSqlServerPut"
          }
        }
      },
      "AtlasPost": {
        "type": "object",
        "required": [
          "name",
          "options",
          "output_to_locations"
        ],
        "properties": {
          "connection_id": {
            "type": "string",
            "description": "The UUID of a connection - see <a href=\"https://faraday.ai/developers/reference/createconnection\">/connections</a> for more detail.\n\nOnly a subset of connection types can be configured for atlas ingestion - see the list available in `options`.\n\nIf this is null, the account's hosted CSV connection is used, and is provisioned if it does not exist yet.\n",
            "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "An identifying name for this atlas.\n",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "options": {
            "$ref": "#/components/schemas/AtlasOptionsPost"
          },
          "output_to_locations": {
            "$ref": "#/components/schemas/OutputToLocationsPost",
            "description": "How to build a location out of each row of the source data. Each member below names a column in the source data.\n\nEach location is placed by exactly one of three groups of columns: a geometry column (`geometry`), a coordinate pair (`latitude` and `longitude`), or address columns (`house_number_and_street`, `city`, `state` and `postcode`). Naming columns from more than one group is rejected. Naming none is allowed: an atlas can be created before the columns of its source data are known, and configured once they are. Addresses are geocoded to a point during ingestion.\n"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Atlas` type.)\n\nA collection of geographic locations, such as stores, branches, or service areas.\n\nAn atlas imports location data from a connection the same way a dataset imports tabular data. Its locations can be used to filter cohorts spatially, to include the nearest location in a scope payload, and to scope a market opportunity analysis.\n"
      },
      "AtlasPut": {
        "type": "object",
        "required": [
          "name",
          "options",
          "output_to_locations"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "An identifying name for this atlas.\n",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "options": {
            "$ref": "#/components/schemas/AtlasOptionsPut"
          },
          "output_to_locations": {
            "$ref": "#/components/schemas/OutputToLocationsPut",
            "description": "How to build a location out of each row of the source data. Each member below names a column in the source data.\n\nEach location is placed by exactly one of three groups of columns: a geometry column (`geometry`), a coordinate pair (`latitude` and `longitude`), or address columns (`house_number_and_street`, `city`, `state` and `postcode`). Naming columns from more than one group is rejected. Naming none is allowed: an atlas can be created before the columns of its source data are known, and configured once they are. Addresses are geocoded to a point during ingestion.\n"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Atlas` type.)\n\nA collection of geographic locations, such as stores, branches, or service areas.\n\nAn atlas imports location data from a connection the same way a dataset imports tabular data. Its locations can be used to filter cohorts spatially, to include the nearest location in a scope payload, and to scope a market opportunity analysis.\n"
      },
      "Attribute": {
        "type": "object",
        "required": [
          "category",
          "created_at",
          "description",
          "feature_store_id",
          "id",
          "literate",
          "name",
          "resource_type",
          "status",
          "stream_name",
          "tier",
          "updated_at",
          "value_property_name"
        ],
        "properties": {
          "aggregation": {
            "$ref": "#/components/schemas/AttributeAggregation",
            "description": "Configuration for how to aggregate multiple assertions for this attribute."
          },
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "breaks": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "For continuous data types, list of reasonable cutoff values.",
            "example": [
              1,
              5,
              10,
              15,
              20,
              25,
              30,
              35
            ]
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "For categorical data types, the list of distinct category values observed in the stream.",
            "example": [
              "a",
              "b",
              "c"
            ]
          },
          "category": {
            "$ref": "#/components/schemas/StreamPropertyCategory",
            "description": "A category describing the type of attribute."
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "default_selector_by_purpose": {
            "$ref": "#/components/schemas/AttributeSelectorsByPurpose",
            "description": "Default selector hints organized by purpose (modeling, inference, append). These provide guidance to consumers but are not automatically applied by the attribute system.\n"
          },
          "deprecated": {
            "type": "boolean",
            "description": "Whether this attribute is deprecated.",
            "default": false
          },
          "deprecation_notes": {
            "type": "string",
            "description": "Notes about the deprecation of the attribute. Should be present if and only if deprecated is true."
          },
          "description": {
            "type": "string",
            "description": "A description of the attribute.",
            "example": "The person's age in years"
          },
          "directionality_interpretation": {
            "type": "string",
            "description": "If applicable, describes the meaning of any directionality in the values.\n",
            "example": "Higher numbers indicate older individuals"
          },
          "feature_store_id": {
            "type": "string",
            "description": "The UUID of the feature store this attribute belongs to.",
            "example": "9c7b2a8f-4e1d-4d3c-8b9a-1f2e3d4c5b6a",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "format": "uuid"
          },
          "interpretation_map": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "For enumerable attributes, a mapping from values to their interpretations. The key type matches the attribute's data type, and the value is always a string interpretation.\n"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "literate": {
            "type": "string",
            "description": "A human-readable name for the attribute.",
            "example": "Age"
          },
          "name": {
            "type": "string",
            "description": "The slug name of the attribute. Must start with a letter and contain only lowercase letters, numbers, and underscores.\n",
            "example": "age",
            "maxLength": 64,
            "pattern": "^[a-z][a-z0-9_]*$"
          },
          "null_value_interpretation": {
            "type": "string",
            "description": "If a unary null replacement isn't applicable or viable, this describes how NULLs should be interpreted when encountered.\n",
            "example": "Unknown"
          },
          "null_value_replacement": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "description": "If set, null values should be coalesced with this replacement to avoid any NULLs.\n",
            "example": false
          },
          "permissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttributePermission"
            },
            "description": "The set of permissions granted for this attribute for the requesting account. Read-only; managed via the admin interface.\n"
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource."
          },
          "sources": {
            "$ref": "#/components/schemas/AttributeSources",
            "description": "The sources this attribute draws from, nested by authority, then source column, then the inclusive\neffective-from date (YYYY-MM-DD). Each entry describes how an authority's column, over a date range,\nprovides values for this attribute.\n"
          },
          "statistical_type": {
            "$ref": "#/components/schemas/TraitStatisticalType",
            "description": "A string describing the nature of the data represented by the attribute.\n\ncategorical_nominal: one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: numeric values with a natural ordering. Example: \"lifetime_value\".\n\nDeprecated values (still accepted): categorical, multicategorical, ordinal, nominal. See the TraitStatisticalType schema for type compatibility constraints and deprecation equivalences.\n"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "stream_name": {
            "type": "string",
            "description": "The name of the stream containing the assertions for this attribute.",
            "example": "age_assertions",
            "maxLength": 64
          },
          "tier": {
            "$ref": "#/components/schemas/StreamPropertyTier",
            "description": "A billing tier for the attribute."
          },
          "type": {
            "$ref": "#/components/schemas/PrimitiveDataType",
            "description": "The data type of the attribute's value."
          },
          "unit": {
            "type": "string",
            "description": "For numeric types, in what units the data is stored.",
            "example": "dollars"
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          },
          "value_property_name": {
            "type": "string",
            "description": "The name of the property in the stream that contains the assertion value. This indicates which property is special and represents the attribute's value.\n",
            "example": "value"
          }
        },
        "additionalProperties": false,
        "description": "An attribute wraps a stream of assertions with configuration for aggregation and selection. \nAttributes specify how to handle multiple qualifying assertions and provide hints for consumers.\n"
      },
      "AttributeAggregation": {
        "type": "object",
        "required": [
          "method"
        ],
        "properties": {
          "method": {
            "$ref": "#/components/schemas/AttributeAggregationMethod",
            "description": "The aggregation method to use."
          },
          "sort": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttributeAggregationSort"
            },
            "description": "Sort configuration used by the coalesce method. Applied in order - first by the first sort, then by the second, etc. Only used when method is 'coalesce'.\n"
          }
        },
        "additionalProperties": false,
        "description": "Configuration for how to aggregate multiple qualifying assertions under a single attribute."
      },
      "AttributeAggregationMethod": {
        "type": "string",
        "description": "Method for aggregating multiple assertions for an attribute.",
        "enum": [
          "coalesce",
          "count_not_null",
          "max",
          "mean",
          "median",
          "min",
          "mode",
          "or",
          "sum"
        ]
      },
      "AttributeAggregationSort": {
        "type": "object",
        "required": [
          "property_name"
        ],
        "properties": {
          "direction": {
            "$ref": "#/components/schemas/AttributeSortDirection",
            "description": "Sort direction (ascending or descending)."
          },
          "priority": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "number"
                },
                {
                  "type": "string"
                }
              ]
            },
            "description": "Explicit priority order for categorical values.",
            "example": [
              "epsilon",
              "verisk"
            ]
          },
          "property_name": {
            "type": "string",
            "description": "The property name to sort by.",
            "example": "authority"
          }
        },
        "additionalProperties": false,
        "description": "Sort configuration for attribute aggregation. Used by the coalesce method to determine which assertion to use when multiple are present.\n"
      },
      "AttributeMergePatch": {
        "type": "object",
        "properties": {
          "aggregation": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AttributeAggregation",
                "description": "Configuration for how to aggregate multiple assertions for this attribute."
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "category": {
            "$ref": "#/components/schemas/StreamPropertyCategory",
            "description": "A category describing the type of attribute."
          },
          "default_selector_by_purpose": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AttributeSelectorsByPurpose",
                "description": "Default selector hints organized by purpose (modeling, inference, append). These provide guidance to consumers but are not automatically applied by the attribute system.\n"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "deprecated": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "default": false
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether this attribute is deprecated."
          },
          "deprecation_notes": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Notes about the deprecation of the attribute. Should be present if and only if deprecated is true."
          },
          "description": {
            "type": "string",
            "description": "A description of the attribute.",
            "example": "The person's age in years"
          },
          "directionality_interpretation": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "Higher numbers indicate older individuals"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "If applicable, describes the meaning of any directionality in the values.\n"
          },
          "feature_store_id": {
            "type": "string",
            "description": "The UUID of the feature store this attribute belongs to.",
            "example": "9c7b2a8f-4e1d-4d3c-8b9a-1f2e3d4c5b6a",
            "format": "uuid"
          },
          "interpretation_map": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "For enumerable attributes, a mapping from values to their interpretations. The key type matches the attribute's data type, and the value is always a string interpretation.\n"
          },
          "literate": {
            "type": "string",
            "description": "A human-readable name for the attribute.",
            "example": "Age"
          },
          "name": {
            "type": "string",
            "description": "The slug name of the attribute. Must start with a letter and contain only lowercase letters, numbers, and underscores.\n",
            "example": "age",
            "maxLength": 64,
            "pattern": "^[a-z][a-z0-9_]*$"
          },
          "null_value_interpretation": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "Unknown"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "If a unary null replacement isn't applicable or viable, this describes how NULLs should be interpreted when encountered.\n"
          },
          "null_value_replacement": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "If set, null values should be coalesced with this replacement to avoid any NULLs.\n",
            "example": false
          },
          "sources": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AttributeSources",
                "description": "The sources this attribute draws from, nested by authority, then source column, then the inclusive\neffective-from date (YYYY-MM-DD). Each entry describes how an authority's column, over a date range,\nprovides values for this attribute.\n"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "statistical_type": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TraitStatisticalType",
                "description": "A string describing the nature of the data represented by the attribute.\n\ncategorical_nominal: one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: numeric values with a natural ordering. Example: \"lifetime_value\".\n\nDeprecated values (still accepted): categorical, multicategorical, ordinal, nominal. See the TraitStatisticalType schema for type compatibility constraints and deprecation equivalences.\n"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "stream_name": {
            "type": "string",
            "description": "The name of the stream containing the assertions for this attribute.",
            "example": "age_assertions",
            "maxLength": 64
          },
          "tier": {
            "$ref": "#/components/schemas/StreamPropertyTier",
            "description": "A billing tier for the attribute."
          },
          "type": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PrimitiveDataType",
                "description": "The data type of the attribute's value."
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "unit": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "dollars"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "For numeric types, in what units the data is stored."
          },
          "value_property_name": {
            "type": "string",
            "description": "The name of the property in the stream that contains the assertion value. This indicates which property is special and represents the attribute's value.\n",
            "example": "value"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Attribute` type.)\n\nAn attribute wraps a stream of assertions with configuration for aggregation and selection. \nAttributes specify how to handle multiple qualifying assertions and provide hints for consumers.\n"
      },
      "AttributePermission": {
        "type": "string",
        "description": "A permission granted for an attribute, indicating how the attribute may be used.",
        "enum": [
          "add_to_scope_payload"
        ]
      },
      "AttributePost": {
        "type": "object",
        "required": [
          "category",
          "description",
          "feature_store_id",
          "literate",
          "name",
          "stream_name",
          "tier",
          "value_property_name"
        ],
        "properties": {
          "aggregation": {
            "$ref": "#/components/schemas/AttributeAggregation",
            "description": "Configuration for how to aggregate multiple assertions for this attribute."
          },
          "category": {
            "$ref": "#/components/schemas/StreamPropertyCategory",
            "description": "A category describing the type of attribute."
          },
          "default_selector_by_purpose": {
            "$ref": "#/components/schemas/AttributeSelectorsByPurpose",
            "description": "Default selector hints organized by purpose (modeling, inference, append). These provide guidance to consumers but are not automatically applied by the attribute system.\n"
          },
          "deprecated": {
            "type": "boolean",
            "description": "Whether this attribute is deprecated.",
            "default": false
          },
          "deprecation_notes": {
            "type": "string",
            "description": "Notes about the deprecation of the attribute. Should be present if and only if deprecated is true."
          },
          "description": {
            "type": "string",
            "description": "A description of the attribute.",
            "example": "The person's age in years"
          },
          "directionality_interpretation": {
            "type": "string",
            "description": "If applicable, describes the meaning of any directionality in the values.\n",
            "example": "Higher numbers indicate older individuals"
          },
          "feature_store_id": {
            "type": "string",
            "description": "The UUID of the feature store this attribute belongs to.",
            "example": "9c7b2a8f-4e1d-4d3c-8b9a-1f2e3d4c5b6a",
            "format": "uuid"
          },
          "interpretation_map": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "For enumerable attributes, a mapping from values to their interpretations. The key type matches the attribute's data type, and the value is always a string interpretation.\n"
          },
          "literate": {
            "type": "string",
            "description": "A human-readable name for the attribute.",
            "example": "Age"
          },
          "name": {
            "type": "string",
            "description": "The slug name of the attribute. Must start with a letter and contain only lowercase letters, numbers, and underscores.\n",
            "example": "age",
            "maxLength": 64,
            "pattern": "^[a-z][a-z0-9_]*$"
          },
          "null_value_interpretation": {
            "type": "string",
            "description": "If a unary null replacement isn't applicable or viable, this describes how NULLs should be interpreted when encountered.\n",
            "example": "Unknown"
          },
          "null_value_replacement": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "description": "If set, null values should be coalesced with this replacement to avoid any NULLs.\n",
            "example": false
          },
          "sources": {
            "$ref": "#/components/schemas/AttributeSources",
            "description": "The sources this attribute draws from, nested by authority, then source column, then the inclusive\neffective-from date (YYYY-MM-DD). Each entry describes how an authority's column, over a date range,\nprovides values for this attribute.\n"
          },
          "statistical_type": {
            "$ref": "#/components/schemas/TraitStatisticalType",
            "description": "A string describing the nature of the data represented by the attribute.\n\ncategorical_nominal: one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: numeric values with a natural ordering. Example: \"lifetime_value\".\n\nDeprecated values (still accepted): categorical, multicategorical, ordinal, nominal. See the TraitStatisticalType schema for type compatibility constraints and deprecation equivalences.\n"
          },
          "stream_name": {
            "type": "string",
            "description": "The name of the stream containing the assertions for this attribute.",
            "example": "age_assertions",
            "maxLength": 64
          },
          "tier": {
            "$ref": "#/components/schemas/StreamPropertyTier",
            "description": "A billing tier for the attribute."
          },
          "type": {
            "$ref": "#/components/schemas/PrimitiveDataType",
            "description": "The data type of the attribute's value."
          },
          "unit": {
            "type": "string",
            "description": "For numeric types, in what units the data is stored.",
            "example": "dollars"
          },
          "value_property_name": {
            "type": "string",
            "description": "The name of the property in the stream that contains the assertion value. This indicates which property is special and represents the attribute's value.\n",
            "example": "value"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Attribute` type.)\n\nAn attribute wraps a stream of assertions with configuration for aggregation and selection. \nAttributes specify how to handle multiple qualifying assertions and provide hints for consumers.\n"
      },
      "AttributePrecision": {
        "type": "string",
        "description": "The level at which a source asserts values for an attribute: an individual (person), a physical\naddress, or a postcode.\n",
        "enum": [
          "person",
          "address",
          "postcode"
        ]
      },
      "AttributePut": {
        "type": "object",
        "required": [
          "category",
          "description",
          "feature_store_id",
          "literate",
          "name",
          "stream_name",
          "tier",
          "value_property_name"
        ],
        "properties": {
          "aggregation": {
            "$ref": "#/components/schemas/AttributeAggregation",
            "description": "Configuration for how to aggregate multiple assertions for this attribute."
          },
          "category": {
            "$ref": "#/components/schemas/StreamPropertyCategory",
            "description": "A category describing the type of attribute."
          },
          "default_selector_by_purpose": {
            "$ref": "#/components/schemas/AttributeSelectorsByPurpose",
            "description": "Default selector hints organized by purpose (modeling, inference, append). These provide guidance to consumers but are not automatically applied by the attribute system.\n"
          },
          "deprecated": {
            "type": "boolean",
            "description": "Whether this attribute is deprecated.",
            "default": false
          },
          "deprecation_notes": {
            "type": "string",
            "description": "Notes about the deprecation of the attribute. Should be present if and only if deprecated is true."
          },
          "description": {
            "type": "string",
            "description": "A description of the attribute.",
            "example": "The person's age in years"
          },
          "directionality_interpretation": {
            "type": "string",
            "description": "If applicable, describes the meaning of any directionality in the values.\n",
            "example": "Higher numbers indicate older individuals"
          },
          "feature_store_id": {
            "type": "string",
            "description": "The UUID of the feature store this attribute belongs to.",
            "example": "9c7b2a8f-4e1d-4d3c-8b9a-1f2e3d4c5b6a",
            "format": "uuid"
          },
          "interpretation_map": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "For enumerable attributes, a mapping from values to their interpretations. The key type matches the attribute's data type, and the value is always a string interpretation.\n"
          },
          "literate": {
            "type": "string",
            "description": "A human-readable name for the attribute.",
            "example": "Age"
          },
          "name": {
            "type": "string",
            "description": "The slug name of the attribute. Must start with a letter and contain only lowercase letters, numbers, and underscores.\n",
            "example": "age",
            "maxLength": 64,
            "pattern": "^[a-z][a-z0-9_]*$"
          },
          "null_value_interpretation": {
            "type": "string",
            "description": "If a unary null replacement isn't applicable or viable, this describes how NULLs should be interpreted when encountered.\n",
            "example": "Unknown"
          },
          "null_value_replacement": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "string"
              }
            ],
            "description": "If set, null values should be coalesced with this replacement to avoid any NULLs.\n",
            "example": false
          },
          "sources": {
            "$ref": "#/components/schemas/AttributeSources",
            "description": "The sources this attribute draws from, nested by authority, then source column, then the inclusive\neffective-from date (YYYY-MM-DD). Each entry describes how an authority's column, over a date range,\nprovides values for this attribute.\n"
          },
          "statistical_type": {
            "$ref": "#/components/schemas/TraitStatisticalType",
            "description": "A string describing the nature of the data represented by the attribute.\n\ncategorical_nominal: one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: numeric values with a natural ordering. Example: \"lifetime_value\".\n\nDeprecated values (still accepted): categorical, multicategorical, ordinal, nominal. See the TraitStatisticalType schema for type compatibility constraints and deprecation equivalences.\n"
          },
          "stream_name": {
            "type": "string",
            "description": "The name of the stream containing the assertions for this attribute.",
            "example": "age_assertions",
            "maxLength": 64
          },
          "tier": {
            "$ref": "#/components/schemas/StreamPropertyTier",
            "description": "A billing tier for the attribute."
          },
          "type": {
            "$ref": "#/components/schemas/PrimitiveDataType",
            "description": "The data type of the attribute's value."
          },
          "unit": {
            "type": "string",
            "description": "For numeric types, in what units the data is stored.",
            "example": "dollars"
          },
          "value_property_name": {
            "type": "string",
            "description": "The name of the property in the stream that contains the assertion value. This indicates which property is special and represents the attribute's value.\n",
            "example": "value"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Attribute` type.)\n\nAn attribute wraps a stream of assertions with configuration for aggregation and selection. \nAttributes specify how to handle multiple qualifying assertions and provide hints for consumers.\n"
      },
      "AttributeSelector": {
        "type": "object",
        "properties": {
          "authority": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of allowed authorities.",
            "example": [
              "epsilon",
              "verisk"
            ]
          },
          "derivations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of allowed derivation methods.",
            "example": [
              "modeled",
              "collected"
            ]
          },
          "precision": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of allowed precision levels.",
            "example": [
              "person"
            ]
          },
          "quality": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of allowed quality levels.",
            "example": [
              "1"
            ]
          }
        },
        "description": "Selector configuration for filtering assertions. The attribute system doesn't automatically apply these hints, but consumers can retrieve them from the attribute.\n"
      },
      "AttributeSelectorsByPurpose": {
        "type": "object",
        "properties": {
          "append": {
            "$ref": "#/components/schemas/AttributeSelector",
            "description": "Selector hints for append purposes."
          },
          "inference": {
            "$ref": "#/components/schemas/AttributeSelector",
            "description": "Selector hints for inference purposes."
          },
          "modeling": {
            "$ref": "#/components/schemas/AttributeSelector",
            "description": "Selector hints for modeling purposes."
          }
        },
        "description": "Default selector hints organized by purpose. These provide guidance to consumers on how to filter assertions for different use cases (modeling, inference, append).\n"
      },
      "AttributeSortDirection": {
        "type": "string",
        "description": "Sort direction for attribute aggregation.",
        "enum": [
          "asc",
          "desc"
        ]
      },
      "AttributeSourceConfig": {
        "type": "object",
        "required": [
          "precision"
        ],
        "properties": {
          "derivations": {
            "type": "string",
            "description": "Optional derivations applied to the source value."
          },
          "effective_until": {
            "type": "string",
            "description": "Exclusive end of the effective range (YYYY-MM-DD). Omit while the source is still live. A\nsupersession sets this on the prior configuration and adds a new one starting on the same date.\n",
            "example": "2026-06-01",
            "format": "date"
          },
          "precision": {
            "$ref": "#/components/schemas/AttributePrecision",
            "description": "The level at which this source asserts values."
          },
          "quality": {
            "type": "integer",
            "description": "Quality ranking for this source. When more than one source qualifies, the highest quality wins.\n",
            "example": 100,
            "default": 100
          },
          "transform": {
            "$ref": "#/components/schemas/AttributeSourceTransform",
            "description": "How to derive the attribute value from the source column. Omit for a direct mapping."
          }
        },
        "additionalProperties": false,
        "description": "How one authority + column provides values for the attribute over an effective date range."
      },
      "AttributeSourceTransform": {
        "type": "object",
        "properties": {
          "cast": {
            "$ref": "#/components/schemas/PrimitiveDataType",
            "description": "A type to cast the source value to before any further mapping."
          },
          "decode": {
            "type": "object",
            "description": "A mapping from raw source values to decoded values."
          },
          "recode": {
            "type": "object",
            "description": "A mapping that rewrites values after decoding."
          },
          "selector": {
            "type": "string",
            "description": "A selector expression that derives the value from the source column."
          }
        },
        "additionalProperties": false,
        "description": "How to derive an attribute value from a source column. `selector` and `decode` are mutually exclusive.\n"
      },
      "AttributeSources": {
        "type": "object",
        "additionalProperties": {
          "type": "object",
          "additionalProperties": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/AttributeSourceConfig"
            },
            "description": "Effective-dated configurations for one authority + column, keyed by the inclusive start date\n(YYYY-MM-DD). Date ranges for the same column may not overlap.\n"
          },
          "description": "The source columns provided by one authority, keyed by column name."
        },
        "description": "Source configuration for an attribute, keyed by authority, then by source column, then by the inclusive\neffective-from date (YYYY-MM-DD).\n"
      },
      "ClickHouseRotateCredentialsRequest": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "example": "clickhouse",
            "enum": [
              "clickhouse"
            ]
          }
        },
        "additionalProperties": false,
        "description": "Request to rotate Ed25519 SSH keypair credentials for a ClickHouse connection.\nCurrently no additional options are required beyond the type discriminator.\n"
      },
      "ClusteringDimensions": {
        "type": "object",
        "properties": {
          "attribute_max_observation_date": {
            "type": "string",
            "description": "Pin the FIG attribute release used for clustering: only attribute data observed on or before this date is considered. If not set, the freshest available data is used.\n\nOnly available on accounts with an identity graph feature store set. Supersedes the deprecated top-level `modeling_field_max_observation_date`.\n",
            "format": "date"
          },
          "attributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AllowedClusteringAttributes"
            },
            "description": "Faraday-provided attributes to consider for clustering, drawn from the allowed set of broadly effective attributes.\n\nOnly available on accounts with an identity graph feature store set.\n"
          },
          "streams": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Event stream properties to consider for clustering, keyed by the name of an event stream used by this persona set's cohort. Each value is the list of property names on that stream to consider.\n\nIf you do so, the resulting persona set will be inapplicable to individuals who have not experienced these events yet.\n"
          },
          "traits": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "First-party traits defined on your account to consider for clustering.\n\nOn accounts without an identity graph feature store set, Faraday-provided FIG traits may also be included here by prefixing the trait name with `fig/`.\n\nIf you do so, the resulting persona set will be inapplicable to individuals for whom these traits are unknown.\n"
          }
        },
        "description": "The dimensions the clustering system should consider when discovering the personas in a persona set.\n\nBy default, Faraday will consider a fixed set of broadly effective dimensions when discovering your personas. Advanced users can override our recommendation and specify their own. Note that the system may consider additional dimensions you do not list in order to improve performance.\n\nEach group is independent and any combination may be provided. The groups available to an account depend on whether it has an identity graph feature store set.\n\nThis supersedes the deprecated `modeling_fields`, `modeling_attributes`, and `modeling_field_max_observation_date` inputs. If both `clustering_dimensions` and any of those deprecated inputs are supplied on the same request, `clustering_dimensions` takes precedence and the deprecated inputs are ignored.\n\nChanging this on an existing persona set triggers a complete rebuild of the persona set.\n"
      },
      "Cohort": {
        "type": "object",
        "required": [
          "created_at",
          "id",
          "name",
          "resource_type",
          "status",
          "updated_at"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "attributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortAttributeCondition"
            },
            "description": "List of attribute conditions to filter cohort membership. Only available if your account has an identity graph feature store set. \n\nAttribute conditions and trait conditions merge into one list. Required conditions (optional=false) AND together. Optional conditions (optional=true) OR together as a group. Both groups AND-ed for final membership.\n"
          },
          "classic": {
            "type": "boolean",
            "description": "A Managed Cohort.",
            "const": true
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "explore": {
            "type": "boolean",
            "description": "Whether to show the Cohort in Explore, the map view on https://app.faraday.ai.\n\nThis will slow down Cohort builds.\n",
            "example": false,
            "default": false
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "location_conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortLocationCondition"
            },
            "description": "List of atlas locations to use to spatially filter Cohort membership.\n\nA cohort may not set both `location_conditions` and `place_conditions`.\n"
          },
          "max_count": {
            "type": "number",
            "description": "Max count for this cohort's config",
            "example": 100
          },
          "max_value": {
            "type": "number",
            "description": "Max value for this cohort's config",
            "example": 100
          },
          "metrics": {
            "type": "object",
            "properties": {
              "enrichable_person_count": {
                "type": "integer",
                "description": "Count of unique individuals in the cohort that are enrichable with Faraday's data."
              },
              "enrichable_residence_count": {
                "type": "integer",
                "description": "Count of unique residences in the cohort that are enrichable with Faraday's data."
              },
              "total_person_count": {
                "type": "integer",
                "description": "Total count of unique individuals in the cohort."
              },
              "total_residence_count": {
                "type": "integer",
                "description": "Total count of unique residences in the cohort."
              }
            }
          },
          "min_count": {
            "type": "number",
            "description": "Min count for this cohort's config",
            "example": 10
          },
          "min_value": {
            "type": "number",
            "description": "Min value for this cohort's config",
            "example": 100
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this cohort.",
            "example": "Customers",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "place_conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortPlaceCondition"
            },
            "description": "List of places to use to spatially filter Cohort membership.\n\nSuperseded by `location_conditions`, which filters on the locations of an atlas. A cohort may not set both.\n",
            "deprecated": true
          },
          "population_count": {
            "type": "integer",
            "description": "Count of unique individuals.",
            "deprecated": true
          },
          "recency": {
            "$ref": "#/components/schemas/Recency"
          },
          "residence_count": {
            "type": "integer",
            "description": "Count of unique residences.",
            "deprecated": true
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource.",
            "example": "cohorts"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "stream_conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortStreamCondition"
            },
            "description": "List of stream properties to filter cohort membership on. The stream properties must be for the same stream set as the cohort `stream_name`.\n\nNulls are excluded unless explicitly requested with `_null: true`.\n"
          },
          "stream_name": {
            "type": "string",
            "description": "The `name` field of the stream from which to build this cohort.",
            "example": "orders",
            "maxLength": 64
          },
          "traits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortTrait"
            },
            "description": "List of traits to filter cohort membership"
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A specific group of people, such as \"Customers\" or \"Subscription customers\"."
      },
      "CohortAnalysisMembership": {
        "type": "object",
        "required": [
          "days",
          "weeks",
          "months"
        ],
        "properties": {
          "days": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortAnalysisMembershipDatum"
            }
          },
          "metrics": {
            "type": "object",
            "properties": {
              "enrichable_person_count": {
                "type": "integer",
                "description": "Count of unique individuals in the cohort that are enrichable with Faraday's data."
              },
              "enrichable_residence_count": {
                "type": "integer",
                "description": "Count of unique residences in the cohort that are enrichable with Faraday's data."
              },
              "total_person_count": {
                "type": "integer",
                "description": "Total count of unique individuals in the cohort."
              },
              "total_residence_count": {
                "type": "integer",
                "description": "Total count of unique residences in the cohort."
              }
            }
          },
          "months": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortAnalysisMembershipDatum"
            }
          },
          "population_count": {
            "type": "integer",
            "description": "The total unique members within the cohort.",
            "deprecated": true
          },
          "residence_count": {
            "type": "integer",
            "description": "The total unique residences within the cohort.",
            "deprecated": true
          },
          "weeks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortAnalysisMembershipDatum"
            }
          }
        }
      },
      "CohortAnalysisMembershipDatum": {
        "type": "object",
        "required": [
          "date",
          "count"
        ],
        "properties": {
          "count": {
            "type": "number",
            "description": "The total members within the cohort for the given date."
          },
          "date": {
            "type": "string",
            "format": "date"
          }
        }
      },
      "CohortAttributeCondition": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "_eq": {
            "type": "string",
            "description": "Equal to"
          },
          "_gt": {
            "type": "number",
            "description": "Greater than"
          },
          "_gte": {
            "type": "number",
            "description": "Greater than or equal to"
          },
          "_in": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is one of"
          },
          "_lt": {
            "type": "number",
            "description": "Less than"
          },
          "_lte": {
            "type": "number",
            "description": "Less than or equal to"
          },
          "_matches": {
            "type": "string",
            "description": "Value contains a match to the regex (re2) expression provided. For an exact regex match, use the ^ and $ characters as specified by the (re2 documentation)[https://github.com/google/re2/wiki/Syntax]."
          },
          "_nin": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is not one of"
          },
          "_nnull": {
            "type": "boolean",
            "description": "Value is not null"
          },
          "_null": {
            "type": "boolean",
            "description": "Value is null (nulls are otherwise excluded)"
          },
          "name": {
            "type": "string",
            "description": "The name of the attribute. Faraday provided attributes (associated with a feature store) must be prefixed with fig/. For example, fig/age or fig/household_income.",
            "maxLength": 256
          },
          "optional": {
            "type": "boolean",
            "description": "Optional attribute conditions are unioned together, when combined they define cohorts that meet either attribute condition. At least one optional condition must be satisfied."
          }
        },
        "additionalProperties": false
      },
      "CohortLocationCondition": {
        "type": "object",
        "properties": {
          "distance": {
            "type": "integer",
            "description": "A distance in meters which will be used to expand each location's geometry. By default, the distance is set to 0, which means using the geometry itself; explicitly set your own value to override this. Points are buffered into a circle of this radius, and areas are expanded outward from their edges by this amount.\n\nSee the [PostGIS documentation](https://postgis.net/docs/ST_Buffer.html) for visual descriptions of how this expansion, called buffering, works.\n",
            "example": 0,
            "minimum": 0
          },
          "invert": {
            "type": "boolean",
            "description": "By default, location conditions will select people who intersect a location's geometry. If `invert` is set to `true`, then instead, select people who *do not* intersect any of the locations' geometries.\n",
            "example": false
          },
          "locations": {
            "type": "object",
            "properties": {
              "atlas_ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "4c6c0f1e-0a58-4f1a-9c8a-52a1a1a3f5b7",
                  "format": "uuid"
                },
                "description": "The atlases whose locations are used to filter this cohort's membership spatially.\n\nIf this is empty or absent, every atlas in the account is used.\n"
              },
              "location_reference_keys": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "store-042"
                },
                "description": "Restrict this condition to the locations carrying these reference keys.\n\nA reference key is unique only within one atlas, so these keys are matched in every atlas this condition selects. Select a single atlas to restrict them to that atlas' keys.\n"
              },
              "property_conditions": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LocationPropertyCondition"
                },
                "description": "Restrict this condition to the locations whose properties satisfy these conditions."
              }
            },
            "additionalProperties": false,
            "description": "The atlas locations this condition selects people against. If absent, every location in the account's atlases is used.\n"
          }
        },
        "additionalProperties": false
      },
      "CohortMergePatch": {
        "type": "object",
        "properties": {
          "attributes": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CohortAttributeCondition"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of attribute conditions to filter cohort membership. Only available if your account has an identity graph feature store set. \n\nAttribute conditions and trait conditions merge into one list. Required conditions (optional=false) AND together. Optional conditions (optional=true) OR together as a group. Both groups AND-ed for final membership.\n"
          },
          "explore": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": false,
                "default": false
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether to show the Cohort in Explore, the map view on https://app.faraday.ai.\n\nThis will slow down Cohort builds.\n"
          },
          "location_conditions": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CohortLocationCondition"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of atlas locations to use to spatially filter Cohort membership.\n\nA cohort may not set both `location_conditions` and `place_conditions`.\n"
          },
          "max_count": {
            "oneOf": [
              {
                "type": "number",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": 100
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Max count for this cohort's config"
          },
          "max_value": {
            "oneOf": [
              {
                "type": "number",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": 100
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Max value for this cohort's config"
          },
          "min_count": {
            "oneOf": [
              {
                "type": "number",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": 10
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Min count for this cohort's config"
          },
          "min_value": {
            "oneOf": [
              {
                "type": "number",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": 100
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Min value for this cohort's config"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this cohort.",
            "example": "Customers",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "place_conditions": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CohortPlaceCondition"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "deprecated": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of places to use to spatially filter Cohort membership.\n\nSuperseded by `location_conditions`, which filters on the locations of an atlas. A cohort may not set both.\n"
          },
          "recency": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/RecencyMergePatch"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "stream_conditions": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CohortStreamCondition"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of stream properties to filter cohort membership on. The stream properties must be for the same stream set as the cohort `stream_name`.\n\nNulls are excluded unless explicitly requested with `_null: true`.\n"
          },
          "stream_name": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "orders",
                "maxLength": 64
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The `name` field of the stream from which to build this cohort."
          },
          "traits": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CohortTrait"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of traits to filter cohort membership"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Cohort` type.)\n\nA specific group of people, such as \"Customers\" or \"Subscription customers\"."
      },
      "CohortPlaceCondition": {
        "type": "object",
        "required": [
          "place_id"
        ],
        "properties": {
          "distance": {
            "type": "integer",
            "description": "A distance in meters which will be used to expand the Place's geometry. By default, the distance is set to 0 which means using the geometry itself, explicitly set your own value to override this. If the place is a set of addresses,\nthen each geocoded address point will be buffered by this amount. If the place is a geometry, the entire geometry will be expanded by this amount.\nIf the place is a GeometryCollect, each geometry will be expanded by this amount.\n\nSee the [PostGIS documentation](https://postgis.net/docs/ST_Buffer.html) for visual descriptions of how this expansion, called buffering, works.\n",
            "example": 0
          },
          "invert": {
            "type": "boolean",
            "description": "By default, Place conditions will select people who intersect the place's geometry. If `invert` is set to `true`, then\ninstead, select people who *do not* intersect the Place's geometry.\n",
            "example": false
          },
          "place_id": {
            "type": "string",
            "description": "The ID of a Place which should be used to filter this Cohort's membership spatially.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "A spatial filter on a place. Superseded by `CohortLocationCondition`, which filters on\nthe locations of an atlas.\n",
        "deprecated": true
      },
      "CohortPost": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "attributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortAttributeCondition"
            },
            "description": "List of attribute conditions to filter cohort membership. Only available if your account has an identity graph feature store set. \n\nAttribute conditions and trait conditions merge into one list. Required conditions (optional=false) AND together. Optional conditions (optional=true) OR together as a group. Both groups AND-ed for final membership.\n"
          },
          "explore": {
            "type": "boolean",
            "description": "Whether to show the Cohort in Explore, the map view on https://app.faraday.ai.\n\nThis will slow down Cohort builds.\n",
            "example": false,
            "default": false
          },
          "location_conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortLocationCondition"
            },
            "description": "List of atlas locations to use to spatially filter Cohort membership.\n\nA cohort may not set both `location_conditions` and `place_conditions`.\n"
          },
          "max_count": {
            "type": "number",
            "description": "Max count for this cohort's config",
            "example": 100
          },
          "max_value": {
            "type": "number",
            "description": "Max value for this cohort's config",
            "example": 100
          },
          "min_count": {
            "type": "number",
            "description": "Min count for this cohort's config",
            "example": 10
          },
          "min_value": {
            "type": "number",
            "description": "Min value for this cohort's config",
            "example": 100
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this cohort.",
            "example": "Customers",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "place_conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortPlaceCondition"
            },
            "description": "List of places to use to spatially filter Cohort membership.\n\nSuperseded by `location_conditions`, which filters on the locations of an atlas. A cohort may not set both.\n",
            "deprecated": true
          },
          "recency": {
            "$ref": "#/components/schemas/RecencyPost"
          },
          "stream_conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortStreamCondition"
            },
            "description": "List of stream properties to filter cohort membership on. The stream properties must be for the same stream set as the cohort `stream_name`.\n\nNulls are excluded unless explicitly requested with `_null: true`.\n"
          },
          "stream_name": {
            "type": "string",
            "description": "The `name` field of the stream from which to build this cohort.",
            "example": "orders",
            "maxLength": 64
          },
          "traits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortTrait"
            },
            "description": "List of traits to filter cohort membership"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Cohort` type.)\n\nA specific group of people, such as \"Customers\" or \"Subscription customers\"."
      },
      "CohortPut": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "attributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortAttributeCondition"
            },
            "description": "List of attribute conditions to filter cohort membership. Only available if your account has an identity graph feature store set. \n\nAttribute conditions and trait conditions merge into one list. Required conditions (optional=false) AND together. Optional conditions (optional=true) OR together as a group. Both groups AND-ed for final membership.\n"
          },
          "explore": {
            "type": "boolean",
            "description": "Whether to show the Cohort in Explore, the map view on https://app.faraday.ai.\n\nThis will slow down Cohort builds.\n",
            "example": false,
            "default": false
          },
          "location_conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortLocationCondition"
            },
            "description": "List of atlas locations to use to spatially filter Cohort membership.\n\nA cohort may not set both `location_conditions` and `place_conditions`.\n"
          },
          "max_count": {
            "type": "number",
            "description": "Max count for this cohort's config",
            "example": 100
          },
          "max_value": {
            "type": "number",
            "description": "Max value for this cohort's config",
            "example": 100
          },
          "min_count": {
            "type": "number",
            "description": "Min count for this cohort's config",
            "example": 10
          },
          "min_value": {
            "type": "number",
            "description": "Min value for this cohort's config",
            "example": 100
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this cohort.",
            "example": "Customers",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "place_conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortPlaceCondition"
            },
            "description": "List of places to use to spatially filter Cohort membership.\n\nSuperseded by `location_conditions`, which filters on the locations of an atlas. A cohort may not set both.\n",
            "deprecated": true
          },
          "recency": {
            "$ref": "#/components/schemas/RecencyPut"
          },
          "stream_conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortStreamCondition"
            },
            "description": "List of stream properties to filter cohort membership on. The stream properties must be for the same stream set as the cohort `stream_name`.\n\nNulls are excluded unless explicitly requested with `_null: true`.\n"
          },
          "stream_name": {
            "type": "string",
            "description": "The `name` field of the stream from which to build this cohort.",
            "example": "orders",
            "maxLength": 64
          },
          "traits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CohortTrait"
            },
            "description": "List of traits to filter cohort membership"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Cohort` type.)\n\nA specific group of people, such as \"Customers\" or \"Subscription customers\"."
      },
      "CohortStreamCondition": {
        "type": "object",
        "required": [
          "property"
        ],
        "properties": {
          "_eq": {
            "type": "string",
            "description": "Equal to"
          },
          "_gt": {
            "type": "number",
            "description": "Greater than"
          },
          "_gte": {
            "type": "number",
            "description": "Greater than or equal to"
          },
          "_in": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is one of"
          },
          "_lt": {
            "type": "number",
            "description": "Less than"
          },
          "_lte": {
            "type": "number",
            "description": "Less than or equal to"
          },
          "_matches": {
            "type": "string",
            "description": "Value contains a match to the regex (re2) expression provided. For an exact regex match, use the ^ and $ characters as specified by the (re2 documentation)[https://github.com/google/re2/wiki/Syntax]."
          },
          "_nin": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is not one of"
          },
          "_nnull": {
            "type": "boolean",
            "description": "Value is not null"
          },
          "_null": {
            "type": "boolean",
            "description": "Value is null (nulls are otherwise excluded)"
          },
          "optional": {
            "type": "boolean",
            "description": "Optional stream conditions are unioned together, when combined they define cohorts that meet either stream condition. At least one optional condition must be satisfied."
          },
          "property": {
            "type": "string",
            "description": "Stream property name.",
            "maxLength": 256
          }
        },
        "additionalProperties": false
      },
      "CohortTrait": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "_eq": {
            "type": "string",
            "description": "Equal to"
          },
          "_gt": {
            "type": "number",
            "description": "Greater than"
          },
          "_gte": {
            "type": "number",
            "description": "Greater than or equal to"
          },
          "_in": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is one of"
          },
          "_lt": {
            "type": "number",
            "description": "Less than"
          },
          "_lte": {
            "type": "number",
            "description": "Less than or equal to"
          },
          "_matches": {
            "type": "string",
            "description": "Value contains a match to the regex (re2) expression provided. For an exact regex match, use the ^ and $ characters as specified by the (re2 documentation)[https://github.com/google/re2/wiki/Syntax]."
          },
          "_nin": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is not one of"
          },
          "_nnull": {
            "type": "boolean",
            "description": "Value is not null"
          },
          "_null": {
            "type": "boolean",
            "description": "Value is null (nulls are otherwise excluded)"
          },
          "name": {
            "type": "string",
            "description": "The name of the trait.",
            "maxLength": 256
          },
          "optional": {
            "type": "boolean",
            "description": "Optional trait conditions are unioned together, when combined they define cohorts that meet either trait condition - i.e. state = WA OR metro = Portland. At least one optional condition must be satisfied."
          }
        },
        "additionalProperties": false
      },
      "ComplexDataType": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/PrimitiveDataType"
          },
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "logicalType": {
                "type": "string",
                "enum": [
                  "date",
                  "timestamp-millis",
                  "local-timestamp-millis",
                  "json",
                  "uuid",
                  "unknown"
                ]
              },
              "type": {
                "$ref": "#/components/schemas/PrimitiveDataType"
              }
            },
            "additionalProperties": false,
            "example": {
              "logicalType": "timestamp-millis",
              "type": "long"
            }
          }
        ],
        "description": "The data type of a column in table, or of a trait. Types are expressed using a subset of\n[Avro](https://avro.apache.org/docs/current/spec.html). Possible values include all the types\nin `PrimitiveDataType`, plus more complex types like dates, timestamps and JSON.\n"
      },
      "Connection": {
        "type": "object",
        "required": [
          "created_at",
          "directionality",
          "id",
          "name",
          "options",
          "resource_type",
          "status",
          "updated_at"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "contents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentsRow"
            },
            "example": [
              "my_table_1",
              "my_table_2"
            ]
          },
          "contents_error": {
            "type": "string",
            "description": "The error encountered when trying to connect, if any",
            "example": "Password incorrect"
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "directionality": {
            "type": "string",
            "description": "Whether the connection can be used as a source (for datasets), a destination (for targets), or both.",
            "enum": [
              "bidirectional",
              "source_only",
              "destination_only"
            ]
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "managed": {
            "type": "boolean",
            "description": "A managed connection requires special configuration from a Faraday admin, and is read-only.",
            "example": true
          },
          "name": {
            "type": "string",
            "description": "A user-friendly name of the connection.",
            "example": "Snowflake AWS - Marketing",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "options": {
            "$ref": "#/components/schemas/ConnectionOptions"
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource.",
            "example": "connections"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Configuration for connecting data between Faraday and an external location.\n\nConnections are required when working with **replication targets**.\n"
      },
      "ConnectionMergePatch": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "A user-friendly name of the connection.",
            "example": "Snowflake AWS - Marketing",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "options": {
            "$ref": "#/components/schemas/ConnectionOptionsMergePatch"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Connection` type.)\n\nConfiguration for connecting data between Faraday and an external location.\n\nConnections are required when working with **replication targets**.\n"
      },
      "ConnectionOptions": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ConnectionOptionsAthena"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsAuroraMysql"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsAuroraPostgres"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRdsMysql"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRdsPostgres"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRdsSqlServer"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRedshiftServerless"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAzureSqlServer"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsBigQuery"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsClassic"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsClickhouse"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsDatabricks"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsDatabricksDeltaSharing"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsFacebookCustomAudiences"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpCloudSqlMysql"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpCloudSqlPostgres"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpCloudSqlSqlServer"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpGcsCsv"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGoogleAds"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsHostedCsv"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsHubspot"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsIterable"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsKlaviyo"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsLinkedinAds"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsLookupApi"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsMerge"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsMotherduck"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsMysql"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsPinterestAds"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsPoplar"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsPostgres"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsRecharge"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsRedshift"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsS3Csv"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSalesforce"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSalesforceMarketingCloud"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSegment"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSftp"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsShopify"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSnowflake"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSqlServer"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsStripe"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsTheTradeDesk"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsTiktok"
          }
        ],
        "description": "The connection-specific options. These vary by connection type.\n",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/ConnectionOptionsAthena",
            "aws_aurora_mysql": "#/components/schemas/ConnectionOptionsAwsAuroraMysql",
            "aws_aurora_postgres": "#/components/schemas/ConnectionOptionsAwsAuroraPostgres",
            "aws_rds_mysql": "#/components/schemas/ConnectionOptionsAwsRdsMysql",
            "aws_rds_postgres": "#/components/schemas/ConnectionOptionsAwsRdsPostgres",
            "aws_rds_sql_server": "#/components/schemas/ConnectionOptionsAwsRdsSqlServer",
            "aws_redshift_serverless": "#/components/schemas/ConnectionOptionsAwsRedshiftServerless",
            "azure_sql_server": "#/components/schemas/ConnectionOptionsAzureSqlServer",
            "bigquery": "#/components/schemas/ConnectionOptionsBigQuery",
            "classic": "#/components/schemas/ConnectionOptionsClassic",
            "clickhouse": "#/components/schemas/ConnectionOptionsClickhouse",
            "databricks": "#/components/schemas/ConnectionOptionsDatabricks",
            "databricks_delta_sharing": "#/components/schemas/ConnectionOptionsDatabricksDeltaSharing",
            "facebook_custom_audiences": "#/components/schemas/ConnectionOptionsFacebookCustomAudiences",
            "gcp_cloud_sql_mysql": "#/components/schemas/ConnectionOptionsGcpCloudSqlMysql",
            "gcp_cloud_sql_postgres": "#/components/schemas/ConnectionOptionsGcpCloudSqlPostgres",
            "gcp_cloud_sql_sql_server": "#/components/schemas/ConnectionOptionsGcpCloudSqlSqlServer",
            "gcp_gcs_csv": "#/components/schemas/ConnectionOptionsGcpGcsCsv",
            "google_ads": "#/components/schemas/ConnectionOptionsGoogleAds",
            "hosted_csv": "#/components/schemas/ConnectionOptionsHostedCsv",
            "hubspot": "#/components/schemas/ConnectionOptionsHubspot",
            "iterable": "#/components/schemas/ConnectionOptionsIterable",
            "klaviyo": "#/components/schemas/ConnectionOptionsKlaviyo",
            "linkedin_ads": "#/components/schemas/ConnectionOptionsLinkedinAds",
            "lookup_api": "#/components/schemas/ConnectionOptionsLookupApi",
            "merge": "#/components/schemas/ConnectionOptionsMerge",
            "motherduck": "#/components/schemas/ConnectionOptionsMotherduck",
            "mysql": "#/components/schemas/ConnectionOptionsMysql",
            "pinterest_ads": "#/components/schemas/ConnectionOptionsPinterestAds",
            "poplar": "#/components/schemas/ConnectionOptionsPoplar",
            "postgres": "#/components/schemas/ConnectionOptionsPostgres",
            "recharge": "#/components/schemas/ConnectionOptionsRecharge",
            "redshift": "#/components/schemas/ConnectionOptionsRedshift",
            "s3_csv": "#/components/schemas/ConnectionOptionsS3Csv",
            "salesforce": "#/components/schemas/ConnectionOptionsSalesforce",
            "salesforce_marketing_cloud": "#/components/schemas/ConnectionOptionsSalesforceMarketingCloud",
            "segment": "#/components/schemas/ConnectionOptionsSegment",
            "sftp": "#/components/schemas/ConnectionOptionsSftp",
            "shopify": "#/components/schemas/ConnectionOptionsShopify",
            "snowflake": "#/components/schemas/ConnectionOptionsSnowflake",
            "sql_server": "#/components/schemas/ConnectionOptionsSqlServer",
            "stripe": "#/components/schemas/ConnectionOptionsStripe",
            "the_trade_desk": "#/components/schemas/ConnectionOptionsTheTradeDesk",
            "tiktok": "#/components/schemas/ConnectionOptionsTiktok"
          }
        }
      },
      "ConnectionOptionsAthena": {
        "type": "object",
        "required": [
          "aws_account_id",
          "aws_region",
          "database",
          "s3_output_location",
          "type"
        ],
        "properties": {
          "aws_account_id": {
            "type": "string",
            "description": "Twelve-digit AWS account ID that owns the Glue catalog Faraday should query.",
            "pattern": "^[0-9]{12}$"
          },
          "aws_customer_role_arn": {
            "type": "string",
            "description": "IAM role in your AWS account that Faraday assumes to run Athena. Create the Faraday connection first, trust aws_iam_role_arn on this role, then set this field.",
            "pattern": "^arn:aws:iam::[0-9]+:role/.+$"
          },
          "aws_iam_role_arn": {
            "type": "string",
            "description": "AWS IAM role Faraday generated for this connection. Create a role in your AWS account that trusts this ARN, grant that role Athena, Glue, and S3, set aws_customer_role_arn, then force-update. Unique per Faraday Athena connection.",
            "pattern": "^arn:aws:iam::[0-9]+:role/.+$"
          },
          "aws_region": {
            "type": "string",
            "description": "Region of the Glue catalog and the S3 output location, e.g. us-east-1.",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Glue/Athena database Faraday should read from and write to.",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
          },
          "s3_output_location": {
            "type": "string",
            "description": "s3://bucket/prefix/ where Faraday stages extracts, query results, and target tables. Grant the role in aws_customer_role_arn read and write on this prefix.",
            "pattern": "^s3://[a-z0-9.\\-]+(/.*)?$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "athena"
          },
          "workgroup": {
            "type": "string",
            "description": "Athena workgroup in your AWS account. Defaults to primary.",
            "pattern": "^[a-zA-Z0-9._-]{1,128}$"
          }
        },
        "additionalProperties": false,
        "description": "Athena options",
        "title": "Athena"
      },
      "ConnectionOptionsAthenaMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "aws_account_id": {
            "type": "string",
            "description": "Twelve-digit AWS account ID that owns the Glue catalog Faraday should query.",
            "pattern": "^[0-9]{12}$"
          },
          "aws_customer_role_arn": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^arn:aws:iam::[0-9]+:role/.+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "IAM role in your AWS account that Faraday assumes to run Athena. Create the Faraday connection first, trust aws_iam_role_arn on this role, then set this field."
          },
          "aws_region": {
            "type": "string",
            "description": "Region of the Glue catalog and the S3 output location, e.g. us-east-1.",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Glue/Athena database Faraday should read from and write to.",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
          },
          "s3_output_location": {
            "type": "string",
            "description": "s3://bucket/prefix/ where Faraday stages extracts, query results, and target tables. Grant the role in aws_customer_role_arn read and write on this prefix.",
            "pattern": "^s3://[a-z0-9.\\-]+(/.*)?$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "athena"
          },
          "workgroup": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z0-9._-]{1,128}$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Athena workgroup in your AWS account. Defaults to primary."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsAthena` type.)\n\nAthena options",
        "title": "Athena"
      },
      "ConnectionOptionsAthenaPost": {
        "type": "object",
        "required": [
          "aws_account_id",
          "aws_region",
          "database",
          "s3_output_location",
          "type"
        ],
        "properties": {
          "aws_account_id": {
            "type": "string",
            "description": "Twelve-digit AWS account ID that owns the Glue catalog Faraday should query.",
            "pattern": "^[0-9]{12}$"
          },
          "aws_customer_role_arn": {
            "type": "string",
            "description": "IAM role in your AWS account that Faraday assumes to run Athena. Create the Faraday connection first, trust aws_iam_role_arn on this role, then set this field.",
            "pattern": "^arn:aws:iam::[0-9]+:role/.+$"
          },
          "aws_region": {
            "type": "string",
            "description": "Region of the Glue catalog and the S3 output location, e.g. us-east-1.",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Glue/Athena database Faraday should read from and write to.",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
          },
          "s3_output_location": {
            "type": "string",
            "description": "s3://bucket/prefix/ where Faraday stages extracts, query results, and target tables. Grant the role in aws_customer_role_arn read and write on this prefix.",
            "pattern": "^s3://[a-z0-9.\\-]+(/.*)?$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "athena"
          },
          "workgroup": {
            "type": "string",
            "description": "Athena workgroup in your AWS account. Defaults to primary.",
            "pattern": "^[a-zA-Z0-9._-]{1,128}$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsAthena` type.)\n\nAthena options",
        "title": "Athena"
      },
      "ConnectionOptionsAthenaPut": {
        "type": "object",
        "required": [
          "aws_account_id",
          "aws_region",
          "database",
          "s3_output_location",
          "type"
        ],
        "properties": {
          "aws_account_id": {
            "type": "string",
            "description": "Twelve-digit AWS account ID that owns the Glue catalog Faraday should query.",
            "pattern": "^[0-9]{12}$"
          },
          "aws_customer_role_arn": {
            "type": "string",
            "description": "IAM role in your AWS account that Faraday assumes to run Athena. Create the Faraday connection first, trust aws_iam_role_arn on this role, then set this field.",
            "pattern": "^arn:aws:iam::[0-9]+:role/.+$"
          },
          "aws_region": {
            "type": "string",
            "description": "Region of the Glue catalog and the S3 output location, e.g. us-east-1.",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Glue/Athena database Faraday should read from and write to.",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
          },
          "s3_output_location": {
            "type": "string",
            "description": "s3://bucket/prefix/ where Faraday stages extracts, query results, and target tables. Grant the role in aws_customer_role_arn read and write on this prefix.",
            "pattern": "^s3://[a-z0-9.\\-]+(/.*)?$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "athena"
          },
          "workgroup": {
            "type": "string",
            "description": "Athena workgroup in your AWS account. Defaults to primary.",
            "pattern": "^[a-zA-Z0-9._-]{1,128}$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsAthena` type.)\n\nAthena options",
        "title": "Athena"
      },
      "ConnectionOptionsAwsAuroraMysql": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "Aurora (MySQL) options",
        "title": "Aurora (MySQL)"
      },
      "ConnectionOptionsAwsAuroraMysqlMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsAwsAuroraMysql` type.)\n\nAurora (MySQL) options",
        "title": "Aurora (MySQL)"
      },
      "ConnectionOptionsAwsAuroraMysqlPost": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsAwsAuroraMysql` type.)\n\nAurora (MySQL) options",
        "title": "Aurora (MySQL)"
      },
      "ConnectionOptionsAwsAuroraMysqlPut": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsAwsAuroraMysql` type.)\n\nAurora (MySQL) options",
        "title": "Aurora (MySQL)"
      },
      "ConnectionOptionsAwsAuroraPostgres": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "AWS Aurora Postgres options",
        "title": "AWS Aurora Postgres"
      },
      "ConnectionOptionsAwsAuroraPostgresMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsAwsAuroraPostgres` type.)\n\nAWS Aurora Postgres options",
        "title": "AWS Aurora Postgres"
      },
      "ConnectionOptionsAwsAuroraPostgresPost": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsAwsAuroraPostgres` type.)\n\nAWS Aurora Postgres options",
        "title": "AWS Aurora Postgres"
      },
      "ConnectionOptionsAwsAuroraPostgresPut": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsAwsAuroraPostgres` type.)\n\nAWS Aurora Postgres options",
        "title": "AWS Aurora Postgres"
      },
      "ConnectionOptionsAwsRdsMysql": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "RDS (MySQL) options",
        "title": "RDS (MySQL)"
      },
      "ConnectionOptionsAwsRdsMysqlMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsAwsRdsMysql` type.)\n\nRDS (MySQL) options",
        "title": "RDS (MySQL)"
      },
      "ConnectionOptionsAwsRdsMysqlPost": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsAwsRdsMysql` type.)\n\nRDS (MySQL) options",
        "title": "RDS (MySQL)"
      },
      "ConnectionOptionsAwsRdsMysqlPut": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsAwsRdsMysql` type.)\n\nRDS (MySQL) options",
        "title": "RDS (MySQL)"
      },
      "ConnectionOptionsAwsRdsPostgres": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "RDS (Postgres) options",
        "title": "RDS (Postgres)"
      },
      "ConnectionOptionsAwsRdsPostgresMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsAwsRdsPostgres` type.)\n\nRDS (Postgres) options",
        "title": "RDS (Postgres)"
      },
      "ConnectionOptionsAwsRdsPostgresPost": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsAwsRdsPostgres` type.)\n\nRDS (Postgres) options",
        "title": "RDS (Postgres)"
      },
      "ConnectionOptionsAwsRdsPostgresPut": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsAwsRdsPostgres` type.)\n\nRDS (Postgres) options",
        "title": "RDS (Postgres)"
      },
      "ConnectionOptionsAwsRdsSqlServer": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "RDS (SQL Server) options",
        "title": "RDS (SQL Server)"
      },
      "ConnectionOptionsAwsRdsSqlServerMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z0-9_]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Schema"
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsAwsRdsSqlServer` type.)\n\nRDS (SQL Server) options",
        "title": "RDS (SQL Server)"
      },
      "ConnectionOptionsAwsRdsSqlServerPost": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsAwsRdsSqlServer` type.)\n\nRDS (SQL Server) options",
        "title": "RDS (SQL Server)"
      },
      "ConnectionOptionsAwsRdsSqlServerPut": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsAwsRdsSqlServer` type.)\n\nRDS (SQL Server) options",
        "title": "RDS (SQL Server)"
      },
      "ConnectionOptionsAwsRedshiftServerless": {
        "type": "object",
        "required": [
          "aws_region",
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "aws_region": {
            "type": "string",
            "description": "Redshift tables exists inside of an AWS region, e.g. us-east-1",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_redshift_serverless"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "Redshift Serverless options",
        "title": "Redshift Serverless"
      },
      "ConnectionOptionsAwsRedshiftServerlessMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "aws_region": {
            "type": "string",
            "description": "Redshift tables exists inside of an AWS region, e.g. us-east-1",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_redshift_serverless"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsAwsRedshiftServerless` type.)\n\nRedshift Serverless options",
        "title": "Redshift Serverless"
      },
      "ConnectionOptionsAwsRedshiftServerlessPost": {
        "type": "object",
        "required": [
          "aws_region",
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "aws_region": {
            "type": "string",
            "description": "Redshift tables exists inside of an AWS region, e.g. us-east-1",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_redshift_serverless"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsAwsRedshiftServerless` type.)\n\nRedshift Serverless options",
        "title": "Redshift Serverless"
      },
      "ConnectionOptionsAwsRedshiftServerlessPut": {
        "type": "object",
        "required": [
          "aws_region",
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "aws_region": {
            "type": "string",
            "description": "Redshift tables exists inside of an AWS region, e.g. us-east-1",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_redshift_serverless"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsAwsRedshiftServerless` type.)\n\nRedshift Serverless options",
        "title": "Redshift Serverless"
      },
      "ConnectionOptionsAzureSqlServer": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "azure_sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "Azure SQL options",
        "title": "Azure SQL"
      },
      "ConnectionOptionsAzureSqlServerMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z0-9_]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Schema"
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "azure_sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsAzureSqlServer` type.)\n\nAzure SQL options",
        "title": "Azure SQL"
      },
      "ConnectionOptionsAzureSqlServerPost": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "azure_sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsAzureSqlServer` type.)\n\nAzure SQL options",
        "title": "Azure SQL"
      },
      "ConnectionOptionsAzureSqlServerPut": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "azure_sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsAzureSqlServer` type.)\n\nAzure SQL options",
        "title": "Azure SQL"
      },
      "ConnectionOptionsBigQuery": {
        "type": "object",
        "required": [
          "dataset_name",
          "project_id",
          "type"
        ],
        "properties": {
          "dataset_name": {
            "type": "string",
            "description": "Dataset name",
            "pattern": "^[_0-9a-zA-Z][\\$\\w]{2,126}$"
          },
          "gcp_service_account_email": {
            "type": "string",
            "description": "Google Cloud service account Faraday generated for this connection. Grant this account access in your project, then force-update the connection. Unique per Faraday BigQuery connection.",
            "pattern": "^[a-z0-9-]+@[a-z0-9-]+\\.iam\\.gserviceaccount\\.com$"
          },
          "project_id": {
            "type": "string",
            "description": "Project ID",
            "pattern": "^[a-z][-0-9a-z]{5,29}$"
          },
          "region": {
            "type": "string",
            "description": "BigQuery location. Defaults to <code>US</code> (multi-region). Faraday supports the US multi-region and US single regions only. See <a href=\"https://cloud.google.com/bigquery/docs/locations\">BigQuery locations</a>.",
            "default": "US",
            "enum": [
              "US",
              "us-central1",
              "us-east1",
              "us-east4",
              "us-east5",
              "us-south1",
              "us-west1",
              "us-west2",
              "us-west3",
              "us-west4"
            ],
            "pattern": "^(US|us-central1|us-east1|us-east4|us-east5|us-south1|us-west1|us-west2|us-west3|us-west4)$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "bigquery"
          }
        },
        "additionalProperties": false,
        "description": "BigQuery options",
        "title": "BigQuery"
      },
      "ConnectionOptionsBigQueryMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "dataset_name": {
            "type": "string",
            "description": "Dataset name",
            "pattern": "^[_0-9a-zA-Z][\\$\\w]{2,126}$"
          },
          "project_id": {
            "type": "string",
            "description": "Project ID",
            "pattern": "^[a-z][-0-9a-z]{5,29}$"
          },
          "region": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "default": "US",
                "enum": [
                  "US",
                  "us-central1",
                  "us-east1",
                  "us-east4",
                  "us-east5",
                  "us-south1",
                  "us-west1",
                  "us-west2",
                  "us-west3",
                  "us-west4"
                ],
                "pattern": "^(US|us-central1|us-east1|us-east4|us-east5|us-south1|us-west1|us-west2|us-west3|us-west4)$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "BigQuery location. Defaults to <code>US</code> (multi-region). Faraday supports the US multi-region and US single regions only. See <a href=\"https://cloud.google.com/bigquery/docs/locations\">BigQuery locations</a>."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "bigquery"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsBigQuery` type.)\n\nBigQuery options",
        "title": "BigQuery"
      },
      "ConnectionOptionsBigQueryPost": {
        "type": "object",
        "required": [
          "dataset_name",
          "project_id",
          "type"
        ],
        "properties": {
          "dataset_name": {
            "type": "string",
            "description": "Dataset name",
            "pattern": "^[_0-9a-zA-Z][\\$\\w]{2,126}$"
          },
          "project_id": {
            "type": "string",
            "description": "Project ID",
            "pattern": "^[a-z][-0-9a-z]{5,29}$"
          },
          "region": {
            "type": "string",
            "description": "BigQuery location. Defaults to <code>US</code> (multi-region). Faraday supports the US multi-region and US single regions only. See <a href=\"https://cloud.google.com/bigquery/docs/locations\">BigQuery locations</a>.",
            "default": "US",
            "enum": [
              "US",
              "us-central1",
              "us-east1",
              "us-east4",
              "us-east5",
              "us-south1",
              "us-west1",
              "us-west2",
              "us-west3",
              "us-west4"
            ],
            "pattern": "^(US|us-central1|us-east1|us-east4|us-east5|us-south1|us-west1|us-west2|us-west3|us-west4)$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "bigquery"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsBigQuery` type.)\n\nBigQuery options",
        "title": "BigQuery"
      },
      "ConnectionOptionsBigQueryPut": {
        "type": "object",
        "required": [
          "dataset_name",
          "project_id",
          "type"
        ],
        "properties": {
          "dataset_name": {
            "type": "string",
            "description": "Dataset name",
            "pattern": "^[_0-9a-zA-Z][\\$\\w]{2,126}$"
          },
          "project_id": {
            "type": "string",
            "description": "Project ID",
            "pattern": "^[a-z][-0-9a-z]{5,29}$"
          },
          "region": {
            "type": "string",
            "description": "BigQuery location. Defaults to <code>US</code> (multi-region). Faraday supports the US multi-region and US single regions only. See <a href=\"https://cloud.google.com/bigquery/docs/locations\">BigQuery locations</a>.",
            "default": "US",
            "enum": [
              "US",
              "us-central1",
              "us-east1",
              "us-east4",
              "us-east5",
              "us-south1",
              "us-west1",
              "us-west2",
              "us-west3",
              "us-west4"
            ],
            "pattern": "^(US|us-central1|us-east1|us-east4|us-east5|us-south1|us-west1|us-west2|us-west3|us-west4)$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "bigquery"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsBigQuery` type.)\n\nBigQuery options",
        "title": "BigQuery"
      },
      "ConnectionOptionsClassic": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "classic"
          }
        },
        "additionalProperties": false,
        "description": "Classic Faraday Sources options",
        "title": "Classic Faraday Sources"
      },
      "ConnectionOptionsClassicMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "classic"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsClassic` type.)\n\nClassic Faraday Sources options",
        "title": "Classic Faraday Sources"
      },
      "ConnectionOptionsClassicPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "classic"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsClassic` type.)\n\nClassic Faraday Sources options",
        "title": "Classic Faraday Sources"
      },
      "ConnectionOptionsClassicPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "classic"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsClassic` type.)\n\nClassic Faraday Sources options",
        "title": "Classic Faraday Sources"
      },
      "ConnectionOptionsClickhouse": {
        "type": "object",
        "required": [
          "database",
          "host",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
          },
          "host": {
            "type": "string",
            "description": "ClickHouse hostname. For ClickHouse Cloud, open Connect, set Connect with to Native (not HTTPS), and copy the host without protocol.",
            "format": "hostname",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "port": {
            "type": "integer",
            "description": "Native protocol TLS port. In ClickHouse Cloud, choose Connect with → Native (not HTTPS); the port is typically 9440. HTTPS uses 8443 and will not work. Self-hosted with TLS is often 9440."
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "ssh_public_key": {
            "type": "string",
            "description": "Ed25519 OpenSSH public key Faraday generated for this connection. In ClickHouse, create the user with only the base64 segment after ssh-ed25519: CREATE USER ... IDENTIFIED WITH ssh_key BY KEY '<base64>' TYPE 'ssh-ed25519'. Unique per connection. Rotate with the rotate_credentials endpoint.",
            "pattern": "^ssh-ed25519 [A-Za-z0-9+/]+=*( [^\\n]*)?\\n?$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "clickhouse"
          },
          "user": {
            "type": "string",
            "description": "ClickHouse user identified with Faraday's Ed25519 SSH public key.",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_\\-.]*$"
          }
        },
        "additionalProperties": false,
        "description": "ClickHouse options",
        "title": "ClickHouse"
      },
      "ConnectionOptionsClickhouseMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
          },
          "host": {
            "type": "string",
            "description": "ClickHouse hostname. For ClickHouse Cloud, open Connect, set Connect with to Native (not HTTPS), and copy the host without protocol.",
            "format": "hostname",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "port": {
            "type": "integer",
            "description": "Native protocol TLS port. In ClickHouse Cloud, choose Connect with → Native (not HTTPS); the port is typically 9440. HTTPS uses 8443 and will not work. Self-hosted with TLS is often 9440."
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "clickhouse"
          },
          "user": {
            "type": "string",
            "description": "ClickHouse user identified with Faraday's Ed25519 SSH public key.",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_\\-.]*$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsClickhouse` type.)\n\nClickHouse options",
        "title": "ClickHouse"
      },
      "ConnectionOptionsClickhousePost": {
        "type": "object",
        "required": [
          "database",
          "host",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
          },
          "host": {
            "type": "string",
            "description": "ClickHouse hostname. For ClickHouse Cloud, open Connect, set Connect with to Native (not HTTPS), and copy the host without protocol.",
            "format": "hostname",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "port": {
            "type": "integer",
            "description": "Native protocol TLS port. In ClickHouse Cloud, choose Connect with → Native (not HTTPS); the port is typically 9440. HTTPS uses 8443 and will not work. Self-hosted with TLS is often 9440."
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "clickhouse"
          },
          "user": {
            "type": "string",
            "description": "ClickHouse user identified with Faraday's Ed25519 SSH public key.",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_\\-.]*$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsClickhouse` type.)\n\nClickHouse options",
        "title": "ClickHouse"
      },
      "ConnectionOptionsClickhousePut": {
        "type": "object",
        "required": [
          "database",
          "host",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
          },
          "host": {
            "type": "string",
            "description": "ClickHouse hostname. For ClickHouse Cloud, open Connect, set Connect with to Native (not HTTPS), and copy the host without protocol.",
            "format": "hostname",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "port": {
            "type": "integer",
            "description": "Native protocol TLS port. In ClickHouse Cloud, choose Connect with → Native (not HTTPS); the port is typically 9440. HTTPS uses 8443 and will not work. Self-hosted with TLS is often 9440."
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "clickhouse"
          },
          "user": {
            "type": "string",
            "description": "ClickHouse user identified with Faraday's Ed25519 SSH public key.",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_\\-.]*$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsClickhouse` type.)\n\nClickHouse options",
        "title": "ClickHouse"
      },
      "ConnectionOptionsDatabricks": {
        "type": "object",
        "required": [
          "catalog",
          "host",
          "http_path",
          "schema",
          "token",
          "type"
        ],
        "properties": {
          "catalog": {
            "type": "string",
            "description": "Unity Catalog catalog Faraday should use.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$"
          },
          "host": {
            "type": "string",
            "description": "Databricks workspace server hostname, without protocol. Copy it from the SQL warehouse Connection details. Example: adb-1234567890123456.1.azuredatabricks.net or xxx.cloud.databricks.com.",
            "format": "hostname",
            "pattern": "^[a-zA-Z0-9\\-.]+\\.(cloud\\.databricks\\.com|gcp\\.databricks\\.com|azuredatabricks\\.net|databricks\\.azure\\.cn|cloud\\.databricks\\.us)$"
          },
          "http_path": {
            "type": "string",
            "description": "SQL warehouse HTTP path from the warehouse Connection details. Example: /sql/1.0/warehouses/abc123def456.",
            "pattern": "^/sql/1\\.0/warehouses/[a-zA-Z0-9]+$"
          },
          "schema": {
            "type": "string",
            "description": "Schema within the catalog Faraday should use.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$"
          },
          "token": {
            "type": "string",
            "description": "Databricks personal access token for a service principal or user Faraday should authenticate as.",
            "pattern": "^.+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks"
          }
        },
        "additionalProperties": false,
        "description": "Databricks options",
        "title": "Databricks"
      },
      "ConnectionOptionsDatabricksDeltaSharing": {
        "type": "object",
        "required": [
          "credentials_json",
          "schema_name",
          "share_name",
          "type"
        ],
        "properties": {
          "credentials_json": {
            "type": "string",
            "description": "The Delta Sharing credentials JSON file contents. Download this file from the activation link provided by Databricks, then paste its contents here, and finally delete the file from your local computer.",
            "pattern": "^\\{.+\\}$",
            "x-secret": true
          },
          "schema_name": {
            "type": "string",
            "description": "The schema name within the Delta Sharing share.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "share_name": {
            "type": "string",
            "description": "The name of the Delta Sharing share.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks_delta_sharing"
          }
        },
        "additionalProperties": false,
        "description": "Databricks Delta Sharing options",
        "title": "Databricks Delta Sharing"
      },
      "ConnectionOptionsDatabricksDeltaSharingMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "credentials_json": {
            "type": "string",
            "description": "The Delta Sharing credentials JSON file contents. Download this file from the activation link provided by Databricks, then paste its contents here, and finally delete the file from your local computer.",
            "pattern": "^\\{.+\\}$",
            "x-secret": true
          },
          "schema_name": {
            "type": "string",
            "description": "The schema name within the Delta Sharing share.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "share_name": {
            "type": "string",
            "description": "The name of the Delta Sharing share.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks_delta_sharing"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsDatabricksDeltaSharing` type.)\n\nDatabricks Delta Sharing options",
        "title": "Databricks Delta Sharing"
      },
      "ConnectionOptionsDatabricksDeltaSharingPost": {
        "type": "object",
        "required": [
          "credentials_json",
          "schema_name",
          "share_name",
          "type"
        ],
        "properties": {
          "credentials_json": {
            "type": "string",
            "description": "The Delta Sharing credentials JSON file contents. Download this file from the activation link provided by Databricks, then paste its contents here, and finally delete the file from your local computer.",
            "pattern": "^\\{.+\\}$",
            "x-secret": true
          },
          "schema_name": {
            "type": "string",
            "description": "The schema name within the Delta Sharing share.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "share_name": {
            "type": "string",
            "description": "The name of the Delta Sharing share.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks_delta_sharing"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsDatabricksDeltaSharing` type.)\n\nDatabricks Delta Sharing options",
        "title": "Databricks Delta Sharing"
      },
      "ConnectionOptionsDatabricksDeltaSharingPut": {
        "type": "object",
        "required": [
          "credentials_json",
          "schema_name",
          "share_name",
          "type"
        ],
        "properties": {
          "credentials_json": {
            "type": "string",
            "description": "The Delta Sharing credentials JSON file contents. Download this file from the activation link provided by Databricks, then paste its contents here, and finally delete the file from your local computer.",
            "pattern": "^\\{.+\\}$",
            "x-secret": true
          },
          "schema_name": {
            "type": "string",
            "description": "The schema name within the Delta Sharing share.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "share_name": {
            "type": "string",
            "description": "The name of the Delta Sharing share.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks_delta_sharing"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsDatabricksDeltaSharing` type.)\n\nDatabricks Delta Sharing options",
        "title": "Databricks Delta Sharing"
      },
      "ConnectionOptionsDatabricksMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "catalog": {
            "type": "string",
            "description": "Unity Catalog catalog Faraday should use.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$"
          },
          "host": {
            "type": "string",
            "description": "Databricks workspace server hostname, without protocol. Copy it from the SQL warehouse Connection details. Example: adb-1234567890123456.1.azuredatabricks.net or xxx.cloud.databricks.com.",
            "format": "hostname",
            "pattern": "^[a-zA-Z0-9\\-.]+\\.(cloud\\.databricks\\.com|gcp\\.databricks\\.com|azuredatabricks\\.net|databricks\\.azure\\.cn|cloud\\.databricks\\.us)$"
          },
          "http_path": {
            "type": "string",
            "description": "SQL warehouse HTTP path from the warehouse Connection details. Example: /sql/1.0/warehouses/abc123def456.",
            "pattern": "^/sql/1\\.0/warehouses/[a-zA-Z0-9]+$"
          },
          "schema": {
            "type": "string",
            "description": "Schema within the catalog Faraday should use.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$"
          },
          "token": {
            "type": "string",
            "description": "Databricks personal access token for a service principal or user Faraday should authenticate as.",
            "pattern": "^.+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsDatabricks` type.)\n\nDatabricks options",
        "title": "Databricks"
      },
      "ConnectionOptionsDatabricksPost": {
        "type": "object",
        "required": [
          "catalog",
          "host",
          "http_path",
          "schema",
          "token",
          "type"
        ],
        "properties": {
          "catalog": {
            "type": "string",
            "description": "Unity Catalog catalog Faraday should use.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$"
          },
          "host": {
            "type": "string",
            "description": "Databricks workspace server hostname, without protocol. Copy it from the SQL warehouse Connection details. Example: adb-1234567890123456.1.azuredatabricks.net or xxx.cloud.databricks.com.",
            "format": "hostname",
            "pattern": "^[a-zA-Z0-9\\-.]+\\.(cloud\\.databricks\\.com|gcp\\.databricks\\.com|azuredatabricks\\.net|databricks\\.azure\\.cn|cloud\\.databricks\\.us)$"
          },
          "http_path": {
            "type": "string",
            "description": "SQL warehouse HTTP path from the warehouse Connection details. Example: /sql/1.0/warehouses/abc123def456.",
            "pattern": "^/sql/1\\.0/warehouses/[a-zA-Z0-9]+$"
          },
          "schema": {
            "type": "string",
            "description": "Schema within the catalog Faraday should use.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$"
          },
          "token": {
            "type": "string",
            "description": "Databricks personal access token for a service principal or user Faraday should authenticate as.",
            "pattern": "^.+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsDatabricks` type.)\n\nDatabricks options",
        "title": "Databricks"
      },
      "ConnectionOptionsDatabricksPut": {
        "type": "object",
        "required": [
          "catalog",
          "host",
          "http_path",
          "schema",
          "token",
          "type"
        ],
        "properties": {
          "catalog": {
            "type": "string",
            "description": "Unity Catalog catalog Faraday should use.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$"
          },
          "host": {
            "type": "string",
            "description": "Databricks workspace server hostname, without protocol. Copy it from the SQL warehouse Connection details. Example: adb-1234567890123456.1.azuredatabricks.net or xxx.cloud.databricks.com.",
            "format": "hostname",
            "pattern": "^[a-zA-Z0-9\\-.]+\\.(cloud\\.databricks\\.com|gcp\\.databricks\\.com|azuredatabricks\\.net|databricks\\.azure\\.cn|cloud\\.databricks\\.us)$"
          },
          "http_path": {
            "type": "string",
            "description": "SQL warehouse HTTP path from the warehouse Connection details. Example: /sql/1.0/warehouses/abc123def456.",
            "pattern": "^/sql/1\\.0/warehouses/[a-zA-Z0-9]+$"
          },
          "schema": {
            "type": "string",
            "description": "Schema within the catalog Faraday should use.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$"
          },
          "token": {
            "type": "string",
            "description": "Databricks personal access token for a service principal or user Faraday should authenticate as.",
            "pattern": "^.+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsDatabricks` type.)\n\nDatabricks options",
        "title": "Databricks"
      },
      "ConnectionOptionsFacebookCustomAudiences": {
        "type": "object",
        "required": [
          "account_id",
          "type"
        ],
        "properties": {
          "account_id": {
            "type": "string",
            "description": "The Facebook ad account ID (numeric).",
            "pattern": "^\\d+$"
          },
          "account_literate": {
            "type": "string",
            "description": "The Facebook ad account literate.",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9- :]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "facebook_custom_audiences"
          }
        },
        "additionalProperties": false,
        "description": "Facebook Custom Audiences options",
        "title": "Facebook Custom Audiences"
      },
      "ConnectionOptionsFacebookCustomAudiencesMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "account_id": {
            "type": "string",
            "description": "The Facebook ad account ID (numeric).",
            "pattern": "^\\d+$"
          },
          "account_literate": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9- :]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The Facebook ad account literate."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "facebook_custom_audiences"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsFacebookCustomAudiences` type.)\n\nFacebook Custom Audiences options",
        "title": "Facebook Custom Audiences"
      },
      "ConnectionOptionsFacebookCustomAudiencesPost": {
        "type": "object",
        "required": [
          "account_id",
          "type"
        ],
        "properties": {
          "account_id": {
            "type": "string",
            "description": "The Facebook ad account ID (numeric).",
            "pattern": "^\\d+$"
          },
          "account_literate": {
            "type": "string",
            "description": "The Facebook ad account literate.",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9- :]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "facebook_custom_audiences"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsFacebookCustomAudiences` type.)\n\nFacebook Custom Audiences options",
        "title": "Facebook Custom Audiences"
      },
      "ConnectionOptionsFacebookCustomAudiencesPut": {
        "type": "object",
        "required": [
          "account_id",
          "type"
        ],
        "properties": {
          "account_id": {
            "type": "string",
            "description": "The Facebook ad account ID (numeric).",
            "pattern": "^\\d+$"
          },
          "account_literate": {
            "type": "string",
            "description": "The Facebook ad account literate.",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9- :]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "facebook_custom_audiences"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsFacebookCustomAudiences` type.)\n\nFacebook Custom Audiences options",
        "title": "Facebook Custom Audiences"
      },
      "ConnectionOptionsGcpCloudSqlMysql": {
        "type": "object",
        "required": [
          "database",
          "instance_connection_name",
          "password",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "instance_connection_name": {
            "type": "string",
            "description": "For use with Cloud SQL proxy. Client must enable Cloud SQL Admin API and give IAM role \"Cloud SQL Client\" to our service account faraday-incoming@production-237317.iam.gserviceaccount.com (Datasets) or faraday-outgoing@production-237317.iam.gserviceaccount.com (Targets).",
            "pattern": "^[-a-z0-9:]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "Google Cloud SQL (MySQL) options",
        "title": "Google Cloud SQL (MySQL)"
      },
      "ConnectionOptionsGcpCloudSqlMysqlMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "instance_connection_name": {
            "type": "string",
            "description": "For use with Cloud SQL proxy. Client must enable Cloud SQL Admin API and give IAM role \"Cloud SQL Client\" to our service account faraday-incoming@production-237317.iam.gserviceaccount.com (Datasets) or faraday-outgoing@production-237317.iam.gserviceaccount.com (Targets).",
            "pattern": "^[-a-z0-9:]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsGcpCloudSqlMysql` type.)\n\nGoogle Cloud SQL (MySQL) options",
        "title": "Google Cloud SQL (MySQL)"
      },
      "ConnectionOptionsGcpCloudSqlMysqlPost": {
        "type": "object",
        "required": [
          "database",
          "instance_connection_name",
          "password",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "instance_connection_name": {
            "type": "string",
            "description": "For use with Cloud SQL proxy. Client must enable Cloud SQL Admin API and give IAM role \"Cloud SQL Client\" to our service account faraday-incoming@production-237317.iam.gserviceaccount.com (Datasets) or faraday-outgoing@production-237317.iam.gserviceaccount.com (Targets).",
            "pattern": "^[-a-z0-9:]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsGcpCloudSqlMysql` type.)\n\nGoogle Cloud SQL (MySQL) options",
        "title": "Google Cloud SQL (MySQL)"
      },
      "ConnectionOptionsGcpCloudSqlMysqlPut": {
        "type": "object",
        "required": [
          "database",
          "instance_connection_name",
          "password",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "instance_connection_name": {
            "type": "string",
            "description": "For use with Cloud SQL proxy. Client must enable Cloud SQL Admin API and give IAM role \"Cloud SQL Client\" to our service account faraday-incoming@production-237317.iam.gserviceaccount.com (Datasets) or faraday-outgoing@production-237317.iam.gserviceaccount.com (Targets).",
            "pattern": "^[-a-z0-9:]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsGcpCloudSqlMysql` type.)\n\nGoogle Cloud SQL (MySQL) options",
        "title": "Google Cloud SQL (MySQL)"
      },
      "ConnectionOptionsGcpCloudSqlPostgres": {
        "type": "object",
        "required": [
          "database",
          "instance_connection_name",
          "password",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "instance_connection_name": {
            "type": "string",
            "description": "For use with Cloud SQL proxy. Client must enable Cloud SQL Admin API and give IAM role \"Cloud SQL Client\" to our service account faraday-incoming@production-237317.iam.gserviceaccount.com (Datasets) or faraday-outgoing@production-237317.iam.gserviceaccount.com (Targets).",
            "pattern": "^[-a-z0-9:]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "Google Cloud SQL (Postgres) options",
        "title": "Google Cloud SQL (Postgres)"
      },
      "ConnectionOptionsGcpCloudSqlPostgresMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "instance_connection_name": {
            "type": "string",
            "description": "For use with Cloud SQL proxy. Client must enable Cloud SQL Admin API and give IAM role \"Cloud SQL Client\" to our service account faraday-incoming@production-237317.iam.gserviceaccount.com (Datasets) or faraday-outgoing@production-237317.iam.gserviceaccount.com (Targets).",
            "pattern": "^[-a-z0-9:]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsGcpCloudSqlPostgres` type.)\n\nGoogle Cloud SQL (Postgres) options",
        "title": "Google Cloud SQL (Postgres)"
      },
      "ConnectionOptionsGcpCloudSqlPostgresPost": {
        "type": "object",
        "required": [
          "database",
          "instance_connection_name",
          "password",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "instance_connection_name": {
            "type": "string",
            "description": "For use with Cloud SQL proxy. Client must enable Cloud SQL Admin API and give IAM role \"Cloud SQL Client\" to our service account faraday-incoming@production-237317.iam.gserviceaccount.com (Datasets) or faraday-outgoing@production-237317.iam.gserviceaccount.com (Targets).",
            "pattern": "^[-a-z0-9:]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsGcpCloudSqlPostgres` type.)\n\nGoogle Cloud SQL (Postgres) options",
        "title": "Google Cloud SQL (Postgres)"
      },
      "ConnectionOptionsGcpCloudSqlPostgresPut": {
        "type": "object",
        "required": [
          "database",
          "instance_connection_name",
          "password",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "instance_connection_name": {
            "type": "string",
            "description": "For use with Cloud SQL proxy. Client must enable Cloud SQL Admin API and give IAM role \"Cloud SQL Client\" to our service account faraday-incoming@production-237317.iam.gserviceaccount.com (Datasets) or faraday-outgoing@production-237317.iam.gserviceaccount.com (Targets).",
            "pattern": "^[-a-z0-9:]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsGcpCloudSqlPostgres` type.)\n\nGoogle Cloud SQL (Postgres) options",
        "title": "Google Cloud SQL (Postgres)"
      },
      "ConnectionOptionsGcpCloudSqlSqlServer": {
        "type": "object",
        "required": [
          "database",
          "instance_connection_name",
          "password",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "instance_connection_name": {
            "type": "string",
            "description": "For use with Cloud SQL proxy. Client must enable Cloud SQL Admin API and give IAM role \"Cloud SQL Client\" to our service account faraday-incoming@production-237317.iam.gserviceaccount.com (Datasets) or faraday-outgoing@production-237317.iam.gserviceaccount.com (Targets).",
            "pattern": "^[-a-z0-9:]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "Google Cloud SQL (SQL Server) options",
        "title": "Google Cloud SQL (SQL Server)"
      },
      "ConnectionOptionsGcpCloudSqlSqlServerMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "instance_connection_name": {
            "type": "string",
            "description": "For use with Cloud SQL proxy. Client must enable Cloud SQL Admin API and give IAM role \"Cloud SQL Client\" to our service account faraday-incoming@production-237317.iam.gserviceaccount.com (Datasets) or faraday-outgoing@production-237317.iam.gserviceaccount.com (Targets).",
            "pattern": "^[-a-z0-9:]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "schema": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z0-9_]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Schema"
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsGcpCloudSqlSqlServer` type.)\n\nGoogle Cloud SQL (SQL Server) options",
        "title": "Google Cloud SQL (SQL Server)"
      },
      "ConnectionOptionsGcpCloudSqlSqlServerPost": {
        "type": "object",
        "required": [
          "database",
          "instance_connection_name",
          "password",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "instance_connection_name": {
            "type": "string",
            "description": "For use with Cloud SQL proxy. Client must enable Cloud SQL Admin API and give IAM role \"Cloud SQL Client\" to our service account faraday-incoming@production-237317.iam.gserviceaccount.com (Datasets) or faraday-outgoing@production-237317.iam.gserviceaccount.com (Targets).",
            "pattern": "^[-a-z0-9:]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsGcpCloudSqlSqlServer` type.)\n\nGoogle Cloud SQL (SQL Server) options",
        "title": "Google Cloud SQL (SQL Server)"
      },
      "ConnectionOptionsGcpCloudSqlSqlServerPut": {
        "type": "object",
        "required": [
          "database",
          "instance_connection_name",
          "password",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "instance_connection_name": {
            "type": "string",
            "description": "For use with Cloud SQL proxy. Client must enable Cloud SQL Admin API and give IAM role \"Cloud SQL Client\" to our service account faraday-incoming@production-237317.iam.gserviceaccount.com (Datasets) or faraday-outgoing@production-237317.iam.gserviceaccount.com (Targets).",
            "pattern": "^[-a-z0-9:]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsGcpCloudSqlSqlServer` type.)\n\nGoogle Cloud SQL (SQL Server) options",
        "title": "Google Cloud SQL (SQL Server)"
      },
      "ConnectionOptionsGcpGcsCsv": {
        "type": "object",
        "required": [
          "bucket_name",
          "project_id",
          "type"
        ],
        "properties": {
          "bucket_name": {
            "type": "string",
            "description": "Bucket name",
            "pattern": "^[a-z][a-z0-9-/]*[a-z0-9-]+$"
          },
          "gcp_service_account_email": {
            "type": "string",
            "description": "Google Cloud service account Faraday generated for this connection. Grant this account access on your bucket, then force-update the connection. Unique per Faraday GCS connection.",
            "pattern": "^[a-z0-9-]+@[a-z0-9-]+\\.iam\\.gserviceaccount\\.com$"
          },
          "project_id": {
            "type": "string",
            "description": "Project ID",
            "pattern": "^[a-z][-0-9a-z]{5,29}$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_gcs_csv"
          }
        },
        "additionalProperties": false,
        "description": "GCS options",
        "title": "GCS"
      },
      "ConnectionOptionsGcpGcsCsvMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "bucket_name": {
            "type": "string",
            "description": "Bucket name",
            "pattern": "^[a-z][a-z0-9-/]*[a-z0-9-]+$"
          },
          "project_id": {
            "type": "string",
            "description": "Project ID",
            "pattern": "^[a-z][-0-9a-z]{5,29}$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_gcs_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsGcpGcsCsv` type.)\n\nGCS options",
        "title": "GCS"
      },
      "ConnectionOptionsGcpGcsCsvPost": {
        "type": "object",
        "required": [
          "bucket_name",
          "project_id",
          "type"
        ],
        "properties": {
          "bucket_name": {
            "type": "string",
            "description": "Bucket name",
            "pattern": "^[a-z][a-z0-9-/]*[a-z0-9-]+$"
          },
          "project_id": {
            "type": "string",
            "description": "Project ID",
            "pattern": "^[a-z][-0-9a-z]{5,29}$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_gcs_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsGcpGcsCsv` type.)\n\nGCS options",
        "title": "GCS"
      },
      "ConnectionOptionsGcpGcsCsvPut": {
        "type": "object",
        "required": [
          "bucket_name",
          "project_id",
          "type"
        ],
        "properties": {
          "bucket_name": {
            "type": "string",
            "description": "Bucket name",
            "pattern": "^[a-z][a-z0-9-/]*[a-z0-9-]+$"
          },
          "project_id": {
            "type": "string",
            "description": "Project ID",
            "pattern": "^[a-z][-0-9a-z]{5,29}$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_gcs_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsGcpGcsCsv` type.)\n\nGCS options",
        "title": "GCS"
      },
      "ConnectionOptionsGoogleAds": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "customer_id": {
            "type": "string",
            "description": "Customer ID for the Google Ads connection",
            "pattern": "^\\d{3}-\\d{3}-\\d{4}$"
          },
          "password": {
            "type": "string",
            "description": "Password for the Google Ads connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "google_ads"
          },
          "username": {
            "type": "string",
            "description": "Username for the Google Ads connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "Google Ads options",
        "title": "Google Ads"
      },
      "ConnectionOptionsGoogleAdsMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "customer_id": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\d{3}-\\d{3}-\\d{4}$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Customer ID for the Google Ads connection"
          },
          "password": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$",
                "x-secret": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Password for the Google Ads connection"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "google_ads"
          },
          "username": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Username for the Google Ads connection"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsGoogleAds` type.)\n\nGoogle Ads options",
        "title": "Google Ads"
      },
      "ConnectionOptionsGoogleAdsPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "customer_id": {
            "type": "string",
            "description": "Customer ID for the Google Ads connection",
            "pattern": "^\\d{3}-\\d{3}-\\d{4}$"
          },
          "password": {
            "type": "string",
            "description": "Password for the Google Ads connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "google_ads"
          },
          "username": {
            "type": "string",
            "description": "Username for the Google Ads connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsGoogleAds` type.)\n\nGoogle Ads options",
        "title": "Google Ads"
      },
      "ConnectionOptionsGoogleAdsPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "customer_id": {
            "type": "string",
            "description": "Customer ID for the Google Ads connection",
            "pattern": "^\\d{3}-\\d{3}-\\d{4}$"
          },
          "password": {
            "type": "string",
            "description": "Password for the Google Ads connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "google_ads"
          },
          "username": {
            "type": "string",
            "description": "Username for the Google Ads connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsGoogleAds` type.)\n\nGoogle Ads options",
        "title": "Google Ads"
      },
      "ConnectionOptionsHostedCsv": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hosted_csv"
          }
        },
        "additionalProperties": false,
        "description": "CSV options",
        "title": "CSV"
      },
      "ConnectionOptionsHostedCsvMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hosted_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsHostedCsv` type.)\n\nCSV options",
        "title": "CSV"
      },
      "ConnectionOptionsHostedCsvPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hosted_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsHostedCsv` type.)\n\nCSV options",
        "title": "CSV"
      },
      "ConnectionOptionsHostedCsvPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hosted_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsHostedCsv` type.)\n\nCSV options",
        "title": "CSV"
      },
      "ConnectionOptionsHubspot": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the HubSpot connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hubspot"
          },
          "username": {
            "type": "string",
            "description": "Username for the HubSpot connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "HubSpot options",
        "title": "HubSpot"
      },
      "ConnectionOptionsHubspotMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$",
                "x-secret": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Password for the HubSpot connection"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hubspot"
          },
          "username": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Username for the HubSpot connection"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsHubspot` type.)\n\nHubSpot options",
        "title": "HubSpot"
      },
      "ConnectionOptionsHubspotPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the HubSpot connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hubspot"
          },
          "username": {
            "type": "string",
            "description": "Username for the HubSpot connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsHubspot` type.)\n\nHubSpot options",
        "title": "HubSpot"
      },
      "ConnectionOptionsHubspotPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the HubSpot connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hubspot"
          },
          "username": {
            "type": "string",
            "description": "Username for the HubSpot connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsHubspot` type.)\n\nHubSpot options",
        "title": "HubSpot"
      },
      "ConnectionOptionsIterable": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "iterable"
          },
          "webhook_url": {
            "type": "string",
            "description": "Webhook URL for the Iterable connection",
            "pattern": "^https?://.+"
          }
        },
        "additionalProperties": false,
        "description": "Iterable options",
        "title": "Iterable"
      },
      "ConnectionOptionsIterableMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "iterable"
          },
          "webhook_url": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^https?://.+"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Webhook URL for the Iterable connection"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsIterable` type.)\n\nIterable options",
        "title": "Iterable"
      },
      "ConnectionOptionsIterablePost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "iterable"
          },
          "webhook_url": {
            "type": "string",
            "description": "Webhook URL for the Iterable connection",
            "pattern": "^https?://.+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsIterable` type.)\n\nIterable options",
        "title": "Iterable"
      },
      "ConnectionOptionsIterablePut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "iterable"
          },
          "webhook_url": {
            "type": "string",
            "description": "Webhook URL for the Iterable connection",
            "pattern": "^https?://.+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsIterable` type.)\n\nIterable options",
        "title": "Iterable"
      },
      "ConnectionOptionsKlaviyo": {
        "type": "object",
        "required": [
          "api_key",
          "private_api_key",
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "The public API key associated with your account. Also referred to as the Site ID.",
            "pattern": "^\\S+$"
          },
          "private_api_key": {
            "type": "string",
            "description": "A private API key associated with your account. These can be generated as needed using Klaviyo's settings pages.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "klaviyo"
          }
        },
        "additionalProperties": false,
        "description": "Klaviyo options",
        "title": "Klaviyo"
      },
      "ConnectionOptionsKlaviyoMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "The public API key associated with your account. Also referred to as the Site ID.",
            "pattern": "^\\S+$"
          },
          "private_api_key": {
            "type": "string",
            "description": "A private API key associated with your account. These can be generated as needed using Klaviyo's settings pages.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "klaviyo"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsKlaviyo` type.)\n\nKlaviyo options",
        "title": "Klaviyo"
      },
      "ConnectionOptionsKlaviyoPost": {
        "type": "object",
        "required": [
          "api_key",
          "private_api_key",
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "The public API key associated with your account. Also referred to as the Site ID.",
            "pattern": "^\\S+$"
          },
          "private_api_key": {
            "type": "string",
            "description": "A private API key associated with your account. These can be generated as needed using Klaviyo's settings pages.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "klaviyo"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsKlaviyo` type.)\n\nKlaviyo options",
        "title": "Klaviyo"
      },
      "ConnectionOptionsKlaviyoPut": {
        "type": "object",
        "required": [
          "api_key",
          "private_api_key",
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "The public API key associated with your account. Also referred to as the Site ID.",
            "pattern": "^\\S+$"
          },
          "private_api_key": {
            "type": "string",
            "description": "A private API key associated with your account. These can be generated as needed using Klaviyo's settings pages.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "klaviyo"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsKlaviyo` type.)\n\nKlaviyo options",
        "title": "Klaviyo"
      },
      "ConnectionOptionsLinkedinAds": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the LinkedIn Ads connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "linkedin_ads"
          },
          "username": {
            "type": "string",
            "description": "Username for the LinkedIn Ads connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "LinkedIn Ads options",
        "title": "LinkedIn Ads"
      },
      "ConnectionOptionsLinkedinAdsMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$",
                "x-secret": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Password for the LinkedIn Ads connection"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "linkedin_ads"
          },
          "username": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Username for the LinkedIn Ads connection"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsLinkedinAds` type.)\n\nLinkedIn Ads options",
        "title": "LinkedIn Ads"
      },
      "ConnectionOptionsLinkedinAdsPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the LinkedIn Ads connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "linkedin_ads"
          },
          "username": {
            "type": "string",
            "description": "Username for the LinkedIn Ads connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsLinkedinAds` type.)\n\nLinkedIn Ads options",
        "title": "LinkedIn Ads"
      },
      "ConnectionOptionsLinkedinAdsPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the LinkedIn Ads connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "linkedin_ads"
          },
          "username": {
            "type": "string",
            "description": "Username for the LinkedIn Ads connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsLinkedinAds` type.)\n\nLinkedIn Ads options",
        "title": "LinkedIn Ads"
      },
      "ConnectionOptionsLookupApi": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "lookup_api"
          }
        },
        "additionalProperties": false,
        "description": "Lookup API options",
        "title": "Lookup API"
      },
      "ConnectionOptionsLookupApiMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "lookup_api"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsLookupApi` type.)\n\nLookup API options",
        "title": "Lookup API"
      },
      "ConnectionOptionsLookupApiPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "lookup_api"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsLookupApi` type.)\n\nLookup API options",
        "title": "Lookup API"
      },
      "ConnectionOptionsLookupApiPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "lookup_api"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsLookupApi` type.)\n\nLookup API options",
        "title": "Lookup API"
      },
      "ConnectionOptionsMerge": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "merge"
          }
        },
        "additionalProperties": false,
        "description": "Merge Dataset options",
        "title": "Merge Dataset"
      },
      "ConnectionOptionsMergeMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "merge"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsMerge` type.)\n\nMerge Dataset options",
        "title": "Merge Dataset"
      },
      "ConnectionOptionsMergePatch": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ConnectionOptionsAthenaMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsAuroraMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsAuroraPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRdsMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRdsPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRdsSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRedshiftServerlessMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAzureSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsBigQueryMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsClassicMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsClickhouseMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsDatabricksMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsDatabricksDeltaSharingMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsFacebookCustomAudiencesMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpCloudSqlMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpCloudSqlPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpCloudSqlSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpGcsCsvMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGoogleAdsMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsHostedCsvMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsHubspotMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsIterableMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsKlaviyoMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsLinkedinAdsMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsLookupApiMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsMergeMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsMotherduckMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsPinterestAdsMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsPoplarMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsRechargeMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsRedshiftMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsS3CsvMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSalesforceMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSalesforceMarketingCloudMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSegmentMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSftpMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsShopifyMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSnowflakeMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsStripeMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsTheTradeDeskMergePatch"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsTiktokMergePatch"
          }
        ],
        "description": "The connection-specific options. These vary by connection type.\n",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/ConnectionOptionsAthenaMergePatch",
            "aws_aurora_mysql": "#/components/schemas/ConnectionOptionsAwsAuroraMysqlMergePatch",
            "aws_aurora_postgres": "#/components/schemas/ConnectionOptionsAwsAuroraPostgresMergePatch",
            "aws_rds_mysql": "#/components/schemas/ConnectionOptionsAwsRdsMysqlMergePatch",
            "aws_rds_postgres": "#/components/schemas/ConnectionOptionsAwsRdsPostgresMergePatch",
            "aws_rds_sql_server": "#/components/schemas/ConnectionOptionsAwsRdsSqlServerMergePatch",
            "aws_redshift_serverless": "#/components/schemas/ConnectionOptionsAwsRedshiftServerlessMergePatch",
            "azure_sql_server": "#/components/schemas/ConnectionOptionsAzureSqlServerMergePatch",
            "bigquery": "#/components/schemas/ConnectionOptionsBigQueryMergePatch",
            "classic": "#/components/schemas/ConnectionOptionsClassicMergePatch",
            "clickhouse": "#/components/schemas/ConnectionOptionsClickhouseMergePatch",
            "databricks": "#/components/schemas/ConnectionOptionsDatabricksMergePatch",
            "databricks_delta_sharing": "#/components/schemas/ConnectionOptionsDatabricksDeltaSharingMergePatch",
            "facebook_custom_audiences": "#/components/schemas/ConnectionOptionsFacebookCustomAudiencesMergePatch",
            "gcp_cloud_sql_mysql": "#/components/schemas/ConnectionOptionsGcpCloudSqlMysqlMergePatch",
            "gcp_cloud_sql_postgres": "#/components/schemas/ConnectionOptionsGcpCloudSqlPostgresMergePatch",
            "gcp_cloud_sql_sql_server": "#/components/schemas/ConnectionOptionsGcpCloudSqlSqlServerMergePatch",
            "gcp_gcs_csv": "#/components/schemas/ConnectionOptionsGcpGcsCsvMergePatch",
            "google_ads": "#/components/schemas/ConnectionOptionsGoogleAdsMergePatch",
            "hosted_csv": "#/components/schemas/ConnectionOptionsHostedCsvMergePatch",
            "hubspot": "#/components/schemas/ConnectionOptionsHubspotMergePatch",
            "iterable": "#/components/schemas/ConnectionOptionsIterableMergePatch",
            "klaviyo": "#/components/schemas/ConnectionOptionsKlaviyoMergePatch",
            "linkedin_ads": "#/components/schemas/ConnectionOptionsLinkedinAdsMergePatch",
            "lookup_api": "#/components/schemas/ConnectionOptionsLookupApiMergePatch",
            "merge": "#/components/schemas/ConnectionOptionsMergeMergePatch",
            "motherduck": "#/components/schemas/ConnectionOptionsMotherduckMergePatch",
            "mysql": "#/components/schemas/ConnectionOptionsMysqlMergePatch",
            "pinterest_ads": "#/components/schemas/ConnectionOptionsPinterestAdsMergePatch",
            "poplar": "#/components/schemas/ConnectionOptionsPoplarMergePatch",
            "postgres": "#/components/schemas/ConnectionOptionsPostgresMergePatch",
            "recharge": "#/components/schemas/ConnectionOptionsRechargeMergePatch",
            "redshift": "#/components/schemas/ConnectionOptionsRedshiftMergePatch",
            "s3_csv": "#/components/schemas/ConnectionOptionsS3CsvMergePatch",
            "salesforce": "#/components/schemas/ConnectionOptionsSalesforceMergePatch",
            "salesforce_marketing_cloud": "#/components/schemas/ConnectionOptionsSalesforceMarketingCloudMergePatch",
            "segment": "#/components/schemas/ConnectionOptionsSegmentMergePatch",
            "sftp": "#/components/schemas/ConnectionOptionsSftpMergePatch",
            "shopify": "#/components/schemas/ConnectionOptionsShopifyMergePatch",
            "snowflake": "#/components/schemas/ConnectionOptionsSnowflakeMergePatch",
            "sql_server": "#/components/schemas/ConnectionOptionsSqlServerMergePatch",
            "stripe": "#/components/schemas/ConnectionOptionsStripeMergePatch",
            "the_trade_desk": "#/components/schemas/ConnectionOptionsTheTradeDeskMergePatch",
            "tiktok": "#/components/schemas/ConnectionOptionsTiktokMergePatch"
          }
        }
      },
      "ConnectionOptionsMergePost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "merge"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsMerge` type.)\n\nMerge Dataset options",
        "title": "Merge Dataset"
      },
      "ConnectionOptionsMergePut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "merge"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsMerge` type.)\n\nMerge Dataset options",
        "title": "Merge Dataset"
      },
      "ConnectionOptionsMotherduck": {
        "type": "object",
        "required": [
          "database",
          "token",
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "token": {
            "type": "string",
            "description": "Access token from MotherDuck Settings. Used to authenticate with MotherDuck.",
            "pattern": "^.+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "motherduck"
          }
        },
        "additionalProperties": false,
        "description": "MotherDuck options",
        "title": "MotherDuck"
      },
      "ConnectionOptionsMotherduckMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "token": {
            "type": "string",
            "description": "Access token from MotherDuck Settings. Used to authenticate with MotherDuck.",
            "pattern": "^.+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "motherduck"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsMotherduck` type.)\n\nMotherDuck options",
        "title": "MotherDuck"
      },
      "ConnectionOptionsMotherduckPost": {
        "type": "object",
        "required": [
          "database",
          "token",
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "token": {
            "type": "string",
            "description": "Access token from MotherDuck Settings. Used to authenticate with MotherDuck.",
            "pattern": "^.+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "motherduck"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsMotherduck` type.)\n\nMotherDuck options",
        "title": "MotherDuck"
      },
      "ConnectionOptionsMotherduckPut": {
        "type": "object",
        "required": [
          "database",
          "token",
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "token": {
            "type": "string",
            "description": "Access token from MotherDuck Settings. Used to authenticate with MotherDuck.",
            "pattern": "^.+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "motherduck"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsMotherduck` type.)\n\nMotherDuck options",
        "title": "MotherDuck"
      },
      "ConnectionOptionsMysql": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "MySQL options",
        "title": "MySQL"
      },
      "ConnectionOptionsMysqlMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsMysql` type.)\n\nMySQL options",
        "title": "MySQL"
      },
      "ConnectionOptionsMysqlPost": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsMysql` type.)\n\nMySQL options",
        "title": "MySQL"
      },
      "ConnectionOptionsMysqlPut": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "mysql"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsMysql` type.)\n\nMySQL options",
        "title": "MySQL"
      },
      "ConnectionOptionsPinterestAds": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "business_id": {
            "type": "string",
            "description": "The business ID is located below your business name on your Business Access page.",
            "pattern": "^\\S+$"
          },
          "password": {
            "type": "string",
            "description": "Password for the Pinterest Ads connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "pinterest_ads"
          },
          "username": {
            "type": "string",
            "description": "Username for the Pinterest Ads connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "Pinterest Ads options",
        "title": "Pinterest Ads"
      },
      "ConnectionOptionsPinterestAdsMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "business_id": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The business ID is located below your business name on your Business Access page."
          },
          "password": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$",
                "x-secret": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Password for the Pinterest Ads connection"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "pinterest_ads"
          },
          "username": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Username for the Pinterest Ads connection"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsPinterestAds` type.)\n\nPinterest Ads options",
        "title": "Pinterest Ads"
      },
      "ConnectionOptionsPinterestAdsPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "business_id": {
            "type": "string",
            "description": "The business ID is located below your business name on your Business Access page.",
            "pattern": "^\\S+$"
          },
          "password": {
            "type": "string",
            "description": "Password for the Pinterest Ads connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "pinterest_ads"
          },
          "username": {
            "type": "string",
            "description": "Username for the Pinterest Ads connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsPinterestAds` type.)\n\nPinterest Ads options",
        "title": "Pinterest Ads"
      },
      "ConnectionOptionsPinterestAdsPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "business_id": {
            "type": "string",
            "description": "The business ID is located below your business name on your Business Access page.",
            "pattern": "^\\S+$"
          },
          "password": {
            "type": "string",
            "description": "Password for the Pinterest Ads connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "pinterest_ads"
          },
          "username": {
            "type": "string",
            "description": "Username for the Pinterest Ads connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsPinterestAds` type.)\n\nPinterest Ads options",
        "title": "Pinterest Ads"
      },
      "ConnectionOptionsPoplar": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "poplar"
          }
        },
        "additionalProperties": false,
        "description": "Poplar options",
        "title": "Poplar"
      },
      "ConnectionOptionsPoplarMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "poplar"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsPoplar` type.)\n\nPoplar options",
        "title": "Poplar"
      },
      "ConnectionOptionsPoplarPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "poplar"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsPoplar` type.)\n\nPoplar options",
        "title": "Poplar"
      },
      "ConnectionOptionsPoplarPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "poplar"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsPoplar` type.)\n\nPoplar options",
        "title": "Poplar"
      },
      "ConnectionOptionsPost": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ConnectionOptionsAthenaPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsAuroraMysqlPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsAuroraPostgresPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRdsMysqlPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRdsPostgresPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRdsSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRedshiftServerlessPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAzureSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsBigQueryPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsClassicPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsClickhousePost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsDatabricksPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsDatabricksDeltaSharingPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsFacebookCustomAudiencesPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpCloudSqlMysqlPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpCloudSqlPostgresPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpCloudSqlSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpGcsCsvPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGoogleAdsPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsHostedCsvPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsHubspotPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsIterablePost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsKlaviyoPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsLinkedinAdsPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsLookupApiPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsMergePost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsMotherduckPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsMysqlPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsPinterestAdsPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsPoplarPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsPostgresPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsRechargePost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsRedshiftPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsS3CsvPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSalesforcePost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSalesforceMarketingCloudPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSegmentPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSftpPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsShopifyPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSnowflakePost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsStripePost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsTheTradeDeskPost"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsTiktokPost"
          }
        ],
        "description": "The connection-specific options. These vary by connection type.\n",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/ConnectionOptionsAthenaPost",
            "aws_aurora_mysql": "#/components/schemas/ConnectionOptionsAwsAuroraMysqlPost",
            "aws_aurora_postgres": "#/components/schemas/ConnectionOptionsAwsAuroraPostgresPost",
            "aws_rds_mysql": "#/components/schemas/ConnectionOptionsAwsRdsMysqlPost",
            "aws_rds_postgres": "#/components/schemas/ConnectionOptionsAwsRdsPostgresPost",
            "aws_rds_sql_server": "#/components/schemas/ConnectionOptionsAwsRdsSqlServerPost",
            "aws_redshift_serverless": "#/components/schemas/ConnectionOptionsAwsRedshiftServerlessPost",
            "azure_sql_server": "#/components/schemas/ConnectionOptionsAzureSqlServerPost",
            "bigquery": "#/components/schemas/ConnectionOptionsBigQueryPost",
            "classic": "#/components/schemas/ConnectionOptionsClassicPost",
            "clickhouse": "#/components/schemas/ConnectionOptionsClickhousePost",
            "databricks": "#/components/schemas/ConnectionOptionsDatabricksPost",
            "databricks_delta_sharing": "#/components/schemas/ConnectionOptionsDatabricksDeltaSharingPost",
            "facebook_custom_audiences": "#/components/schemas/ConnectionOptionsFacebookCustomAudiencesPost",
            "gcp_cloud_sql_mysql": "#/components/schemas/ConnectionOptionsGcpCloudSqlMysqlPost",
            "gcp_cloud_sql_postgres": "#/components/schemas/ConnectionOptionsGcpCloudSqlPostgresPost",
            "gcp_cloud_sql_sql_server": "#/components/schemas/ConnectionOptionsGcpCloudSqlSqlServerPost",
            "gcp_gcs_csv": "#/components/schemas/ConnectionOptionsGcpGcsCsvPost",
            "google_ads": "#/components/schemas/ConnectionOptionsGoogleAdsPost",
            "hosted_csv": "#/components/schemas/ConnectionOptionsHostedCsvPost",
            "hubspot": "#/components/schemas/ConnectionOptionsHubspotPost",
            "iterable": "#/components/schemas/ConnectionOptionsIterablePost",
            "klaviyo": "#/components/schemas/ConnectionOptionsKlaviyoPost",
            "linkedin_ads": "#/components/schemas/ConnectionOptionsLinkedinAdsPost",
            "lookup_api": "#/components/schemas/ConnectionOptionsLookupApiPost",
            "merge": "#/components/schemas/ConnectionOptionsMergePost",
            "motherduck": "#/components/schemas/ConnectionOptionsMotherduckPost",
            "mysql": "#/components/schemas/ConnectionOptionsMysqlPost",
            "pinterest_ads": "#/components/schemas/ConnectionOptionsPinterestAdsPost",
            "poplar": "#/components/schemas/ConnectionOptionsPoplarPost",
            "postgres": "#/components/schemas/ConnectionOptionsPostgresPost",
            "recharge": "#/components/schemas/ConnectionOptionsRechargePost",
            "redshift": "#/components/schemas/ConnectionOptionsRedshiftPost",
            "s3_csv": "#/components/schemas/ConnectionOptionsS3CsvPost",
            "salesforce": "#/components/schemas/ConnectionOptionsSalesforcePost",
            "salesforce_marketing_cloud": "#/components/schemas/ConnectionOptionsSalesforceMarketingCloudPost",
            "segment": "#/components/schemas/ConnectionOptionsSegmentPost",
            "sftp": "#/components/schemas/ConnectionOptionsSftpPost",
            "shopify": "#/components/schemas/ConnectionOptionsShopifyPost",
            "snowflake": "#/components/schemas/ConnectionOptionsSnowflakePost",
            "sql_server": "#/components/schemas/ConnectionOptionsSqlServerPost",
            "stripe": "#/components/schemas/ConnectionOptionsStripePost",
            "the_trade_desk": "#/components/schemas/ConnectionOptionsTheTradeDeskPost",
            "tiktok": "#/components/schemas/ConnectionOptionsTiktokPost"
          }
        }
      },
      "ConnectionOptionsPostgres": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "Postgres options",
        "title": "Postgres"
      },
      "ConnectionOptionsPostgresMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsPostgres` type.)\n\nPostgres options",
        "title": "Postgres"
      },
      "ConnectionOptionsPostgresPost": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsPostgres` type.)\n\nPostgres options",
        "title": "Postgres"
      },
      "ConnectionOptionsPostgresPut": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "postgres"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsPostgres` type.)\n\nPostgres options",
        "title": "Postgres"
      },
      "ConnectionOptionsPut": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ConnectionOptionsAthenaPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsAuroraMysqlPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsAuroraPostgresPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRdsMysqlPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRdsPostgresPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRdsSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAwsRedshiftServerlessPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsAzureSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsBigQueryPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsClassicPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsClickhousePut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsDatabricksPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsDatabricksDeltaSharingPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsFacebookCustomAudiencesPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpCloudSqlMysqlPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpCloudSqlPostgresPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpCloudSqlSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGcpGcsCsvPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsGoogleAdsPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsHostedCsvPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsHubspotPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsIterablePut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsKlaviyoPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsLinkedinAdsPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsLookupApiPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsMergePut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsMotherduckPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsMysqlPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsPinterestAdsPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsPoplarPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsPostgresPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsRechargePut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsRedshiftPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsS3CsvPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSalesforcePut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSalesforceMarketingCloudPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSegmentPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSftpPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsShopifyPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSnowflakePut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsStripePut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsTheTradeDeskPut"
          },
          {
            "$ref": "#/components/schemas/ConnectionOptionsTiktokPut"
          }
        ],
        "description": "The connection-specific options. These vary by connection type.\n",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/ConnectionOptionsAthenaPut",
            "aws_aurora_mysql": "#/components/schemas/ConnectionOptionsAwsAuroraMysqlPut",
            "aws_aurora_postgres": "#/components/schemas/ConnectionOptionsAwsAuroraPostgresPut",
            "aws_rds_mysql": "#/components/schemas/ConnectionOptionsAwsRdsMysqlPut",
            "aws_rds_postgres": "#/components/schemas/ConnectionOptionsAwsRdsPostgresPut",
            "aws_rds_sql_server": "#/components/schemas/ConnectionOptionsAwsRdsSqlServerPut",
            "aws_redshift_serverless": "#/components/schemas/ConnectionOptionsAwsRedshiftServerlessPut",
            "azure_sql_server": "#/components/schemas/ConnectionOptionsAzureSqlServerPut",
            "bigquery": "#/components/schemas/ConnectionOptionsBigQueryPut",
            "classic": "#/components/schemas/ConnectionOptionsClassicPut",
            "clickhouse": "#/components/schemas/ConnectionOptionsClickhousePut",
            "databricks": "#/components/schemas/ConnectionOptionsDatabricksPut",
            "databricks_delta_sharing": "#/components/schemas/ConnectionOptionsDatabricksDeltaSharingPut",
            "facebook_custom_audiences": "#/components/schemas/ConnectionOptionsFacebookCustomAudiencesPut",
            "gcp_cloud_sql_mysql": "#/components/schemas/ConnectionOptionsGcpCloudSqlMysqlPut",
            "gcp_cloud_sql_postgres": "#/components/schemas/ConnectionOptionsGcpCloudSqlPostgresPut",
            "gcp_cloud_sql_sql_server": "#/components/schemas/ConnectionOptionsGcpCloudSqlSqlServerPut",
            "gcp_gcs_csv": "#/components/schemas/ConnectionOptionsGcpGcsCsvPut",
            "google_ads": "#/components/schemas/ConnectionOptionsGoogleAdsPut",
            "hosted_csv": "#/components/schemas/ConnectionOptionsHostedCsvPut",
            "hubspot": "#/components/schemas/ConnectionOptionsHubspotPut",
            "iterable": "#/components/schemas/ConnectionOptionsIterablePut",
            "klaviyo": "#/components/schemas/ConnectionOptionsKlaviyoPut",
            "linkedin_ads": "#/components/schemas/ConnectionOptionsLinkedinAdsPut",
            "lookup_api": "#/components/schemas/ConnectionOptionsLookupApiPut",
            "merge": "#/components/schemas/ConnectionOptionsMergePut",
            "motherduck": "#/components/schemas/ConnectionOptionsMotherduckPut",
            "mysql": "#/components/schemas/ConnectionOptionsMysqlPut",
            "pinterest_ads": "#/components/schemas/ConnectionOptionsPinterestAdsPut",
            "poplar": "#/components/schemas/ConnectionOptionsPoplarPut",
            "postgres": "#/components/schemas/ConnectionOptionsPostgresPut",
            "recharge": "#/components/schemas/ConnectionOptionsRechargePut",
            "redshift": "#/components/schemas/ConnectionOptionsRedshiftPut",
            "s3_csv": "#/components/schemas/ConnectionOptionsS3CsvPut",
            "salesforce": "#/components/schemas/ConnectionOptionsSalesforcePut",
            "salesforce_marketing_cloud": "#/components/schemas/ConnectionOptionsSalesforceMarketingCloudPut",
            "segment": "#/components/schemas/ConnectionOptionsSegmentPut",
            "sftp": "#/components/schemas/ConnectionOptionsSftpPut",
            "shopify": "#/components/schemas/ConnectionOptionsShopifyPut",
            "snowflake": "#/components/schemas/ConnectionOptionsSnowflakePut",
            "sql_server": "#/components/schemas/ConnectionOptionsSqlServerPut",
            "stripe": "#/components/schemas/ConnectionOptionsStripePut",
            "the_trade_desk": "#/components/schemas/ConnectionOptionsTheTradeDeskPut",
            "tiktok": "#/components/schemas/ConnectionOptionsTiktokPut"
          }
        }
      },
      "ConnectionOptionsRecharge": {
        "type": "object",
        "required": [
          "api_key",
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "API Key for the Recharge connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "recharge"
          }
        },
        "additionalProperties": false,
        "description": "Recharge options",
        "title": "Recharge"
      },
      "ConnectionOptionsRechargeMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "API Key for the Recharge connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "recharge"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsRecharge` type.)\n\nRecharge options",
        "title": "Recharge"
      },
      "ConnectionOptionsRechargePost": {
        "type": "object",
        "required": [
          "api_key",
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "API Key for the Recharge connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "recharge"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsRecharge` type.)\n\nRecharge options",
        "title": "Recharge"
      },
      "ConnectionOptionsRechargePut": {
        "type": "object",
        "required": [
          "api_key",
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "API Key for the Recharge connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "recharge"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsRecharge` type.)\n\nRecharge options",
        "title": "Recharge"
      },
      "ConnectionOptionsRedshift": {
        "type": "object",
        "required": [
          "aws_region",
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "aws_region": {
            "type": "string",
            "description": "Redshift tables exists inside of an AWS region, e.g. us-east-1",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Redshift tables exist inside of schemas, e.g. ANALYTICS or PUBLIC.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "redshift"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "Redshift options",
        "title": "Redshift"
      },
      "ConnectionOptionsRedshiftMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "aws_region": {
            "type": "string",
            "description": "Redshift tables exists inside of an AWS region, e.g. us-east-1",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Redshift tables exist inside of schemas, e.g. ANALYTICS or PUBLIC.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "redshift"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsRedshift` type.)\n\nRedshift options",
        "title": "Redshift"
      },
      "ConnectionOptionsRedshiftPost": {
        "type": "object",
        "required": [
          "aws_region",
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "aws_region": {
            "type": "string",
            "description": "Redshift tables exists inside of an AWS region, e.g. us-east-1",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Redshift tables exist inside of schemas, e.g. ANALYTICS or PUBLIC.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "redshift"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsRedshift` type.)\n\nRedshift options",
        "title": "Redshift"
      },
      "ConnectionOptionsRedshiftPut": {
        "type": "object",
        "required": [
          "aws_region",
          "database",
          "host",
          "password",
          "port",
          "schema",
          "type",
          "user"
        ],
        "properties": {
          "aws_region": {
            "type": "string",
            "description": "Redshift tables exists inside of an AWS region, e.g. us-east-1",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Redshift tables exist inside of schemas, e.g. ANALYTICS or PUBLIC.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "redshift"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsRedshift` type.)\n\nRedshift options",
        "title": "Redshift"
      },
      "ConnectionOptionsS3Csv": {
        "type": "object",
        "required": [
          "aws_region",
          "bucket_name",
          "type"
        ],
        "properties": {
          "aws_iam_role_arn": {
            "type": "string",
            "description": "AWS IAM role Faraday generated for this connection. Grant this role access with a bucket policy, then force-update the connection. Unique per Faraday S3 connection.",
            "pattern": "^arn:aws:iam::[0-9]+:role/.+$"
          },
          "aws_region": {
            "type": "string",
            "description": "S3 buckets exists inside of an AWS region, e.g. us-east-1",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "bucket_name": {
            "type": "string",
            "description": "Bucket name",
            "pattern": "^[a-z][a-z0-9-/]*[a-z0-9-]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "s3_csv"
          }
        },
        "additionalProperties": false,
        "description": "S3 options",
        "title": "S3"
      },
      "ConnectionOptionsS3CsvMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "aws_region": {
            "type": "string",
            "description": "S3 buckets exists inside of an AWS region, e.g. us-east-1",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "bucket_name": {
            "type": "string",
            "description": "Bucket name",
            "pattern": "^[a-z][a-z0-9-/]*[a-z0-9-]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "s3_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsS3Csv` type.)\n\nS3 options",
        "title": "S3"
      },
      "ConnectionOptionsS3CsvPost": {
        "type": "object",
        "required": [
          "aws_region",
          "bucket_name",
          "type"
        ],
        "properties": {
          "aws_region": {
            "type": "string",
            "description": "S3 buckets exists inside of an AWS region, e.g. us-east-1",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "bucket_name": {
            "type": "string",
            "description": "Bucket name",
            "pattern": "^[a-z][a-z0-9-/]*[a-z0-9-]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "s3_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsS3Csv` type.)\n\nS3 options",
        "title": "S3"
      },
      "ConnectionOptionsS3CsvPut": {
        "type": "object",
        "required": [
          "aws_region",
          "bucket_name",
          "type"
        ],
        "properties": {
          "aws_region": {
            "type": "string",
            "description": "S3 buckets exists inside of an AWS region, e.g. us-east-1",
            "pattern": "^[a-z0-9\\-]+$"
          },
          "bucket_name": {
            "type": "string",
            "description": "Bucket name",
            "pattern": "^[a-z][a-z0-9-/]*[a-z0-9-]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "s3_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsS3Csv` type.)\n\nS3 options",
        "title": "S3"
      },
      "ConnectionOptionsSalesforce": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the Salesforce connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce"
          },
          "username": {
            "type": "string",
            "description": "Username for the Salesforce connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "Salesforce options",
        "title": "Salesforce"
      },
      "ConnectionOptionsSalesforceMarketingCloud": {
        "type": "object",
        "required": [
          "client_id",
          "client_secret",
          "type"
        ],
        "properties": {
          "client_id": {
            "type": "string",
            "description": "Client ID of the API Integration within your installed package in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-server-to-server-package\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "client_secret": {
            "type": "string",
            "description": "Client secret of the API Integration within your installed package in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-server-to-server-package\">the HighTouch docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce_marketing_cloud"
          }
        },
        "additionalProperties": false,
        "description": "Salesforce Marketing Cloud options",
        "title": "Salesforce Marketing Cloud"
      },
      "ConnectionOptionsSalesforceMarketingCloudMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "client_id": {
            "type": "string",
            "description": "Client ID of the API Integration within your installed package in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-server-to-server-package\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "client_secret": {
            "type": "string",
            "description": "Client secret of the API Integration within your installed package in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-server-to-server-package\">the HighTouch docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce_marketing_cloud"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsSalesforceMarketingCloud` type.)\n\nSalesforce Marketing Cloud options",
        "title": "Salesforce Marketing Cloud"
      },
      "ConnectionOptionsSalesforceMarketingCloudPost": {
        "type": "object",
        "required": [
          "client_id",
          "client_secret",
          "type"
        ],
        "properties": {
          "client_id": {
            "type": "string",
            "description": "Client ID of the API Integration within your installed package in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-server-to-server-package\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "client_secret": {
            "type": "string",
            "description": "Client secret of the API Integration within your installed package in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-server-to-server-package\">the HighTouch docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce_marketing_cloud"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsSalesforceMarketingCloud` type.)\n\nSalesforce Marketing Cloud options",
        "title": "Salesforce Marketing Cloud"
      },
      "ConnectionOptionsSalesforceMarketingCloudPut": {
        "type": "object",
        "required": [
          "client_id",
          "client_secret",
          "type"
        ],
        "properties": {
          "client_id": {
            "type": "string",
            "description": "Client ID of the API Integration within your installed package in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-server-to-server-package\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "client_secret": {
            "type": "string",
            "description": "Client secret of the API Integration within your installed package in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-server-to-server-package\">the HighTouch docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce_marketing_cloud"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsSalesforceMarketingCloud` type.)\n\nSalesforce Marketing Cloud options",
        "title": "Salesforce Marketing Cloud"
      },
      "ConnectionOptionsSalesforceMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$",
                "x-secret": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Password for the Salesforce connection"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce"
          },
          "username": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Username for the Salesforce connection"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsSalesforce` type.)\n\nSalesforce options",
        "title": "Salesforce"
      },
      "ConnectionOptionsSalesforcePost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the Salesforce connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce"
          },
          "username": {
            "type": "string",
            "description": "Username for the Salesforce connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsSalesforce` type.)\n\nSalesforce options",
        "title": "Salesforce"
      },
      "ConnectionOptionsSalesforcePut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the Salesforce connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce"
          },
          "username": {
            "type": "string",
            "description": "Username for the Salesforce connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsSalesforce` type.)\n\nSalesforce options",
        "title": "Salesforce"
      },
      "ConnectionOptionsSegment": {
        "type": "object",
        "required": [
          "api_key",
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "API Key for the Segment connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "segment"
          }
        },
        "additionalProperties": false,
        "description": "Segment options",
        "title": "Segment"
      },
      "ConnectionOptionsSegmentMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "API Key for the Segment connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "segment"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsSegment` type.)\n\nSegment options",
        "title": "Segment"
      },
      "ConnectionOptionsSegmentPost": {
        "type": "object",
        "required": [
          "api_key",
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "API Key for the Segment connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "segment"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsSegment` type.)\n\nSegment options",
        "title": "Segment"
      },
      "ConnectionOptionsSegmentPut": {
        "type": "object",
        "required": [
          "api_key",
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "API Key for the Segment connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "segment"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsSegment` type.)\n\nSegment options",
        "title": "Segment"
      },
      "ConnectionOptionsSftp": {
        "type": "object",
        "required": [
          "host",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "compression": {
            "type": "boolean",
            "description": "The compression algorithm to use"
          },
          "encryption": {
            "type": "string",
            "description": "The encryption cipher(s) to use",
            "pattern": "^[a-zA-Z0-9\\-]+$"
          },
          "host": {
            "type": "string",
            "description": "The hostname or IP address of the SFTP server",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "host_key": {
            "type": "string",
            "description": "The host key algorithm to use in verifying the host key presented by the remote host",
            "pattern": "^[a-zA-Z0-9\\-]+$"
          },
          "password": {
            "type": "string",
            "description": "Optional password to connect. If blank, Faraday's private key will be used instead.",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "The port on the SFTP server listening for connections"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sftp"
          },
          "user": {
            "type": "string",
            "description": "The user to connect to the SFTP server as",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "SFTP options",
        "title": "SFTP"
      },
      "ConnectionOptionsSftpMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "compression": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The compression algorithm to use"
          },
          "encryption": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z0-9\\-]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The encryption cipher(s) to use"
          },
          "host": {
            "type": "string",
            "description": "The hostname or IP address of the SFTP server",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "host_key": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z0-9\\-]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The host key algorithm to use in verifying the host key presented by the remote host"
          },
          "password": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^.+$",
                "x-secret": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Optional password to connect. If blank, Faraday's private key will be used instead."
          },
          "port": {
            "type": "integer",
            "description": "The port on the SFTP server listening for connections"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sftp"
          },
          "user": {
            "type": "string",
            "description": "The user to connect to the SFTP server as",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsSftp` type.)\n\nSFTP options",
        "title": "SFTP"
      },
      "ConnectionOptionsSftpPost": {
        "type": "object",
        "required": [
          "host",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "compression": {
            "type": "boolean",
            "description": "The compression algorithm to use"
          },
          "encryption": {
            "type": "string",
            "description": "The encryption cipher(s) to use",
            "pattern": "^[a-zA-Z0-9\\-]+$"
          },
          "host": {
            "type": "string",
            "description": "The hostname or IP address of the SFTP server",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "host_key": {
            "type": "string",
            "description": "The host key algorithm to use in verifying the host key presented by the remote host",
            "pattern": "^[a-zA-Z0-9\\-]+$"
          },
          "password": {
            "type": "string",
            "description": "Optional password to connect. If blank, Faraday's private key will be used instead.",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "The port on the SFTP server listening for connections"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sftp"
          },
          "user": {
            "type": "string",
            "description": "The user to connect to the SFTP server as",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsSftp` type.)\n\nSFTP options",
        "title": "SFTP"
      },
      "ConnectionOptionsSftpPut": {
        "type": "object",
        "required": [
          "host",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "compression": {
            "type": "boolean",
            "description": "The compression algorithm to use"
          },
          "encryption": {
            "type": "string",
            "description": "The encryption cipher(s) to use",
            "pattern": "^[a-zA-Z0-9\\-]+$"
          },
          "host": {
            "type": "string",
            "description": "The hostname or IP address of the SFTP server",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "host_key": {
            "type": "string",
            "description": "The host key algorithm to use in verifying the host key presented by the remote host",
            "pattern": "^[a-zA-Z0-9\\-]+$"
          },
          "password": {
            "type": "string",
            "description": "Optional password to connect. If blank, Faraday's private key will be used instead.",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "The port on the SFTP server listening for connections"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sftp"
          },
          "user": {
            "type": "string",
            "description": "The user to connect to the SFTP server as",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsSftp` type.)\n\nSFTP options",
        "title": "SFTP"
      },
      "ConnectionOptionsShopify": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the Shopify connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "shopify"
          },
          "username": {
            "type": "string",
            "description": "Username for the Shopify connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "Shopify options",
        "title": "Shopify"
      },
      "ConnectionOptionsShopifyMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$",
                "x-secret": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Password for the Shopify connection"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "shopify"
          },
          "username": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Username for the Shopify connection"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsShopify` type.)\n\nShopify options",
        "title": "Shopify"
      },
      "ConnectionOptionsShopifyPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the Shopify connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "shopify"
          },
          "username": {
            "type": "string",
            "description": "Username for the Shopify connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsShopify` type.)\n\nShopify options",
        "title": "Shopify"
      },
      "ConnectionOptionsShopifyPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the Shopify connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "shopify"
          },
          "username": {
            "type": "string",
            "description": "Username for the Shopify connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsShopify` type.)\n\nShopify options",
        "title": "Shopify"
      },
      "ConnectionOptionsSnowflake": {
        "type": "object",
        "required": [
          "database",
          "type",
          "user",
          "warehouse"
        ],
        "properties": {
          "account_name": {
            "type": "string",
            "description": "Snowflake account name. If provided, also provide organization name. ORGNAME-ACCOUNTNAME.snowflakecomputing.com. Preferred over legacy account locator. https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#format-1-preferred-account-name-in-your-organization.",
            "pattern": "^[a-zA-Z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "legacy_account_locator": {
            "type": "string",
            "description": "NOT needed if organization name is provided. If your Snowflake account existed before the Organizations feature was enabled, the Format 2 (Legacy): Account Locator in a Region is used as the account name.",
            "pattern": "^[a-zA-Z0-9\\-\\.]+$"
          },
          "organization_name": {
            "type": "string",
            "description": "Snowflake organization name. If provided, also provide account name. ORGNAME-ACCOUNTNAME.snowflakecomputing.com. Preferred over legacy account locator. https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#format-1-preferred-account-name-in-your-organization.",
            "pattern": "^[a-zA-Z0-9\\-]+$"
          },
          "role": {
            "type": "string",
            "description": "The Snowflake role that will be used by Faraday to connect to the instance (Usually this is FARADAY).",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "rsa_public_key": {
            "type": "string",
            "description": "RSA public key that should be assigned to the Snowflake user. Unique per Faraday Snowflake connection. Set by the Faraday system. Use the rotate_credentials endpoint to regenerate.",
            "pattern": "^-----BEGIN PUBLIC KEY-----[0-9a-zA-Z+\\/\\n=]+-----END PUBLIC KEY-----\\n?$"
          },
          "schema": {
            "type": "string",
            "description": "Snowflake schema name. If not provided, it may be provided at the dataset level, or omitted entirely.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "snowflake"
          },
          "user": {
            "type": "string",
            "description": "Snowflake user.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          },
          "warehouse": {
            "type": "string",
            "description": "Warehouse",
            "pattern": "^[a-zA-Z0-9_]+$"
          }
        },
        "additionalProperties": false,
        "description": "Snowflake options",
        "title": "Snowflake"
      },
      "ConnectionOptionsSnowflakeMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "account_name": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z0-9\\-]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Snowflake account name. If provided, also provide organization name. ORGNAME-ACCOUNTNAME.snowflakecomputing.com. Preferred over legacy account locator. https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#format-1-preferred-account-name-in-your-organization."
          },
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "legacy_account_locator": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z0-9\\-\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "NOT needed if organization name is provided. If your Snowflake account existed before the Organizations feature was enabled, the Format 2 (Legacy): Account Locator in a Region is used as the account name."
          },
          "organization_name": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z0-9\\-]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Snowflake organization name. If provided, also provide account name. ORGNAME-ACCOUNTNAME.snowflakecomputing.com. Preferred over legacy account locator. https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#format-1-preferred-account-name-in-your-organization."
          },
          "role": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z0-9_]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The Snowflake role that will be used by Faraday to connect to the instance (Usually this is FARADAY)."
          },
          "schema": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Snowflake schema name. If not provided, it may be provided at the dataset level, or omitted entirely."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "snowflake"
          },
          "user": {
            "type": "string",
            "description": "Snowflake user.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          },
          "warehouse": {
            "type": "string",
            "description": "Warehouse",
            "pattern": "^[a-zA-Z0-9_]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsSnowflake` type.)\n\nSnowflake options",
        "title": "Snowflake"
      },
      "ConnectionOptionsSnowflakePost": {
        "type": "object",
        "required": [
          "database",
          "type",
          "user",
          "warehouse"
        ],
        "properties": {
          "account_name": {
            "type": "string",
            "description": "Snowflake account name. If provided, also provide organization name. ORGNAME-ACCOUNTNAME.snowflakecomputing.com. Preferred over legacy account locator. https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#format-1-preferred-account-name-in-your-organization.",
            "pattern": "^[a-zA-Z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "legacy_account_locator": {
            "type": "string",
            "description": "NOT needed if organization name is provided. If your Snowflake account existed before the Organizations feature was enabled, the Format 2 (Legacy): Account Locator in a Region is used as the account name.",
            "pattern": "^[a-zA-Z0-9\\-\\.]+$"
          },
          "organization_name": {
            "type": "string",
            "description": "Snowflake organization name. If provided, also provide account name. ORGNAME-ACCOUNTNAME.snowflakecomputing.com. Preferred over legacy account locator. https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#format-1-preferred-account-name-in-your-organization.",
            "pattern": "^[a-zA-Z0-9\\-]+$"
          },
          "role": {
            "type": "string",
            "description": "The Snowflake role that will be used by Faraday to connect to the instance (Usually this is FARADAY).",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "schema": {
            "type": "string",
            "description": "Snowflake schema name. If not provided, it may be provided at the dataset level, or omitted entirely.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "snowflake"
          },
          "user": {
            "type": "string",
            "description": "Snowflake user.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          },
          "warehouse": {
            "type": "string",
            "description": "Warehouse",
            "pattern": "^[a-zA-Z0-9_]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsSnowflake` type.)\n\nSnowflake options",
        "title": "Snowflake"
      },
      "ConnectionOptionsSnowflakePut": {
        "type": "object",
        "required": [
          "database",
          "type",
          "user",
          "warehouse"
        ],
        "properties": {
          "account_name": {
            "type": "string",
            "description": "Snowflake account name. If provided, also provide organization name. ORGNAME-ACCOUNTNAME.snowflakecomputing.com. Preferred over legacy account locator. https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#format-1-preferred-account-name-in-your-organization.",
            "pattern": "^[a-zA-Z0-9\\-]+$"
          },
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "legacy_account_locator": {
            "type": "string",
            "description": "NOT needed if organization name is provided. If your Snowflake account existed before the Organizations feature was enabled, the Format 2 (Legacy): Account Locator in a Region is used as the account name.",
            "pattern": "^[a-zA-Z0-9\\-\\.]+$"
          },
          "organization_name": {
            "type": "string",
            "description": "Snowflake organization name. If provided, also provide account name. ORGNAME-ACCOUNTNAME.snowflakecomputing.com. Preferred over legacy account locator. https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#format-1-preferred-account-name-in-your-organization.",
            "pattern": "^[a-zA-Z0-9\\-]+$"
          },
          "role": {
            "type": "string",
            "description": "The Snowflake role that will be used by Faraday to connect to the instance (Usually this is FARADAY).",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "schema": {
            "type": "string",
            "description": "Snowflake schema name. If not provided, it may be provided at the dataset level, or omitted entirely.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "snowflake"
          },
          "user": {
            "type": "string",
            "description": "Snowflake user.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          },
          "warehouse": {
            "type": "string",
            "description": "Warehouse",
            "pattern": "^[a-zA-Z0-9_]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsSnowflake` type.)\n\nSnowflake options",
        "title": "Snowflake"
      },
      "ConnectionOptionsSqlServer": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "SQL Server options",
        "title": "SQL Server"
      },
      "ConnectionOptionsSqlServerMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "hostname",
                "pattern": "^[-\\w\\d\\.]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind a load balancer."
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z0-9_]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Schema"
          },
          "ssh_bastion": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[-\\w\\d\\.@]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsSqlServer` type.)\n\nSQL Server options",
        "title": "SQL Server"
      },
      "ConnectionOptionsSqlServerPost": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsSqlServer` type.)\n\nSQL Server options",
        "title": "SQL Server"
      },
      "ConnectionOptionsSqlServerPut": {
        "type": "object",
        "required": [
          "database",
          "host",
          "password",
          "port",
          "type",
          "user"
        ],
        "properties": {
          "database": {
            "type": "string",
            "description": "Database",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_ ]+$"
          },
          "host": {
            "type": "string",
            "description": "Host",
            "pattern": "^[a-zA-Z0-9\\-.]+$"
          },
          "load_balancer": {
            "type": "string",
            "description": "In case the host is deployed behind a load balancer.",
            "format": "hostname",
            "pattern": "^[-\\w\\d\\.]+$"
          },
          "password": {
            "type": "string",
            "description": "Password",
            "pattern": "^.+$",
            "x-secret": true
          },
          "port": {
            "type": "integer",
            "description": "Port"
          },
          "schema": {
            "type": "string",
            "description": "Schema",
            "pattern": "^[a-zA-Z0-9_]+$"
          },
          "ssh_bastion": {
            "type": "string",
            "description": "In case the host is deployed behind an SSH bastion / jump server. Uses the Faraday SSH public key. This is the address of the bastion including username. For example, faraday@mybastion.example.com",
            "pattern": "^[-\\w\\d\\.@]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sql_server"
          },
          "user": {
            "type": "string",
            "description": "User",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-.]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsSqlServer` type.)\n\nSQL Server options",
        "title": "SQL Server"
      },
      "ConnectionOptionsStripe": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the Stripe connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "stripe"
          },
          "username": {
            "type": "string",
            "description": "Username for the Stripe connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "Stripe options",
        "title": "Stripe"
      },
      "ConnectionOptionsStripeMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$",
                "x-secret": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Password for the Stripe connection"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "stripe"
          },
          "username": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Username for the Stripe connection"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsStripe` type.)\n\nStripe options",
        "title": "Stripe"
      },
      "ConnectionOptionsStripePost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the Stripe connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "stripe"
          },
          "username": {
            "type": "string",
            "description": "Username for the Stripe connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsStripe` type.)\n\nStripe options",
        "title": "Stripe"
      },
      "ConnectionOptionsStripePut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "password": {
            "type": "string",
            "description": "Password for the Stripe connection",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "stripe"
          },
          "username": {
            "type": "string",
            "description": "Username for the Stripe connection",
            "pattern": "^\\S+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsStripe` type.)\n\nStripe options",
        "title": "Stripe"
      },
      "ConnectionOptionsTheTradeDesk": {
        "type": "object",
        "required": [
          "advertiser_id",
          "api_key",
          "type"
        ],
        "properties": {
          "advertiser_id": {
            "type": "string",
            "description": "Refer to <a href=\"https://hightouch.com/docs/destinations/tradedesk#first-party-data-segment-credentials\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "api_key": {
            "type": "string",
            "description": "To generate an API token you must contact your TradeDesk rep and ask for CRM Data Management Access. Refer to <a href=\"https://hightouch.com/docs/destinations/tradedesk#crm-data-segment-credentials\">the HighTouch docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "environment": {
            "type": "string",
            "description": "Select a server location of your choice. If unspecified, defaults to 'production'. Refer to <a href=\"https://hightouch.com/docs/destinations/tradedesk#first-party-data-segment-credentials\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "the_trade_desk"
          }
        },
        "additionalProperties": false,
        "description": "The Trade Desk options",
        "title": "The Trade Desk"
      },
      "ConnectionOptionsTheTradeDeskMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "advertiser_id": {
            "type": "string",
            "description": "Refer to <a href=\"https://hightouch.com/docs/destinations/tradedesk#first-party-data-segment-credentials\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "api_key": {
            "type": "string",
            "description": "To generate an API token you must contact your TradeDesk rep and ask for CRM Data Management Access. Refer to <a href=\"https://hightouch.com/docs/destinations/tradedesk#crm-data-segment-credentials\">the HighTouch docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "environment": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Select a server location of your choice. If unspecified, defaults to 'production'. Refer to <a href=\"https://hightouch.com/docs/destinations/tradedesk#first-party-data-segment-credentials\">the HighTouch docs</a>."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "the_trade_desk"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsTheTradeDesk` type.)\n\nThe Trade Desk options",
        "title": "The Trade Desk"
      },
      "ConnectionOptionsTheTradeDeskPost": {
        "type": "object",
        "required": [
          "advertiser_id",
          "api_key",
          "type"
        ],
        "properties": {
          "advertiser_id": {
            "type": "string",
            "description": "Refer to <a href=\"https://hightouch.com/docs/destinations/tradedesk#first-party-data-segment-credentials\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "api_key": {
            "type": "string",
            "description": "To generate an API token you must contact your TradeDesk rep and ask for CRM Data Management Access. Refer to <a href=\"https://hightouch.com/docs/destinations/tradedesk#crm-data-segment-credentials\">the HighTouch docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "environment": {
            "type": "string",
            "description": "Select a server location of your choice. If unspecified, defaults to 'production'. Refer to <a href=\"https://hightouch.com/docs/destinations/tradedesk#first-party-data-segment-credentials\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "the_trade_desk"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsTheTradeDesk` type.)\n\nThe Trade Desk options",
        "title": "The Trade Desk"
      },
      "ConnectionOptionsTheTradeDeskPut": {
        "type": "object",
        "required": [
          "advertiser_id",
          "api_key",
          "type"
        ],
        "properties": {
          "advertiser_id": {
            "type": "string",
            "description": "Refer to <a href=\"https://hightouch.com/docs/destinations/tradedesk#first-party-data-segment-credentials\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "api_key": {
            "type": "string",
            "description": "To generate an API token you must contact your TradeDesk rep and ask for CRM Data Management Access. Refer to <a href=\"https://hightouch.com/docs/destinations/tradedesk#crm-data-segment-credentials\">the HighTouch docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "environment": {
            "type": "string",
            "description": "Select a server location of your choice. If unspecified, defaults to 'production'. Refer to <a href=\"https://hightouch.com/docs/destinations/tradedesk#first-party-data-segment-credentials\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "the_trade_desk"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsTheTradeDesk` type.)\n\nThe Trade Desk options",
        "title": "The Trade Desk"
      },
      "ConnectionOptionsTiktok": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "tiktok_account_id": {
            "type": "string",
            "description": "Account id for the TikTok connection",
            "pattern": "^[a-zA-Z0-9]$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "tiktok"
          }
        },
        "additionalProperties": false,
        "description": "TikTok options",
        "title": "TikTok"
      },
      "ConnectionOptionsTiktokMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "tiktok_account_id": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z0-9]$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Account id for the TikTok connection"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "tiktok"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ConnectionOptionsTiktok` type.)\n\nTikTok options",
        "title": "TikTok"
      },
      "ConnectionOptionsTiktokPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "tiktok_account_id": {
            "type": "string",
            "description": "Account id for the TikTok connection",
            "pattern": "^[a-zA-Z0-9]$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "tiktok"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ConnectionOptionsTiktok` type.)\n\nTikTok options",
        "title": "TikTok"
      },
      "ConnectionOptionsTiktokPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "tiktok_account_id": {
            "type": "string",
            "description": "Account id for the TikTok connection",
            "pattern": "^[a-zA-Z0-9]$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "tiktok"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ConnectionOptionsTiktok` type.)\n\nTikTok options",
        "title": "TikTok"
      },
      "ConnectionPost": {
        "type": "object",
        "required": [
          "name",
          "options"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "A user-friendly name of the connection.",
            "example": "Snowflake AWS - Marketing",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "options": {
            "$ref": "#/components/schemas/ConnectionOptionsPost"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Connection` type.)\n\nConfiguration for connecting data between Faraday and an external location.\n\nConnections are required when working with **replication targets**.\n"
      },
      "ConnectionPut": {
        "type": "object",
        "required": [
          "name",
          "options"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "A user-friendly name of the connection.",
            "example": "Snowflake AWS - Marketing",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "options": {
            "$ref": "#/components/schemas/ConnectionOptionsPut"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Connection` type.)\n\nConfiguration for connecting data between Faraday and an external location.\n\nConnections are required when working with **replication targets**.\n"
      },
      "ContentsRow": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of a table or object found in the connection",
            "example": "my_table_1"
          },
          "object_size": {
            "type": "integer",
            "description": "Object size in bytes. Only applicable to object stores (S3, GCS, etc)."
          },
          "row_count": {
            "type": "integer",
            "description": "Row count if available from this connection type. Only applicable to databases and data warehouses. Some do not have an efficient row count mechanism (e.g. Postgres) and so this is not provided."
          }
        },
        "additionalProperties": false
      },
      "DataMap": {
        "type": "object",
        "properties": {
          "datetime": {
            "$ref": "#/components/schemas/DataMapColumn"
          }
        },
        "additionalProperties": {
          "$ref": "#/components/schemas/DataMapColumn"
        },
        "description": "A mapping from dataset columns to what they mean. It is recommended to include a \"datetime\" column if possible, as it will improve the accuracy of models."
      },
      "DataMapColumn": {
        "type": "object",
        "required": [
          "column_name"
        ],
        "properties": {
          "column_name": {
            "type": "string",
            "description": "The name of a column in the dataset. If format is \"static_date_iso8601\", then the value provided in this field is used as a static value.",
            "example": "skus",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "format": {
            "$ref": "#/components/schemas/DataMapColumnFormat"
          }
        },
        "additionalProperties": false
      },
      "DataMapColumnFormat": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/DateColumnFormat"
          },
          {
            "type": "string",
            "enum": [
              "currency_cents",
              "currency_dollars",
              "list_comma_separated",
              "list_semicolon_separated",
              "list_single_value"
            ]
          }
        ],
        "description": "Additional context for the column's data that isn't captured by its data type. For example, a 'revenue' column's data type would likely be 'int64', but format specifies if this number represents 'dollars' or 'cents'. This can be left blank if no additional context is needed."
      },
      "DataMapColumnMergePatch": {
        "type": "object",
        "properties": {
          "column_name": {
            "type": "string",
            "description": "The name of a column in the dataset. If format is \"static_date_iso8601\", then the value provided in this field is used as a static value.",
            "example": "skus",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "format": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/DataMapColumnFormat"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "DataMapColumnPost": {
        "type": "object",
        "required": [
          "column_name"
        ],
        "properties": {
          "column_name": {
            "type": "string",
            "description": "The name of a column in the dataset. If format is \"static_date_iso8601\", then the value provided in this field is used as a static value.",
            "example": "skus",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "format": {
            "$ref": "#/components/schemas/DataMapColumnFormat"
          }
        },
        "additionalProperties": false
      },
      "DataMapColumnPut": {
        "type": "object",
        "required": [
          "column_name"
        ],
        "properties": {
          "column_name": {
            "type": "string",
            "description": "The name of a column in the dataset. If format is \"static_date_iso8601\", then the value provided in this field is used as a static value.",
            "example": "skus",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "format": {
            "$ref": "#/components/schemas/DataMapColumnFormat"
          }
        },
        "additionalProperties": false
      },
      "DataMapMergePatch": {
        "type": "object",
        "properties": {
          "datetime": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/DataMapColumnMergePatch"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          }
        },
        "additionalProperties": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/DataMapColumnMergePatch"
            },
            {
              "type": "null",
              "description": "Pass `null` to clear this field's existing value.",
              "title": "Clear"
            }
          ]
        },
        "description": "(Parameters used to PATCH the `DataMap` type.)\n\nA mapping from dataset columns to what they mean. It is recommended to include a \"datetime\" column if possible, as it will improve the accuracy of models."
      },
      "DataMapPost": {
        "type": "object",
        "properties": {
          "datetime": {
            "$ref": "#/components/schemas/DataMapColumnPost"
          }
        },
        "additionalProperties": {
          "$ref": "#/components/schemas/DataMapColumnPost"
        },
        "description": "(Parameters used to POST a new value of the `DataMap` type.)\n\nA mapping from dataset columns to what they mean. It is recommended to include a \"datetime\" column if possible, as it will improve the accuracy of models.",
        "example": {
          "channel": "referring_site",
          "product": {
            "column": "skus",
            "format": "list_comma_separated"
          },
          "value": "total_line_items_price"
        }
      },
      "DataMapPut": {
        "type": "object",
        "properties": {
          "datetime": {
            "$ref": "#/components/schemas/DataMapColumnPut"
          }
        },
        "additionalProperties": {
          "$ref": "#/components/schemas/DataMapColumnPut"
        },
        "description": "(Parameters used to PUT a value of the `DataMap` type.)\n\nA mapping from dataset columns to what they mean. It is recommended to include a \"datetime\" column if possible, as it will improve the accuracy of models."
      },
      "Dataset": {
        "type": "object",
        "required": [
          "created_at",
          "id",
          "identity_sets",
          "name",
          "options",
          "resource_type",
          "status",
          "updated_at"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "connection_id": {
            "type": "string",
            "description": "If this is a \"retrieve\" dataset, the UUID of a connection - see <a href=\"https://faraday.ai/developers/reference/createconnection\">/connections</a> for more detail. \n\nOnly a subset of connection types can be configured for dataset ingestion - see the list available in `options`.\n\nNote that if a `connection_id` is specified, `options` must also be specified.\n",
            "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
            "format": "uuid"
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "detected_columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DatasetColumn"
            },
            "description": "An array of columns\n",
            "example": [
              {
                "data_type": "text",
                "is_nullable": false,
                "name": "id"
              },
              {
                "data_type": "long",
                "is_nullable": true,
                "name": "amount"
              }
            ]
          },
          "enrichment": {
            "$ref": "#/components/schemas/DatasetEnrichments"
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "example": "8cd2dcf6-f2b3-4318-b8b3-eb19ab18d29d",
            "format": "uuid"
          },
          "identified_count": {
            "type": "integer",
            "description": "The number of unique people identified in this dataset.\nThis can be different from the row_count, for example, in a table of orders.\nThe same person can order multiple things, so there are more rows than identified people.\nThis will only be displayed if the dataset built successfully.\n"
          },
          "identity_providers": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "provider"
              ],
              "properties": {
                "force": {
                  "type": "boolean",
                  "description": "If true, then use this identity provider even if a match was found by another, higher priority provider.\nPlease contact support to gain access to this feature for any provider other than FIG.\n"
                },
                "provider": {
                  "type": "string",
                  "description": "Which data provider to use for matching.\nBy default, all Faraday accounts can match on the 'Faraday Identity Graph' (FIG) provider.\nPlease contact support to gain access to additional providers.\n",
                  "enum": [
                    "fig",
                    "match_boost"
                  ]
                },
                "select": {
                  "type": "string",
                  "description": "If 'first_recognized', send to match-boost providers one-at-a-time until a match is found. \nIf 'all', send to all match-boost vendors. Please access support to gain access to this feature.\n",
                  "enum": [
                    "first_recognized",
                    "all"
                  ]
                }
              }
            },
            "description": "Which identity providers to use for matching, in order of priority.\nBy default, all datasets will match on 'fig' data.\nThe dataset's match-rate can be boosted by adding other identity providers.\nPlease contact support to get access to this feature.\n",
            "example": [
              [
                {
                  "provider": "fig"
                }
              ]
            ]
          },
          "identity_sets": {
            "$ref": "#/components/schemas/IdentitySets"
          },
          "incremental_column": {
            "type": "string",
            "description": "A column specifying a date associated with a record.\n\nIdeally `incremental_column` SHOULD be set to make data loading more efficient.\n\nIdeally ALSO set `upsert_columns` to ensure that data is not duplicated in the dataset.\n\nAfter each\ningestion, the most recent value from `incremental_column` on any\nrecord will be recorded, and during future ingestions, any\nrecords with a value older than `incremental_column` will be ignored.\n",
            "example": "updated_at"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "managed": {
            "type": "boolean",
            "description": "A managed dataset requires special configuration from a Faraday admin, and is read-only.",
            "example": true
          },
          "matched_count": {
            "type": "integer",
            "description": "**Deprecated**: Use `enrichment` instead.\n\nThe number of identified people in this dataset that Faraday found a match for in its data.\nThis will only be displayed if the dataset built successfully.\n"
          },
          "merge_datasets": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "dataset_id",
                "join_column"
              ],
              "properties": {
                "dataset_id": {
                  "type": "string",
                  "description": "The ID of the parent merge dataset.",
                  "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
                  "format": "uuid"
                },
                "join_column": {
                  "type": "string",
                  "description": "The column from this dataset used to join with the parent merge dataset.",
                  "example": "id"
                }
              }
            },
            "description": "List of merge datasets using this dataset as a source."
          },
          "name": {
            "type": "string",
            "description": "An identifying name for this dataset.\n"
          },
          "options": {
            "$ref": "#/components/schemas/DatasetOptions"
          },
          "output_all_columns_as_traits": {
            "type": "object",
            "required": [
              "exclude"
            ],
            "properties": {
              "exclude": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "A list of column names to exclude from bulk trait generation.\n",
                "example": [
                  "id"
                ]
              },
              "include": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "A list of column names that should only be used to generate traits.\\\n\nIf unspecified, all columns will be considered and `output_to_traits`\nmust be unset. If specified, only these columns will be considered and\n`output_to_traits` may be set in conjunction. In this case, any detected \ntraits may not already be specified by `output_to_traits`; collisions will \nresult in error.\n",
                "example": [
                  "id"
                ]
              }
            },
            "description": "If specified, all columns that are not excluded will be output as traits.\n\n`output_to_streams` may not be not be specified when setting this parameter.\n"
          },
          "output_to_authority": {
            "type": "object",
            "required": [
              "name",
              "date"
            ],
            "properties": {
              "date": {
                "type": "string",
                "description": "The observation date the dataset's contents are asserted as of.",
                "example": "2026-01-15",
                "format": "date"
              },
              "name": {
                "type": "string",
                "description": "The authority this dataset's contents are published under.",
                "example": "epsilon"
              }
            },
            "description": "Tags this dataset's contents as a dated assertion from a named authority. Attributes that\nconsume that authority resolve their values against this date.\n\nAvailable only for vendor accounts.\n"
          },
          "output_to_streams": {
            "$ref": "#/components/schemas/OutputToStreams"
          },
          "output_to_streams_array": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OutputToStreamArrayItem"
            },
            "description": "An array-based approach to transforming datasets into streams. This structure allows multiple columns from the same dataset to map to the same stream, each with their own property configurations.\n\nUnlike `output_to_streams`, this does not require nested structures and makes it straightforward to handle cases where a vendor provides multiple columns for the same attribute type (e.g., multiple age fields with different quality or derivation levels).\n\nEach array element specifies a stream_name and properties configuration for stream properties including data column, datetime, authority, precision, derivations, and quality.\n\nStreams named here will be automatically generated if they do not exist.\n"
          },
          "output_to_traits": {
            "$ref": "#/components/schemas/OutputToTraits"
          },
          "preview": {
            "type": "boolean",
            "description": "A dataset in preview mode will only detect columns and produce a data preview, but not ingest the data.\n\nDefaults to undefined, which is equivalent to false.\n",
            "example": true
          },
          "privacy": {
            "type": "string",
            "description": "Currently supported:\n  - 'suppress' - data can be used for modeling but will be excluded from pipelines and deployments (do not contact)\n  - 'delete' - data can not be used for modeling and will be excluded from pipelines and deployments (delete and do not contact)\n  Note: While these options are labeled differently, they currently result in the same behavior (including deletion). This may change in the future.\n",
            "example": "suppress",
            "enum": [
              "suppress",
              "delete"
            ]
          },
          "reference_key_column": {
            "type": "string",
            "description": "**Deprecated:** use reference_key_columns instead\nThe name of the column that references an ID from an external system.\n\nSetting this enables export of data via <a href=\"/reference/createtarget\">`/targets`</a> that is keyed on this field.\n",
            "example": "customer_id",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "reference_key_columns": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
            },
            "description": "The names of columns that reference IDs from an external system.\n\nSetting this enables export of data via <a href=\"/reference/createtarget\">`/targets`</a> that is keyed on this field.\n",
            "example": [
              "customer_id"
            ]
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource.",
            "example": "datasets"
          },
          "row_count": {
            "type": "integer",
            "description": "The total number of rows in this dataset.\nThis will only be displayed if the dataset built successfully.\n",
            "example": 10000
          },
          "sample": {
            "type": "object",
            "description": "If supported by the connection, a sample of the data.\n"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          },
          "updates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DatasetUpdateHistory"
            },
            "description": "A list of updates including how many rows were added.\n\nIf the dataset updates incrementally, these rows are added to the previous total. If the dataset is overwritten upon every ingestion, then these rows will be the new total row count.\n",
            "example": [
              {
                "datetime": "2021-10-05T14:48:00.000Z",
                "rows_added": 123
              },
              {
                "datetime": "2021-10-06T14:48:00.000Z",
                "rows_added": 32
              }
            ]
          },
          "upsert_columns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Also known as the \"primary key\" of the dataset.  A column or set of columns that uniquely identify an input row.\n\nIdeally `upsert_columns` SHOULD be set so that data is not duplicated in the dataset.\n\nIdeally ALSO set `incremental_column` to make data loading more efficient.\n\nIf multiple rows are ingested with identical values in the columns\nspecified by `upsert_columns`, the newest will be used.\n\nIf neither `upsert_columns` nor `incremental_column` are\nspecified, each unique row will be ingested once.\n",
            "example": [
              "id"
            ]
          }
        },
        "additionalProperties": false,
        "description": "Tabular data describing orders, customers, leads, etc."
      },
      "DatasetColumn": {
        "type": "object",
        "required": [
          "data_type",
          "is_nullable",
          "name"
        ],
        "properties": {
          "data_type": {
            "$ref": "#/components/schemas/ComplexDataType",
            "description": "What type of data this field contains."
          },
          "fill_rate": {
            "type": "number",
            "description": "Count of non-null values divided by total count of values. 0.75 means 75% of the values are not null.",
            "example": 0.75,
            "maximum": 1,
            "minimum": 0
          },
          "identifier_recommendation": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "first_name"
            },
            "description": "A list of recommended identity set keys to map this column to. Ordered by relevance."
          },
          "is_nullable": {
            "type": "boolean",
            "example": true
          },
          "name": {
            "type": "string",
            "description": "Name of the column found in the client data.",
            "example": "id",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          }
        },
        "additionalProperties": false,
        "description": "Dataset column expressed in Avro datatypes\n"
      },
      "DatasetEnrichment": {
        "type": "object",
        "required": [
          "any",
          "person",
          "residence"
        ],
        "properties": {
          "any": {
            "type": "integer",
            "description": "How many of the identities were enriched with either person-level or residence-level data",
            "example": 123
          },
          "person": {
            "type": "integer",
            "description": "How many of the identities were enriched with person-level data",
            "example": 123
          },
          "residence": {
            "type": "integer",
            "description": "How many of the identities were enriched with residence-level data",
            "example": 123
          }
        },
        "additionalProperties": false,
        "description": "Dataset enrichment metadata for a particular source\n"
      },
      "DatasetEnrichments": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/DatasetEnrichment"
        },
        "description": "A mapping of enrichment sources (like FIG) to their enrichment metadata\n"
      },
      "DatasetIngressLog": {
        "type": "object",
        "required": [
          "id",
          "status",
          "started_at",
          "metrics"
        ],
        "properties": {
          "finished_at": {
            "type": "string",
            "description": "When the ingress completed",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "description": "UUID of the ingress log",
            "format": "uuid"
          },
          "metrics": {
            "$ref": "#/components/schemas/DatasetIngressLogMetrics"
          },
          "started_at": {
            "type": "string",
            "description": "When the ingress started",
            "format": "date-time"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_error": {
            "type": "string",
            "description": "Error message if status indicates failure"
          }
        },
        "description": "A record of a dataset ingress log with metrics"
      },
      "DatasetIngressLogMetrics": {
        "type": "object",
        "properties": {
          "allowed_row_count": {
            "type": "integer",
            "description": "Valid rows allowed after CCPA filtering"
          },
          "allowed_row_unique_people_count": {
            "type": "integer",
            "description": "Unique people from allowed rows"
          },
          "enrichable_residence_count": {
            "type": "integer",
            "description": "Records eligible for enrichment at the residence level"
          },
          "enrichable_row_count": {
            "type": "integer",
            "description": "Rows eligible for enrichment of, but not limited to, consumer, identity, and prediction data"
          },
          "enrichable_row_unique_people_count": {
            "type": "integer",
            "description": "Unique people from enrichable rows"
          },
          "processable_row_count": {
            "type": "integer",
            "description": "Rows that could be parsed"
          },
          "recognized_row_count": {
            "type": "integer",
            "description": "Rows matched to known identities"
          },
          "recognized_row_unique_people_count": {
            "type": "integer",
            "description": "Unique people from recognized rows"
          },
          "total_row_count": {
            "type": "integer",
            "description": "Total rows received"
          },
          "valid_row_count": {
            "type": "integer",
            "description": "Processable rows passing validation that remove addresses and people determined to be from outside the united states"
          }
        },
        "description": "Data ingress metrics with customer-friendly field names"
      },
      "DatasetMergePatch": {
        "type": "object",
        "properties": {
          "identity_providers": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "provider"
                  ],
                  "properties": {
                    "force": {
                      "type": "boolean",
                      "description": "If true, then use this identity provider even if a match was found by another, higher priority provider.\nPlease contact support to gain access to this feature for any provider other than FIG.\n"
                    },
                    "provider": {
                      "type": "string",
                      "description": "Which data provider to use for matching.\nBy default, all Faraday accounts can match on the 'Faraday Identity Graph' (FIG) provider.\nPlease contact support to gain access to additional providers.\n",
                      "enum": [
                        "fig",
                        "match_boost"
                      ]
                    },
                    "select": {
                      "type": "string",
                      "description": "If 'first_recognized', send to match-boost providers one-at-a-time until a match is found. \nIf 'all', send to all match-boost vendors. Please access support to gain access to this feature.\n",
                      "enum": [
                        "first_recognized",
                        "all"
                      ]
                    }
                  }
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": [
                  [
                    {
                      "provider": "fig"
                    }
                  ]
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Which identity providers to use for matching, in order of priority.\nBy default, all datasets will match on 'fig' data.\nThe dataset's match-rate can be boosted by adding other identity providers.\nPlease contact support to get access to this feature.\n"
          },
          "identity_sets": {
            "$ref": "#/components/schemas/IdentitySetsMergePatch"
          },
          "incremental_column": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "updated_at"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A column specifying a date associated with a record.\n\nIdeally `incremental_column` SHOULD be set to make data loading more efficient.\n\nIdeally ALSO set `upsert_columns` to ensure that data is not duplicated in the dataset.\n\nAfter each\ningestion, the most recent value from `incremental_column` on any\nrecord will be recorded, and during future ingestions, any\nrecords with a value older than `incremental_column` will be ignored.\n"
          },
          "name": {
            "type": "string",
            "description": "An identifying name for this dataset.\n"
          },
          "options": {
            "$ref": "#/components/schemas/DatasetOptionsMergePatch"
          },
          "output_all_columns_as_traits": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "exclude"
                ],
                "properties": {
                  "exclude": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "A list of column names to exclude from bulk trait generation.\n",
                    "example": [
                      "id"
                    ]
                  },
                  "include": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "A list of column names that should only be used to generate traits.\\\n\nIf unspecified, all columns will be considered and `output_to_traits`\nmust be unset. If specified, only these columns will be considered and\n`output_to_traits` may be set in conjunction. In this case, any detected \ntraits may not already be specified by `output_to_traits`; collisions will \nresult in error.\n",
                    "example": [
                      "id"
                    ]
                  }
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "If specified, all columns that are not excluded will be output as traits.\n\n`output_to_streams` may not be not be specified when setting this parameter.\n"
          },
          "output_to_authority": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "name",
                  "date"
                ],
                "properties": {
                  "date": {
                    "type": "string",
                    "description": "The observation date the dataset's contents are asserted as of.",
                    "example": "2026-01-15",
                    "format": "date"
                  },
                  "name": {
                    "type": "string",
                    "description": "The authority this dataset's contents are published under.",
                    "example": "epsilon"
                  }
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Tags this dataset's contents as a dated assertion from a named authority. Attributes that\nconsume that authority resolve their values against this date.\n\nAvailable only for vendor accounts.\n"
          },
          "output_to_streams": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/OutputToStreamsMergePatch"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "output_to_streams_array": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OutputToStreamArrayItem"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "An array-based approach to transforming datasets into streams. This structure allows multiple columns from the same dataset to map to the same stream, each with their own property configurations.\n\nUnlike `output_to_streams`, this does not require nested structures and makes it straightforward to handle cases where a vendor provides multiple columns for the same attribute type (e.g., multiple age fields with different quality or derivation levels).\n\nEach array element specifies a stream_name and properties configuration for stream properties including data column, datetime, authority, precision, derivations, and quality.\n\nStreams named here will be automatically generated if they do not exist.\n"
          },
          "output_to_traits": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/OutputToTraitsMergePatch"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "preview": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A dataset in preview mode will only detect columns and produce a data preview, but not ingest the data.\n\nDefaults to undefined, which is equivalent to false.\n"
          },
          "privacy": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "suppress",
                "enum": [
                  "suppress",
                  "delete"
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Currently supported:\n  - 'suppress' - data can be used for modeling but will be excluded from pipelines and deployments (do not contact)\n  - 'delete' - data can not be used for modeling and will be excluded from pipelines and deployments (delete and do not contact)\n  Note: While these options are labeled differently, they currently result in the same behavior (including deletion). This may change in the future.\n"
          },
          "reference_key_column": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "customer_id",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "**Deprecated:** use reference_key_columns instead\nThe name of the column that references an ID from an external system.\n\nSetting this enables export of data via <a href=\"/reference/createtarget\">`/targets`</a> that is keyed on this field.\n"
          },
          "reference_key_columns": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": [
                  "customer_id"
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The names of columns that reference IDs from an external system.\n\nSetting this enables export of data via <a href=\"/reference/createtarget\">`/targets`</a> that is keyed on this field.\n"
          },
          "upsert_columns": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": [
                  "id"
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Also known as the \"primary key\" of the dataset.  A column or set of columns that uniquely identify an input row.\n\nIdeally `upsert_columns` SHOULD be set so that data is not duplicated in the dataset.\n\nIdeally ALSO set `incremental_column` to make data loading more efficient.\n\nIf multiple rows are ingested with identical values in the columns\nspecified by `upsert_columns`, the newest will be used.\n\nIf neither `upsert_columns` nor `incremental_column` are\nspecified, each unique row will be ingested once.\n"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Dataset` type.)\n\nTabular data describing orders, customers, leads, etc."
      },
      "DatasetOptions": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/DatasetOptionsAthena"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraMysql"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraPostgres"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsMysql"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsPostgres"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsSqlServer"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRedshiftServerless"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAzureSqlServer"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsBigQuery"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsClassic"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsClickhouse"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricks"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksDeltaSharing"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlMysql"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgres"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServer"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpGcsCsv"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsHostedCsv"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsHubspot"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsIterable"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsKlaviyo"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMerge"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMotherduck"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMysql"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsPostgres"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsRecharge"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsRedshift"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsS3Csv"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSalesforce"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSalesforceMarketingCloud"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSftp"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsShopify"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSnowflake"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSqlServer"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsStripe"
          }
        ],
        "description": "Dataset connection options",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/DatasetOptionsAthena",
            "aws_aurora_mysql": "#/components/schemas/DatasetOptionsAwsAuroraMysql",
            "aws_aurora_postgres": "#/components/schemas/DatasetOptionsAwsAuroraPostgres",
            "aws_rds_mysql": "#/components/schemas/DatasetOptionsAwsRdsMysql",
            "aws_rds_postgres": "#/components/schemas/DatasetOptionsAwsRdsPostgres",
            "aws_rds_sql_server": "#/components/schemas/DatasetOptionsAwsRdsSqlServer",
            "aws_redshift_serverless": "#/components/schemas/DatasetOptionsAwsRedshiftServerless",
            "azure_sql_server": "#/components/schemas/DatasetOptionsAzureSqlServer",
            "bigquery": "#/components/schemas/DatasetOptionsBigQuery",
            "classic": "#/components/schemas/DatasetOptionsClassic",
            "clickhouse": "#/components/schemas/DatasetOptionsClickhouse",
            "databricks": "#/components/schemas/DatasetOptionsDatabricks",
            "databricks_delta_sharing": "#/components/schemas/DatasetOptionsDatabricksDeltaSharing",
            "gcp_cloud_sql_mysql": "#/components/schemas/DatasetOptionsGcpCloudSqlMysql",
            "gcp_cloud_sql_postgres": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgres",
            "gcp_cloud_sql_sql_server": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServer",
            "gcp_gcs_csv": "#/components/schemas/DatasetOptionsGcpGcsCsv",
            "hosted_csv": "#/components/schemas/DatasetOptionsHostedCsv",
            "hubspot": "#/components/schemas/DatasetOptionsHubspot",
            "iterable": "#/components/schemas/DatasetOptionsIterable",
            "klaviyo": "#/components/schemas/DatasetOptionsKlaviyo",
            "merge": "#/components/schemas/DatasetOptionsMerge",
            "motherduck": "#/components/schemas/DatasetOptionsMotherduck",
            "mysql": "#/components/schemas/DatasetOptionsMysql",
            "postgres": "#/components/schemas/DatasetOptionsPostgres",
            "recharge": "#/components/schemas/DatasetOptionsRecharge",
            "redshift": "#/components/schemas/DatasetOptionsRedshift",
            "s3_csv": "#/components/schemas/DatasetOptionsS3Csv",
            "salesforce": "#/components/schemas/DatasetOptionsSalesforce",
            "salesforce_marketing_cloud": "#/components/schemas/DatasetOptionsSalesforceMarketingCloud",
            "sftp": "#/components/schemas/DatasetOptionsSftp",
            "shopify": "#/components/schemas/DatasetOptionsShopify",
            "snowflake": "#/components/schemas/DatasetOptionsSnowflake",
            "sql_server": "#/components/schemas/DatasetOptionsSqlServer",
            "stripe": "#/components/schemas/DatasetOptionsStripe"
          }
        }
      },
      "DatasetOptionsAthena": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "athena"
          }
        },
        "additionalProperties": false,
        "description": "Athena options",
        "title": "Athena"
      },
      "DatasetOptionsAthenaMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "athena"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsAthena` type.)\n\nAthena options",
        "title": "Athena"
      },
      "DatasetOptionsAthenaPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "athena"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsAthena` type.)\n\nAthena options",
        "title": "Athena"
      },
      "DatasetOptionsAthenaPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "athena"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsAthena` type.)\n\nAthena options",
        "title": "Athena"
      },
      "DatasetOptionsAwsAuroraMysql": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_mysql"
          }
        },
        "additionalProperties": false,
        "description": "Aurora (MySQL) options",
        "title": "Aurora (MySQL)"
      },
      "DatasetOptionsAwsAuroraMysqlMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsAwsAuroraMysql` type.)\n\nAurora (MySQL) options",
        "title": "Aurora (MySQL)"
      },
      "DatasetOptionsAwsAuroraMysqlPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsAwsAuroraMysql` type.)\n\nAurora (MySQL) options",
        "title": "Aurora (MySQL)"
      },
      "DatasetOptionsAwsAuroraMysqlPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsAwsAuroraMysql` type.)\n\nAurora (MySQL) options",
        "title": "Aurora (MySQL)"
      },
      "DatasetOptionsAwsAuroraPostgres": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_postgres"
          }
        },
        "additionalProperties": false,
        "description": "AWS Aurora Postgres options",
        "title": "AWS Aurora Postgres"
      },
      "DatasetOptionsAwsAuroraPostgresMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsAwsAuroraPostgres` type.)\n\nAWS Aurora Postgres options",
        "title": "AWS Aurora Postgres"
      },
      "DatasetOptionsAwsAuroraPostgresPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsAwsAuroraPostgres` type.)\n\nAWS Aurora Postgres options",
        "title": "AWS Aurora Postgres"
      },
      "DatasetOptionsAwsAuroraPostgresPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsAwsAuroraPostgres` type.)\n\nAWS Aurora Postgres options",
        "title": "AWS Aurora Postgres"
      },
      "DatasetOptionsAwsRdsMysql": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_mysql"
          }
        },
        "additionalProperties": false,
        "description": "RDS (MySQL) options",
        "title": "RDS (MySQL)"
      },
      "DatasetOptionsAwsRdsMysqlMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsAwsRdsMysql` type.)\n\nRDS (MySQL) options",
        "title": "RDS (MySQL)"
      },
      "DatasetOptionsAwsRdsMysqlPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsAwsRdsMysql` type.)\n\nRDS (MySQL) options",
        "title": "RDS (MySQL)"
      },
      "DatasetOptionsAwsRdsMysqlPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsAwsRdsMysql` type.)\n\nRDS (MySQL) options",
        "title": "RDS (MySQL)"
      },
      "DatasetOptionsAwsRdsPostgres": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_postgres"
          }
        },
        "additionalProperties": false,
        "description": "RDS (Postgres) options",
        "title": "RDS (Postgres)"
      },
      "DatasetOptionsAwsRdsPostgresMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsAwsRdsPostgres` type.)\n\nRDS (Postgres) options",
        "title": "RDS (Postgres)"
      },
      "DatasetOptionsAwsRdsPostgresPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsAwsRdsPostgres` type.)\n\nRDS (Postgres) options",
        "title": "RDS (Postgres)"
      },
      "DatasetOptionsAwsRdsPostgresPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsAwsRdsPostgres` type.)\n\nRDS (Postgres) options",
        "title": "RDS (Postgres)"
      },
      "DatasetOptionsAwsRdsSqlServer": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "RDS (SQL Server) options",
        "title": "RDS (SQL Server)"
      },
      "DatasetOptionsAwsRdsSqlServerMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsAwsRdsSqlServer` type.)\n\nRDS (SQL Server) options",
        "title": "RDS (SQL Server)"
      },
      "DatasetOptionsAwsRdsSqlServerPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsAwsRdsSqlServer` type.)\n\nRDS (SQL Server) options",
        "title": "RDS (SQL Server)"
      },
      "DatasetOptionsAwsRdsSqlServerPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsAwsRdsSqlServer` type.)\n\nRDS (SQL Server) options",
        "title": "RDS (SQL Server)"
      },
      "DatasetOptionsAwsRedshiftServerless": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_redshift_serverless"
          }
        },
        "additionalProperties": false,
        "description": "Redshift Serverless options",
        "title": "Redshift Serverless"
      },
      "DatasetOptionsAwsRedshiftServerlessMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_redshift_serverless"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsAwsRedshiftServerless` type.)\n\nRedshift Serverless options",
        "title": "Redshift Serverless"
      },
      "DatasetOptionsAwsRedshiftServerlessPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_redshift_serverless"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsAwsRedshiftServerless` type.)\n\nRedshift Serverless options",
        "title": "Redshift Serverless"
      },
      "DatasetOptionsAwsRedshiftServerlessPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_redshift_serverless"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsAwsRedshiftServerless` type.)\n\nRedshift Serverless options",
        "title": "Redshift Serverless"
      },
      "DatasetOptionsAzureSqlServer": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "azure_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "Azure SQL options",
        "title": "Azure SQL"
      },
      "DatasetOptionsAzureSqlServerMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "azure_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsAzureSqlServer` type.)\n\nAzure SQL options",
        "title": "Azure SQL"
      },
      "DatasetOptionsAzureSqlServerPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "azure_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsAzureSqlServer` type.)\n\nAzure SQL options",
        "title": "Azure SQL"
      },
      "DatasetOptionsAzureSqlServerPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "azure_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsAzureSqlServer` type.)\n\nAzure SQL options",
        "title": "Azure SQL"
      },
      "DatasetOptionsBigQuery": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "bigquery"
          }
        },
        "additionalProperties": false,
        "description": "BigQuery options",
        "title": "BigQuery"
      },
      "DatasetOptionsBigQueryMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "bigquery"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsBigQuery` type.)\n\nBigQuery options",
        "title": "BigQuery"
      },
      "DatasetOptionsBigQueryPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "bigquery"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsBigQuery` type.)\n\nBigQuery options",
        "title": "BigQuery"
      },
      "DatasetOptionsBigQueryPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "bigquery"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsBigQuery` type.)\n\nBigQuery options",
        "title": "BigQuery"
      },
      "DatasetOptionsClassic": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "classic"
          }
        },
        "additionalProperties": false,
        "description": "Classic Faraday Sources options",
        "title": "Classic Faraday Sources"
      },
      "DatasetOptionsClassicMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "classic"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsClassic` type.)\n\nClassic Faraday Sources options",
        "title": "Classic Faraday Sources"
      },
      "DatasetOptionsClassicPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "classic"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsClassic` type.)\n\nClassic Faraday Sources options",
        "title": "Classic Faraday Sources"
      },
      "DatasetOptionsClassicPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "classic"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsClassic` type.)\n\nClassic Faraday Sources options",
        "title": "Classic Faraday Sources"
      },
      "DatasetOptionsClickhouse": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "clickhouse"
          }
        },
        "additionalProperties": false,
        "description": "ClickHouse options",
        "title": "ClickHouse"
      },
      "DatasetOptionsClickhouseMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "clickhouse"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsClickhouse` type.)\n\nClickHouse options",
        "title": "ClickHouse"
      },
      "DatasetOptionsClickhousePost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "clickhouse"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsClickhouse` type.)\n\nClickHouse options",
        "title": "ClickHouse"
      },
      "DatasetOptionsClickhousePut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "clickhouse"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsClickhouse` type.)\n\nClickHouse options",
        "title": "ClickHouse"
      },
      "DatasetOptionsDatabricks": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks"
          }
        },
        "additionalProperties": false,
        "description": "Databricks options",
        "title": "Databricks"
      },
      "DatasetOptionsDatabricksDeltaSharing": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks_delta_sharing"
          }
        },
        "additionalProperties": false,
        "description": "Databricks Delta Sharing options",
        "title": "Databricks Delta Sharing"
      },
      "DatasetOptionsDatabricksDeltaSharingMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks_delta_sharing"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsDatabricksDeltaSharing` type.)\n\nDatabricks Delta Sharing options",
        "title": "Databricks Delta Sharing"
      },
      "DatasetOptionsDatabricksDeltaSharingPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks_delta_sharing"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsDatabricksDeltaSharing` type.)\n\nDatabricks Delta Sharing options",
        "title": "Databricks Delta Sharing"
      },
      "DatasetOptionsDatabricksDeltaSharingPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks_delta_sharing"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsDatabricksDeltaSharing` type.)\n\nDatabricks Delta Sharing options",
        "title": "Databricks Delta Sharing"
      },
      "DatasetOptionsDatabricksMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsDatabricks` type.)\n\nDatabricks options",
        "title": "Databricks"
      },
      "DatasetOptionsDatabricksPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsDatabricks` type.)\n\nDatabricks options",
        "title": "Databricks"
      },
      "DatasetOptionsDatabricksPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsDatabricks` type.)\n\nDatabricks options",
        "title": "Databricks"
      },
      "DatasetOptionsGcpCloudSqlMysql": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_mysql"
          }
        },
        "additionalProperties": false,
        "description": "Google Cloud SQL (MySQL) options",
        "title": "Google Cloud SQL (MySQL)"
      },
      "DatasetOptionsGcpCloudSqlMysqlMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsGcpCloudSqlMysql` type.)\n\nGoogle Cloud SQL (MySQL) options",
        "title": "Google Cloud SQL (MySQL)"
      },
      "DatasetOptionsGcpCloudSqlMysqlPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsGcpCloudSqlMysql` type.)\n\nGoogle Cloud SQL (MySQL) options",
        "title": "Google Cloud SQL (MySQL)"
      },
      "DatasetOptionsGcpCloudSqlMysqlPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsGcpCloudSqlMysql` type.)\n\nGoogle Cloud SQL (MySQL) options",
        "title": "Google Cloud SQL (MySQL)"
      },
      "DatasetOptionsGcpCloudSqlPostgres": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_postgres"
          }
        },
        "additionalProperties": false,
        "description": "Google Cloud SQL (Postgres) options",
        "title": "Google Cloud SQL (Postgres)"
      },
      "DatasetOptionsGcpCloudSqlPostgresMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsGcpCloudSqlPostgres` type.)\n\nGoogle Cloud SQL (Postgres) options",
        "title": "Google Cloud SQL (Postgres)"
      },
      "DatasetOptionsGcpCloudSqlPostgresPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsGcpCloudSqlPostgres` type.)\n\nGoogle Cloud SQL (Postgres) options",
        "title": "Google Cloud SQL (Postgres)"
      },
      "DatasetOptionsGcpCloudSqlPostgresPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsGcpCloudSqlPostgres` type.)\n\nGoogle Cloud SQL (Postgres) options",
        "title": "Google Cloud SQL (Postgres)"
      },
      "DatasetOptionsGcpCloudSqlSqlServer": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "Google Cloud SQL (SQL Server) options",
        "title": "Google Cloud SQL (SQL Server)"
      },
      "DatasetOptionsGcpCloudSqlSqlServerMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsGcpCloudSqlSqlServer` type.)\n\nGoogle Cloud SQL (SQL Server) options",
        "title": "Google Cloud SQL (SQL Server)"
      },
      "DatasetOptionsGcpCloudSqlSqlServerPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsGcpCloudSqlSqlServer` type.)\n\nGoogle Cloud SQL (SQL Server) options",
        "title": "Google Cloud SQL (SQL Server)"
      },
      "DatasetOptionsGcpCloudSqlSqlServerPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsGcpCloudSqlSqlServer` type.)\n\nGoogle Cloud SQL (SQL Server) options",
        "title": "Google Cloud SQL (SQL Server)"
      },
      "DatasetOptionsGcpGcsCsv": {
        "type": "object",
        "required": [
          "prefix",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "encrypted": {
            "type": "boolean",
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "type": "string",
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
          },
          "prefix": {
            "type": "string",
            "description": "The prefix inside the bucket. May optionally include full filename, file globs (not regexp), and stftime date parsing formatting (which will override blob storage's native timestamps). For example, orders/, orders/file.csv, orders/*.csv, or orders/files-%Y-%m-%d.csv",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 \\-\\[\\]/_?%.*]+$"
          },
          "replace_all_with_latest_file": {
            "type": "boolean",
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_gcs_csv"
          }
        },
        "additionalProperties": false,
        "description": "GCS options",
        "title": "GCS"
      },
      "DatasetOptionsGcpGcsCsvMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "delimiter": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^([,;|\\t]|\\\\t)$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`."
          },
          "encrypted": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers."
          },
          "prefix": {
            "type": "string",
            "description": "The prefix inside the bucket. May optionally include full filename, file globs (not regexp), and stftime date parsing formatting (which will override blob storage's native timestamps). For example, orders/, orders/file.csv, orders/*.csv, or orders/files-%Y-%m-%d.csv",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 \\-\\[\\]/_?%.*]+$"
          },
          "replace_all_with_latest_file": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_gcs_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsGcpGcsCsv` type.)\n\nGCS options",
        "title": "GCS"
      },
      "DatasetOptionsGcpGcsCsvPost": {
        "type": "object",
        "required": [
          "prefix",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "encrypted": {
            "type": "boolean",
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "type": "string",
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
          },
          "prefix": {
            "type": "string",
            "description": "The prefix inside the bucket. May optionally include full filename, file globs (not regexp), and stftime date parsing formatting (which will override blob storage's native timestamps). For example, orders/, orders/file.csv, orders/*.csv, or orders/files-%Y-%m-%d.csv",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 \\-\\[\\]/_?%.*]+$"
          },
          "replace_all_with_latest_file": {
            "type": "boolean",
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_gcs_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsGcpGcsCsv` type.)\n\nGCS options",
        "title": "GCS"
      },
      "DatasetOptionsGcpGcsCsvPut": {
        "type": "object",
        "required": [
          "prefix",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "encrypted": {
            "type": "boolean",
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "type": "string",
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
          },
          "prefix": {
            "type": "string",
            "description": "The prefix inside the bucket. May optionally include full filename, file globs (not regexp), and stftime date parsing formatting (which will override blob storage's native timestamps). For example, orders/, orders/file.csv, orders/*.csv, or orders/files-%Y-%m-%d.csv",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 \\-\\[\\]/_?%.*]+$"
          },
          "replace_all_with_latest_file": {
            "type": "boolean",
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_gcs_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsGcpGcsCsv` type.)\n\nGCS options",
        "title": "GCS"
      },
      "DatasetOptionsHostedCsv": {
        "type": "object",
        "required": [
          "type",
          "upload_directory"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "encrypted": {
            "type": "boolean",
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "type": "string",
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
          },
          "replace_all_with_latest_file": {
            "type": "boolean",
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hosted_csv"
          },
          "upload_directory": {
            "type": "string",
            "description": "Subdirectory of uploads where files are stored and retrieved.\nA directory is dedicated to one or more files which ought to have the same shape and contents. One or more datasets can pull from that folder (and in different ways) and push to one or more event streams. So if you have two different types of orders from two different POS/ecommerce systems, you would put them each in separate folders. Then you would create two different datasets that would both point to an `orders` stream.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_]+$"
          }
        },
        "additionalProperties": false,
        "description": "CSV options",
        "title": "CSV"
      },
      "DatasetOptionsHostedCsvMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "delimiter": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^([,;|\\t]|\\\\t)$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`."
          },
          "encrypted": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers."
          },
          "replace_all_with_latest_file": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hosted_csv"
          },
          "upload_directory": {
            "type": "string",
            "description": "Subdirectory of uploads where files are stored and retrieved.\nA directory is dedicated to one or more files which ought to have the same shape and contents. One or more datasets can pull from that folder (and in different ways) and push to one or more event streams. So if you have two different types of orders from two different POS/ecommerce systems, you would put them each in separate folders. Then you would create two different datasets that would both point to an `orders` stream.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsHostedCsv` type.)\n\nCSV options",
        "title": "CSV"
      },
      "DatasetOptionsHostedCsvPost": {
        "type": "object",
        "required": [
          "type",
          "upload_directory"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "encrypted": {
            "type": "boolean",
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "type": "string",
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
          },
          "replace_all_with_latest_file": {
            "type": "boolean",
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hosted_csv"
          },
          "upload_directory": {
            "type": "string",
            "description": "Subdirectory of uploads where files are stored and retrieved.\nA directory is dedicated to one or more files which ought to have the same shape and contents. One or more datasets can pull from that folder (and in different ways) and push to one or more event streams. So if you have two different types of orders from two different POS/ecommerce systems, you would put them each in separate folders. Then you would create two different datasets that would both point to an `orders` stream.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsHostedCsv` type.)\n\nCSV options",
        "title": "CSV"
      },
      "DatasetOptionsHostedCsvPut": {
        "type": "object",
        "required": [
          "type",
          "upload_directory"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "encrypted": {
            "type": "boolean",
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "type": "string",
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
          },
          "replace_all_with_latest_file": {
            "type": "boolean",
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hosted_csv"
          },
          "upload_directory": {
            "type": "string",
            "description": "Subdirectory of uploads where files are stored and retrieved.\nA directory is dedicated to one or more files which ought to have the same shape and contents. One or more datasets can pull from that folder (and in different ways) and push to one or more event streams. So if you have two different types of orders from two different POS/ecommerce systems, you would put them each in separate folders. Then you would create two different datasets that would both point to an `orders` stream.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_]+$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsHostedCsv` type.)\n\nCSV options",
        "title": "CSV"
      },
      "DatasetOptionsHubspot": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hubspot"
          }
        },
        "additionalProperties": false,
        "description": "HubSpot options",
        "title": "HubSpot"
      },
      "DatasetOptionsHubspotMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hubspot"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsHubspot` type.)\n\nHubSpot options",
        "title": "HubSpot"
      },
      "DatasetOptionsHubspotPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hubspot"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsHubspot` type.)\n\nHubSpot options",
        "title": "HubSpot"
      },
      "DatasetOptionsHubspotPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hubspot"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsHubspot` type.)\n\nHubSpot options",
        "title": "HubSpot"
      },
      "DatasetOptionsIterable": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "iterable"
          }
        },
        "additionalProperties": false,
        "description": "Iterable options",
        "title": "Iterable"
      },
      "DatasetOptionsIterableMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "iterable"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsIterable` type.)\n\nIterable options",
        "title": "Iterable"
      },
      "DatasetOptionsIterablePost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "iterable"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsIterable` type.)\n\nIterable options",
        "title": "Iterable"
      },
      "DatasetOptionsIterablePut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "iterable"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsIterable` type.)\n\nIterable options",
        "title": "Iterable"
      },
      "DatasetOptionsKlaviyo": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "klaviyo"
          }
        },
        "additionalProperties": false,
        "description": "Klaviyo options",
        "title": "Klaviyo"
      },
      "DatasetOptionsKlaviyoMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "klaviyo"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsKlaviyo` type.)\n\nKlaviyo options",
        "title": "Klaviyo"
      },
      "DatasetOptionsKlaviyoPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "klaviyo"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsKlaviyo` type.)\n\nKlaviyo options",
        "title": "Klaviyo"
      },
      "DatasetOptionsKlaviyoPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "klaviyo"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsKlaviyo` type.)\n\nKlaviyo options",
        "title": "Klaviyo"
      },
      "DatasetOptionsMerge": {
        "type": "object",
        "required": [
          "merge",
          "type"
        ],
        "properties": {
          "merge": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "dataset_id",
                "join_column"
              ],
              "properties": {
                "dataset_id": {
                  "type": "string",
                  "description": "The id of the dataset to merge",
                  "format": "uuid"
                },
                "join_column": {
                  "type": "string",
                  "description": "Which column should be used to merge this dataset with the other datasets"
                }
              }
            },
            "description": "Which datasets should be merged, and what is the join column"
          },
          "migrate": {
            "type": "boolean",
            "description": "If true, automatically move identity_sets, output_to_streams, and output_to_traits from input source tables to the merge dataset."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "merge"
          }
        },
        "additionalProperties": false,
        "description": "Merge Dataset options",
        "title": "Merge Dataset"
      },
      "DatasetOptionsMergeMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "merge": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "dataset_id",
                "join_column"
              ],
              "properties": {
                "dataset_id": {
                  "type": "string",
                  "description": "The id of the dataset to merge",
                  "format": "uuid"
                },
                "join_column": {
                  "type": "string",
                  "description": "Which column should be used to merge this dataset with the other datasets"
                }
              }
            },
            "description": "Which datasets should be merged, and what is the join column"
          },
          "migrate": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "If true, automatically move identity_sets, output_to_streams, and output_to_traits from input source tables to the merge dataset."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "merge"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsMerge` type.)\n\nMerge Dataset options",
        "title": "Merge Dataset"
      },
      "DatasetOptionsMergePatch": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/DatasetOptionsAthenaMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRedshiftServerlessMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAzureSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsBigQueryMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsClassicMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsClickhouseMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksDeltaSharingMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpGcsCsvMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsHostedCsvMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsHubspotMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsIterableMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsKlaviyoMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMergeMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMotherduckMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsRechargeMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsRedshiftMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsS3CsvMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSalesforceMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSalesforceMarketingCloudMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSftpMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsShopifyMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSnowflakeMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsStripeMergePatch"
          }
        ],
        "description": "Dataset connection options",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/DatasetOptionsAthenaMergePatch",
            "aws_aurora_mysql": "#/components/schemas/DatasetOptionsAwsAuroraMysqlMergePatch",
            "aws_aurora_postgres": "#/components/schemas/DatasetOptionsAwsAuroraPostgresMergePatch",
            "aws_rds_mysql": "#/components/schemas/DatasetOptionsAwsRdsMysqlMergePatch",
            "aws_rds_postgres": "#/components/schemas/DatasetOptionsAwsRdsPostgresMergePatch",
            "aws_rds_sql_server": "#/components/schemas/DatasetOptionsAwsRdsSqlServerMergePatch",
            "aws_redshift_serverless": "#/components/schemas/DatasetOptionsAwsRedshiftServerlessMergePatch",
            "azure_sql_server": "#/components/schemas/DatasetOptionsAzureSqlServerMergePatch",
            "bigquery": "#/components/schemas/DatasetOptionsBigQueryMergePatch",
            "classic": "#/components/schemas/DatasetOptionsClassicMergePatch",
            "clickhouse": "#/components/schemas/DatasetOptionsClickhouseMergePatch",
            "databricks": "#/components/schemas/DatasetOptionsDatabricksMergePatch",
            "databricks_delta_sharing": "#/components/schemas/DatasetOptionsDatabricksDeltaSharingMergePatch",
            "gcp_cloud_sql_mysql": "#/components/schemas/DatasetOptionsGcpCloudSqlMysqlMergePatch",
            "gcp_cloud_sql_postgres": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgresMergePatch",
            "gcp_cloud_sql_sql_server": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServerMergePatch",
            "gcp_gcs_csv": "#/components/schemas/DatasetOptionsGcpGcsCsvMergePatch",
            "hosted_csv": "#/components/schemas/DatasetOptionsHostedCsvMergePatch",
            "hubspot": "#/components/schemas/DatasetOptionsHubspotMergePatch",
            "iterable": "#/components/schemas/DatasetOptionsIterableMergePatch",
            "klaviyo": "#/components/schemas/DatasetOptionsKlaviyoMergePatch",
            "merge": "#/components/schemas/DatasetOptionsMergeMergePatch",
            "motherduck": "#/components/schemas/DatasetOptionsMotherduckMergePatch",
            "mysql": "#/components/schemas/DatasetOptionsMysqlMergePatch",
            "postgres": "#/components/schemas/DatasetOptionsPostgresMergePatch",
            "recharge": "#/components/schemas/DatasetOptionsRechargeMergePatch",
            "redshift": "#/components/schemas/DatasetOptionsRedshiftMergePatch",
            "s3_csv": "#/components/schemas/DatasetOptionsS3CsvMergePatch",
            "salesforce": "#/components/schemas/DatasetOptionsSalesforceMergePatch",
            "salesforce_marketing_cloud": "#/components/schemas/DatasetOptionsSalesforceMarketingCloudMergePatch",
            "sftp": "#/components/schemas/DatasetOptionsSftpMergePatch",
            "shopify": "#/components/schemas/DatasetOptionsShopifyMergePatch",
            "snowflake": "#/components/schemas/DatasetOptionsSnowflakeMergePatch",
            "sql_server": "#/components/schemas/DatasetOptionsSqlServerMergePatch",
            "stripe": "#/components/schemas/DatasetOptionsStripeMergePatch"
          }
        }
      },
      "DatasetOptionsMergePost": {
        "type": "object",
        "required": [
          "merge",
          "type"
        ],
        "properties": {
          "merge": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "dataset_id",
                "join_column"
              ],
              "properties": {
                "dataset_id": {
                  "type": "string",
                  "description": "The id of the dataset to merge",
                  "format": "uuid"
                },
                "join_column": {
                  "type": "string",
                  "description": "Which column should be used to merge this dataset with the other datasets"
                }
              }
            },
            "description": "Which datasets should be merged, and what is the join column"
          },
          "migrate": {
            "type": "boolean",
            "description": "If true, automatically move identity_sets, output_to_streams, and output_to_traits from input source tables to the merge dataset."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "merge"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsMerge` type.)\n\nMerge Dataset options",
        "title": "Merge Dataset"
      },
      "DatasetOptionsMergePut": {
        "type": "object",
        "required": [
          "merge",
          "type"
        ],
        "properties": {
          "merge": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "dataset_id",
                "join_column"
              ],
              "properties": {
                "dataset_id": {
                  "type": "string",
                  "description": "The id of the dataset to merge",
                  "format": "uuid"
                },
                "join_column": {
                  "type": "string",
                  "description": "Which column should be used to merge this dataset with the other datasets"
                }
              }
            },
            "description": "Which datasets should be merged, and what is the join column"
          },
          "migrate": {
            "type": "boolean",
            "description": "If true, automatically move identity_sets, output_to_streams, and output_to_traits from input source tables to the merge dataset."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "merge"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsMerge` type.)\n\nMerge Dataset options",
        "title": "Merge Dataset"
      },
      "DatasetOptionsMotherduck": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "schema": {
            "type": "string",
            "description": "MotherDuck schema name. Defaults to 'main' if not provided.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "motherduck"
          }
        },
        "additionalProperties": false,
        "description": "MotherDuck options",
        "title": "MotherDuck"
      },
      "DatasetOptionsMotherduckMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "schema": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "MotherDuck schema name. Defaults to 'main' if not provided."
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "motherduck"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsMotherduck` type.)\n\nMotherDuck options",
        "title": "MotherDuck"
      },
      "DatasetOptionsMotherduckPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "schema": {
            "type": "string",
            "description": "MotherDuck schema name. Defaults to 'main' if not provided.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "motherduck"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsMotherduck` type.)\n\nMotherDuck options",
        "title": "MotherDuck"
      },
      "DatasetOptionsMotherduckPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "schema": {
            "type": "string",
            "description": "MotherDuck schema name. Defaults to 'main' if not provided.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "motherduck"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsMotherduck` type.)\n\nMotherDuck options",
        "title": "MotherDuck"
      },
      "DatasetOptionsMysql": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "mysql"
          }
        },
        "additionalProperties": false,
        "description": "MySQL options",
        "title": "MySQL"
      },
      "DatasetOptionsMysqlMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsMysql` type.)\n\nMySQL options",
        "title": "MySQL"
      },
      "DatasetOptionsMysqlPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsMysql` type.)\n\nMySQL options",
        "title": "MySQL"
      },
      "DatasetOptionsMysqlPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsMysql` type.)\n\nMySQL options",
        "title": "MySQL"
      },
      "DatasetOptionsPost": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/DatasetOptionsAthenaPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraMysqlPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraPostgresPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsMysqlPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsPostgresPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRedshiftServerlessPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAzureSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsBigQueryPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsClassicPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsClickhousePost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksDeltaSharingPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlMysqlPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgresPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpGcsCsvPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsHostedCsvPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsHubspotPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsIterablePost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsKlaviyoPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMergePost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMotherduckPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMysqlPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsPostgresPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsRechargePost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsRedshiftPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsS3CsvPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSalesforcePost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSalesforceMarketingCloudPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSftpPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsShopifyPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSnowflakePost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsStripePost"
          }
        ],
        "description": "Dataset connection options",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/DatasetOptionsAthenaPost",
            "aws_aurora_mysql": "#/components/schemas/DatasetOptionsAwsAuroraMysqlPost",
            "aws_aurora_postgres": "#/components/schemas/DatasetOptionsAwsAuroraPostgresPost",
            "aws_rds_mysql": "#/components/schemas/DatasetOptionsAwsRdsMysqlPost",
            "aws_rds_postgres": "#/components/schemas/DatasetOptionsAwsRdsPostgresPost",
            "aws_rds_sql_server": "#/components/schemas/DatasetOptionsAwsRdsSqlServerPost",
            "aws_redshift_serverless": "#/components/schemas/DatasetOptionsAwsRedshiftServerlessPost",
            "azure_sql_server": "#/components/schemas/DatasetOptionsAzureSqlServerPost",
            "bigquery": "#/components/schemas/DatasetOptionsBigQueryPost",
            "classic": "#/components/schemas/DatasetOptionsClassicPost",
            "clickhouse": "#/components/schemas/DatasetOptionsClickhousePost",
            "databricks": "#/components/schemas/DatasetOptionsDatabricksPost",
            "databricks_delta_sharing": "#/components/schemas/DatasetOptionsDatabricksDeltaSharingPost",
            "gcp_cloud_sql_mysql": "#/components/schemas/DatasetOptionsGcpCloudSqlMysqlPost",
            "gcp_cloud_sql_postgres": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgresPost",
            "gcp_cloud_sql_sql_server": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServerPost",
            "gcp_gcs_csv": "#/components/schemas/DatasetOptionsGcpGcsCsvPost",
            "hosted_csv": "#/components/schemas/DatasetOptionsHostedCsvPost",
            "hubspot": "#/components/schemas/DatasetOptionsHubspotPost",
            "iterable": "#/components/schemas/DatasetOptionsIterablePost",
            "klaviyo": "#/components/schemas/DatasetOptionsKlaviyoPost",
            "merge": "#/components/schemas/DatasetOptionsMergePost",
            "motherduck": "#/components/schemas/DatasetOptionsMotherduckPost",
            "mysql": "#/components/schemas/DatasetOptionsMysqlPost",
            "postgres": "#/components/schemas/DatasetOptionsPostgresPost",
            "recharge": "#/components/schemas/DatasetOptionsRechargePost",
            "redshift": "#/components/schemas/DatasetOptionsRedshiftPost",
            "s3_csv": "#/components/schemas/DatasetOptionsS3CsvPost",
            "salesforce": "#/components/schemas/DatasetOptionsSalesforcePost",
            "salesforce_marketing_cloud": "#/components/schemas/DatasetOptionsSalesforceMarketingCloudPost",
            "sftp": "#/components/schemas/DatasetOptionsSftpPost",
            "shopify": "#/components/schemas/DatasetOptionsShopifyPost",
            "snowflake": "#/components/schemas/DatasetOptionsSnowflakePost",
            "sql_server": "#/components/schemas/DatasetOptionsSqlServerPost",
            "stripe": "#/components/schemas/DatasetOptionsStripePost"
          }
        }
      },
      "DatasetOptionsPostgres": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "postgres"
          }
        },
        "additionalProperties": false,
        "description": "Postgres options",
        "title": "Postgres"
      },
      "DatasetOptionsPostgresMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsPostgres` type.)\n\nPostgres options",
        "title": "Postgres"
      },
      "DatasetOptionsPostgresPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsPostgres` type.)\n\nPostgres options",
        "title": "Postgres"
      },
      "DatasetOptionsPostgresPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsPostgres` type.)\n\nPostgres options",
        "title": "Postgres"
      },
      "DatasetOptionsPut": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/DatasetOptionsAthenaPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraMysqlPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsAuroraPostgresPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsMysqlPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsPostgresPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRdsSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAwsRedshiftServerlessPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsAzureSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsBigQueryPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsClassicPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsClickhousePut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsDatabricksDeltaSharingPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlMysqlPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgresPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsGcpGcsCsvPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsHostedCsvPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsHubspotPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsIterablePut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsKlaviyoPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMergePut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMotherduckPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsMysqlPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsPostgresPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsRechargePut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsRedshiftPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsS3CsvPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSalesforcePut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSalesforceMarketingCloudPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSftpPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsShopifyPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSnowflakePut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/DatasetOptionsStripePut"
          }
        ],
        "description": "Dataset connection options",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/DatasetOptionsAthenaPut",
            "aws_aurora_mysql": "#/components/schemas/DatasetOptionsAwsAuroraMysqlPut",
            "aws_aurora_postgres": "#/components/schemas/DatasetOptionsAwsAuroraPostgresPut",
            "aws_rds_mysql": "#/components/schemas/DatasetOptionsAwsRdsMysqlPut",
            "aws_rds_postgres": "#/components/schemas/DatasetOptionsAwsRdsPostgresPut",
            "aws_rds_sql_server": "#/components/schemas/DatasetOptionsAwsRdsSqlServerPut",
            "aws_redshift_serverless": "#/components/schemas/DatasetOptionsAwsRedshiftServerlessPut",
            "azure_sql_server": "#/components/schemas/DatasetOptionsAzureSqlServerPut",
            "bigquery": "#/components/schemas/DatasetOptionsBigQueryPut",
            "classic": "#/components/schemas/DatasetOptionsClassicPut",
            "clickhouse": "#/components/schemas/DatasetOptionsClickhousePut",
            "databricks": "#/components/schemas/DatasetOptionsDatabricksPut",
            "databricks_delta_sharing": "#/components/schemas/DatasetOptionsDatabricksDeltaSharingPut",
            "gcp_cloud_sql_mysql": "#/components/schemas/DatasetOptionsGcpCloudSqlMysqlPut",
            "gcp_cloud_sql_postgres": "#/components/schemas/DatasetOptionsGcpCloudSqlPostgresPut",
            "gcp_cloud_sql_sql_server": "#/components/schemas/DatasetOptionsGcpCloudSqlSqlServerPut",
            "gcp_gcs_csv": "#/components/schemas/DatasetOptionsGcpGcsCsvPut",
            "hosted_csv": "#/components/schemas/DatasetOptionsHostedCsvPut",
            "hubspot": "#/components/schemas/DatasetOptionsHubspotPut",
            "iterable": "#/components/schemas/DatasetOptionsIterablePut",
            "klaviyo": "#/components/schemas/DatasetOptionsKlaviyoPut",
            "merge": "#/components/schemas/DatasetOptionsMergePut",
            "motherduck": "#/components/schemas/DatasetOptionsMotherduckPut",
            "mysql": "#/components/schemas/DatasetOptionsMysqlPut",
            "postgres": "#/components/schemas/DatasetOptionsPostgresPut",
            "recharge": "#/components/schemas/DatasetOptionsRechargePut",
            "redshift": "#/components/schemas/DatasetOptionsRedshiftPut",
            "s3_csv": "#/components/schemas/DatasetOptionsS3CsvPut",
            "salesforce": "#/components/schemas/DatasetOptionsSalesforcePut",
            "salesforce_marketing_cloud": "#/components/schemas/DatasetOptionsSalesforceMarketingCloudPut",
            "sftp": "#/components/schemas/DatasetOptionsSftpPut",
            "shopify": "#/components/schemas/DatasetOptionsShopifyPut",
            "snowflake": "#/components/schemas/DatasetOptionsSnowflakePut",
            "sql_server": "#/components/schemas/DatasetOptionsSqlServerPut",
            "stripe": "#/components/schemas/DatasetOptionsStripePut"
          }
        }
      },
      "DatasetOptionsRecharge": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "recharge"
          }
        },
        "additionalProperties": false,
        "description": "Recharge options",
        "title": "Recharge"
      },
      "DatasetOptionsRechargeMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "recharge"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsRecharge` type.)\n\nRecharge options",
        "title": "Recharge"
      },
      "DatasetOptionsRechargePost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "recharge"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsRecharge` type.)\n\nRecharge options",
        "title": "Recharge"
      },
      "DatasetOptionsRechargePut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "recharge"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsRecharge` type.)\n\nRecharge options",
        "title": "Recharge"
      },
      "DatasetOptionsRedshift": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "redshift"
          }
        },
        "additionalProperties": false,
        "description": "Redshift options",
        "title": "Redshift"
      },
      "DatasetOptionsRedshiftMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "redshift"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsRedshift` type.)\n\nRedshift options",
        "title": "Redshift"
      },
      "DatasetOptionsRedshiftPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "redshift"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsRedshift` type.)\n\nRedshift options",
        "title": "Redshift"
      },
      "DatasetOptionsRedshiftPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "redshift"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsRedshift` type.)\n\nRedshift options",
        "title": "Redshift"
      },
      "DatasetOptionsS3Csv": {
        "type": "object",
        "required": [
          "prefix",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "encrypted": {
            "type": "boolean",
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "type": "string",
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
          },
          "prefix": {
            "type": "string",
            "description": "The prefix inside the bucket. May optionally include full filename, file globs (not regexp), and stftime date parsing formatting (which will override blob storage's native timestamps). For example, orders/, orders/file.csv, orders/*.csv, or orders/files-%Y-%m-%d.csv",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 \\-\\[\\]/_?%.*]+$"
          },
          "replace_all_with_latest_file": {
            "type": "boolean",
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "s3_csv"
          }
        },
        "additionalProperties": false,
        "description": "S3 options",
        "title": "S3"
      },
      "DatasetOptionsS3CsvMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "delimiter": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^([,;|\\t]|\\\\t)$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`."
          },
          "encrypted": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers."
          },
          "prefix": {
            "type": "string",
            "description": "The prefix inside the bucket. May optionally include full filename, file globs (not regexp), and stftime date parsing formatting (which will override blob storage's native timestamps). For example, orders/, orders/file.csv, orders/*.csv, or orders/files-%Y-%m-%d.csv",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 \\-\\[\\]/_?%.*]+$"
          },
          "replace_all_with_latest_file": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "s3_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsS3Csv` type.)\n\nS3 options",
        "title": "S3"
      },
      "DatasetOptionsS3CsvPost": {
        "type": "object",
        "required": [
          "prefix",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "encrypted": {
            "type": "boolean",
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "type": "string",
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
          },
          "prefix": {
            "type": "string",
            "description": "The prefix inside the bucket. May optionally include full filename, file globs (not regexp), and stftime date parsing formatting (which will override blob storage's native timestamps). For example, orders/, orders/file.csv, orders/*.csv, or orders/files-%Y-%m-%d.csv",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 \\-\\[\\]/_?%.*]+$"
          },
          "replace_all_with_latest_file": {
            "type": "boolean",
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "s3_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsS3Csv` type.)\n\nS3 options",
        "title": "S3"
      },
      "DatasetOptionsS3CsvPut": {
        "type": "object",
        "required": [
          "prefix",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "encrypted": {
            "type": "boolean",
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "type": "string",
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
          },
          "prefix": {
            "type": "string",
            "description": "The prefix inside the bucket. May optionally include full filename, file globs (not regexp), and stftime date parsing formatting (which will override blob storage's native timestamps). For example, orders/, orders/file.csv, orders/*.csv, or orders/files-%Y-%m-%d.csv",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 \\-\\[\\]/_?%.*]+$"
          },
          "replace_all_with_latest_file": {
            "type": "boolean",
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "s3_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsS3Csv` type.)\n\nS3 options",
        "title": "S3"
      },
      "DatasetOptionsSalesforce": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce"
          }
        },
        "additionalProperties": false,
        "description": "Salesforce options",
        "title": "Salesforce"
      },
      "DatasetOptionsSalesforceMarketingCloud": {
        "type": "object",
        "required": [
          "tenant_subdomain",
          "type"
        ],
        "properties": {
          "tenant_subdomain": {
            "type": "string",
            "description": "The auto-generated ID unique to your Salesforce Marketing Cloud account. Refer to <a href=\"https://www.stitchdata.com/docs/integrations/saas/salesforce-marketing-cloud#retrieve-tenant-subdomain\">the Stitch docs</a>.",
            "pattern": "^\\w[\\w.-]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce_marketing_cloud"
          }
        },
        "additionalProperties": false,
        "description": "Salesforce Marketing Cloud options",
        "title": "Salesforce Marketing Cloud"
      },
      "DatasetOptionsSalesforceMarketingCloudMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "tenant_subdomain": {
            "type": "string",
            "description": "The auto-generated ID unique to your Salesforce Marketing Cloud account. Refer to <a href=\"https://www.stitchdata.com/docs/integrations/saas/salesforce-marketing-cloud#retrieve-tenant-subdomain\">the Stitch docs</a>.",
            "pattern": "^\\w[\\w.-]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce_marketing_cloud"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsSalesforceMarketingCloud` type.)\n\nSalesforce Marketing Cloud options",
        "title": "Salesforce Marketing Cloud"
      },
      "DatasetOptionsSalesforceMarketingCloudPost": {
        "type": "object",
        "required": [
          "tenant_subdomain",
          "type"
        ],
        "properties": {
          "tenant_subdomain": {
            "type": "string",
            "description": "The auto-generated ID unique to your Salesforce Marketing Cloud account. Refer to <a href=\"https://www.stitchdata.com/docs/integrations/saas/salesforce-marketing-cloud#retrieve-tenant-subdomain\">the Stitch docs</a>.",
            "pattern": "^\\w[\\w.-]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce_marketing_cloud"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsSalesforceMarketingCloud` type.)\n\nSalesforce Marketing Cloud options",
        "title": "Salesforce Marketing Cloud"
      },
      "DatasetOptionsSalesforceMarketingCloudPut": {
        "type": "object",
        "required": [
          "tenant_subdomain",
          "type"
        ],
        "properties": {
          "tenant_subdomain": {
            "type": "string",
            "description": "The auto-generated ID unique to your Salesforce Marketing Cloud account. Refer to <a href=\"https://www.stitchdata.com/docs/integrations/saas/salesforce-marketing-cloud#retrieve-tenant-subdomain\">the Stitch docs</a>.",
            "pattern": "^\\w[\\w.-]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce_marketing_cloud"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsSalesforceMarketingCloud` type.)\n\nSalesforce Marketing Cloud options",
        "title": "Salesforce Marketing Cloud"
      },
      "DatasetOptionsSalesforceMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsSalesforce` type.)\n\nSalesforce options",
        "title": "Salesforce"
      },
      "DatasetOptionsSalesforcePost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsSalesforce` type.)\n\nSalesforce options",
        "title": "Salesforce"
      },
      "DatasetOptionsSalesforcePut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsSalesforce` type.)\n\nSalesforce options",
        "title": "Salesforce"
      },
      "DatasetOptionsSftp": {
        "type": "object",
        "required": [
          "prefix",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "encrypted": {
            "type": "boolean",
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "type": "string",
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
          },
          "prefix": {
            "type": "string",
            "description": "The path to the data inside the server. May optionally include full filename, file globs (not regexp), and stftime date parsing formatting. For example, orders/, orders/file.csv, orders/*.csv, or orders/files-%Y-%m-%d.csv",
            "pattern": "^(/|[a-zA-Z0-9][a-zA-Z0-9 \\-\\[\\]/_?%.*]+)$"
          },
          "replace_all_with_latest_file": {
            "type": "boolean",
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sftp"
          }
        },
        "additionalProperties": false,
        "description": "SFTP options",
        "title": "SFTP"
      },
      "DatasetOptionsSftpMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "delimiter": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^([,;|\\t]|\\\\t)$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`."
          },
          "encrypted": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers."
          },
          "prefix": {
            "type": "string",
            "description": "The path to the data inside the server. May optionally include full filename, file globs (not regexp), and stftime date parsing formatting. For example, orders/, orders/file.csv, orders/*.csv, or orders/files-%Y-%m-%d.csv",
            "pattern": "^(/|[a-zA-Z0-9][a-zA-Z0-9 \\-\\[\\]/_?%.*]+)$"
          },
          "replace_all_with_latest_file": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sftp"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsSftp` type.)\n\nSFTP options",
        "title": "SFTP"
      },
      "DatasetOptionsSftpPost": {
        "type": "object",
        "required": [
          "prefix",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "encrypted": {
            "type": "boolean",
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "type": "string",
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
          },
          "prefix": {
            "type": "string",
            "description": "The path to the data inside the server. May optionally include full filename, file globs (not regexp), and stftime date parsing formatting. For example, orders/, orders/file.csv, orders/*.csv, or orders/files-%Y-%m-%d.csv",
            "pattern": "^(/|[a-zA-Z0-9][a-zA-Z0-9 \\-\\[\\]/_?%.*]+)$"
          },
          "replace_all_with_latest_file": {
            "type": "boolean",
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sftp"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsSftp` type.)\n\nSFTP options",
        "title": "SFTP"
      },
      "DatasetOptionsSftpPut": {
        "type": "object",
        "required": [
          "prefix",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "encrypted": {
            "type": "boolean",
            "description": "Whether the files you uploaded are encrypted with Faraday's public key."
          },
          "header_row": {
            "type": "string",
            "description": "A row of column headers. The delimiter must be the same as the `delimiter` parameter and match the data. If not provided, the first row of the CSV file will be used as the headers.",
            "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_,;\\t|]+$"
          },
          "prefix": {
            "type": "string",
            "description": "The path to the data inside the server. May optionally include full filename, file globs (not regexp), and stftime date parsing formatting. For example, orders/, orders/file.csv, orders/*.csv, or orders/files-%Y-%m-%d.csv",
            "pattern": "^(/|[a-zA-Z0-9][a-zA-Z0-9 \\-\\[\\]/_?%.*]+)$"
          },
          "replace_all_with_latest_file": {
            "type": "boolean",
            "description": "Defaults to false, which means all files are merged into the dataset. If set to true, every time the dataset is ingested, delete all previous data and replace it with only the data in the latest file. This setting only guarantees that previous data is deleted and older files are not processed; however this process may run more than once. Therefore you cannot use this functionality to ensure \"exactly once' delivery of a downstream target."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sftp"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsSftp` type.)\n\nSFTP options",
        "title": "SFTP"
      },
      "DatasetOptionsShopify": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "shopify"
          }
        },
        "additionalProperties": false,
        "description": "Shopify options",
        "title": "Shopify"
      },
      "DatasetOptionsShopifyMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "shopify"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsShopify` type.)\n\nShopify options",
        "title": "Shopify"
      },
      "DatasetOptionsShopifyPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "shopify"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsShopify` type.)\n\nShopify options",
        "title": "Shopify"
      },
      "DatasetOptionsShopifyPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "shopify"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsShopify` type.)\n\nShopify options",
        "title": "Shopify"
      },
      "DatasetOptionsSnowflake": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "case_sensitive_columns": {
            "type": "boolean",
            "description": "If the table was created with case sensitive columns, this setting may be required."
          },
          "schema": {
            "type": "string",
            "description": "Snowflake schema name. If not provided, it may be provided at the connection level, or omitted entirely.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "snowflake"
          }
        },
        "additionalProperties": false,
        "description": "Snowflake options",
        "title": "Snowflake"
      },
      "DatasetOptionsSnowflakeMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "case_sensitive_columns": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "If the table was created with case sensitive columns, this setting may be required."
          },
          "schema": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Snowflake schema name. If not provided, it may be provided at the connection level, or omitted entirely."
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "snowflake"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsSnowflake` type.)\n\nSnowflake options",
        "title": "Snowflake"
      },
      "DatasetOptionsSnowflakePost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "case_sensitive_columns": {
            "type": "boolean",
            "description": "If the table was created with case sensitive columns, this setting may be required."
          },
          "schema": {
            "type": "string",
            "description": "Snowflake schema name. If not provided, it may be provided at the connection level, or omitted entirely.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "snowflake"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsSnowflake` type.)\n\nSnowflake options",
        "title": "Snowflake"
      },
      "DatasetOptionsSnowflakePut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "case_sensitive_columns": {
            "type": "boolean",
            "description": "If the table was created with case sensitive columns, this setting may be required."
          },
          "schema": {
            "type": "string",
            "description": "Snowflake schema name. If not provided, it may be provided at the connection level, or omitted entirely.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "snowflake"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsSnowflake` type.)\n\nSnowflake options",
        "title": "Snowflake"
      },
      "DatasetOptionsSqlServer": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sql_server"
          }
        },
        "additionalProperties": false,
        "description": "SQL Server options",
        "title": "SQL Server"
      },
      "DatasetOptionsSqlServerMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsSqlServer` type.)\n\nSQL Server options",
        "title": "SQL Server"
      },
      "DatasetOptionsSqlServerPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsSqlServer` type.)\n\nSQL Server options",
        "title": "SQL Server"
      },
      "DatasetOptionsSqlServerPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsSqlServer` type.)\n\nSQL Server options",
        "title": "SQL Server"
      },
      "DatasetOptionsStripe": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "stripe"
          }
        },
        "additionalProperties": false,
        "description": "Stripe options",
        "title": "Stripe"
      },
      "DatasetOptionsStripeMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "stripe"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `DatasetOptionsStripe` type.)\n\nStripe options",
        "title": "Stripe"
      },
      "DatasetOptionsStripePost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "stripe"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `DatasetOptionsStripe` type.)\n\nStripe options",
        "title": "Stripe"
      },
      "DatasetOptionsStripePut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "stripe"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `DatasetOptionsStripe` type.)\n\nStripe options",
        "title": "Stripe"
      },
      "DatasetPost": {
        "type": "object",
        "required": [
          "identity_sets",
          "name",
          "options"
        ],
        "properties": {
          "connection_id": {
            "type": "string",
            "description": "If this is a \"retrieve\" dataset, the UUID of a connection - see <a href=\"https://faraday.ai/developers/reference/createconnection\">/connections</a> for more detail. \n\nOnly a subset of connection types can be configured for dataset ingestion - see the list available in `options`.\n\nNote that if a `connection_id` is specified, `options` must also be specified.\n",
            "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
            "format": "uuid"
          },
          "identity_providers": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "provider"
              ],
              "properties": {
                "force": {
                  "type": "boolean",
                  "description": "If true, then use this identity provider even if a match was found by another, higher priority provider.\nPlease contact support to gain access to this feature for any provider other than FIG.\n"
                },
                "provider": {
                  "type": "string",
                  "description": "Which data provider to use for matching.\nBy default, all Faraday accounts can match on the 'Faraday Identity Graph' (FIG) provider.\nPlease contact support to gain access to additional providers.\n",
                  "enum": [
                    "fig",
                    "match_boost"
                  ]
                },
                "select": {
                  "type": "string",
                  "description": "If 'first_recognized', send to match-boost providers one-at-a-time until a match is found. \nIf 'all', send to all match-boost vendors. Please access support to gain access to this feature.\n",
                  "enum": [
                    "first_recognized",
                    "all"
                  ]
                }
              }
            },
            "description": "Which identity providers to use for matching, in order of priority.\nBy default, all datasets will match on 'fig' data.\nThe dataset's match-rate can be boosted by adding other identity providers.\nPlease contact support to get access to this feature.\n",
            "example": [
              [
                {
                  "provider": "fig"
                }
              ]
            ]
          },
          "identity_sets": {
            "$ref": "#/components/schemas/IdentitySetsPost"
          },
          "incremental_column": {
            "type": "string",
            "description": "A column specifying a date associated with a record.\n\nIdeally `incremental_column` SHOULD be set to make data loading more efficient.\n\nIdeally ALSO set `upsert_columns` to ensure that data is not duplicated in the dataset.\n\nAfter each\ningestion, the most recent value from `incremental_column` on any\nrecord will be recorded, and during future ingestions, any\nrecords with a value older than `incremental_column` will be ignored.\n",
            "example": "updated_at"
          },
          "name": {
            "type": "string",
            "description": "An identifying name for this dataset.\n"
          },
          "options": {
            "$ref": "#/components/schemas/DatasetOptionsPost"
          },
          "output_to_authority": {
            "type": "object",
            "required": [
              "name",
              "date"
            ],
            "properties": {
              "date": {
                "type": "string",
                "description": "The observation date the dataset's contents are asserted as of.",
                "example": "2026-01-15",
                "format": "date"
              },
              "name": {
                "type": "string",
                "description": "The authority this dataset's contents are published under.",
                "example": "epsilon"
              }
            },
            "description": "Tags this dataset's contents as a dated assertion from a named authority. Attributes that\nconsume that authority resolve their values against this date.\n\nAvailable only for vendor accounts.\n"
          },
          "output_to_streams": {
            "$ref": "#/components/schemas/OutputToStreamsPost"
          },
          "output_to_streams_array": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OutputToStreamArrayItem"
            },
            "description": "An array-based approach to transforming datasets into streams. This structure allows multiple columns from the same dataset to map to the same stream, each with their own property configurations.\n\nUnlike `output_to_streams`, this does not require nested structures and makes it straightforward to handle cases where a vendor provides multiple columns for the same attribute type (e.g., multiple age fields with different quality or derivation levels).\n\nEach array element specifies a stream_name and properties configuration for stream properties including data column, datetime, authority, precision, derivations, and quality.\n\nStreams named here will be automatically generated if they do not exist.\n"
          },
          "output_to_traits": {
            "$ref": "#/components/schemas/OutputToTraitsPost"
          },
          "preview": {
            "type": "boolean",
            "description": "A dataset in preview mode will only detect columns and produce a data preview, but not ingest the data.\n\nDefaults to undefined, which is equivalent to false.\n",
            "example": true
          },
          "privacy": {
            "type": "string",
            "description": "Currently supported:\n  - 'suppress' - data can be used for modeling but will be excluded from pipelines and deployments (do not contact)\n  - 'delete' - data can not be used for modeling and will be excluded from pipelines and deployments (delete and do not contact)\n  Note: While these options are labeled differently, they currently result in the same behavior (including deletion). This may change in the future.\n",
            "example": "suppress",
            "enum": [
              "suppress",
              "delete"
            ]
          },
          "reference_key_column": {
            "type": "string",
            "description": "**Deprecated:** use reference_key_columns instead\nThe name of the column that references an ID from an external system.\n\nSetting this enables export of data via <a href=\"/reference/createtarget\">`/targets`</a> that is keyed on this field.\n",
            "example": "customer_id",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "reference_key_columns": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
            },
            "description": "The names of columns that reference IDs from an external system.\n\nSetting this enables export of data via <a href=\"/reference/createtarget\">`/targets`</a> that is keyed on this field.\n",
            "example": [
              "customer_id"
            ]
          },
          "upsert_columns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Also known as the \"primary key\" of the dataset.  A column or set of columns that uniquely identify an input row.\n\nIdeally `upsert_columns` SHOULD be set so that data is not duplicated in the dataset.\n\nIdeally ALSO set `incremental_column` to make data loading more efficient.\n\nIf multiple rows are ingested with identical values in the columns\nspecified by `upsert_columns`, the newest will be used.\n\nIf neither `upsert_columns` nor `incremental_column` are\nspecified, each unique row will be ingested once.\n",
            "example": [
              "id"
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Dataset` type.)\n\nTabular data describing orders, customers, leads, etc."
      },
      "DatasetPut": {
        "type": "object",
        "required": [
          "identity_sets",
          "name",
          "options"
        ],
        "properties": {
          "identity_providers": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "provider"
              ],
              "properties": {
                "force": {
                  "type": "boolean",
                  "description": "If true, then use this identity provider even if a match was found by another, higher priority provider.\nPlease contact support to gain access to this feature for any provider other than FIG.\n"
                },
                "provider": {
                  "type": "string",
                  "description": "Which data provider to use for matching.\nBy default, all Faraday accounts can match on the 'Faraday Identity Graph' (FIG) provider.\nPlease contact support to gain access to additional providers.\n",
                  "enum": [
                    "fig",
                    "match_boost"
                  ]
                },
                "select": {
                  "type": "string",
                  "description": "If 'first_recognized', send to match-boost providers one-at-a-time until a match is found. \nIf 'all', send to all match-boost vendors. Please access support to gain access to this feature.\n",
                  "enum": [
                    "first_recognized",
                    "all"
                  ]
                }
              }
            },
            "description": "Which identity providers to use for matching, in order of priority.\nBy default, all datasets will match on 'fig' data.\nThe dataset's match-rate can be boosted by adding other identity providers.\nPlease contact support to get access to this feature.\n",
            "example": [
              [
                {
                  "provider": "fig"
                }
              ]
            ]
          },
          "identity_sets": {
            "$ref": "#/components/schemas/IdentitySetsPut"
          },
          "incremental_column": {
            "type": "string",
            "description": "A column specifying a date associated with a record.\n\nIdeally `incremental_column` SHOULD be set to make data loading more efficient.\n\nIdeally ALSO set `upsert_columns` to ensure that data is not duplicated in the dataset.\n\nAfter each\ningestion, the most recent value from `incremental_column` on any\nrecord will be recorded, and during future ingestions, any\nrecords with a value older than `incremental_column` will be ignored.\n",
            "example": "updated_at"
          },
          "name": {
            "type": "string",
            "description": "An identifying name for this dataset.\n"
          },
          "options": {
            "$ref": "#/components/schemas/DatasetOptionsPut"
          },
          "output_all_columns_as_traits": {
            "type": "object",
            "required": [
              "exclude"
            ],
            "properties": {
              "exclude": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "A list of column names to exclude from bulk trait generation.\n",
                "example": [
                  "id"
                ]
              },
              "include": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "A list of column names that should only be used to generate traits.\\\n\nIf unspecified, all columns will be considered and `output_to_traits`\nmust be unset. If specified, only these columns will be considered and\n`output_to_traits` may be set in conjunction. In this case, any detected \ntraits may not already be specified by `output_to_traits`; collisions will \nresult in error.\n",
                "example": [
                  "id"
                ]
              }
            },
            "description": "If specified, all columns that are not excluded will be output as traits.\n\n`output_to_streams` may not be not be specified when setting this parameter.\n"
          },
          "output_to_authority": {
            "type": "object",
            "required": [
              "name",
              "date"
            ],
            "properties": {
              "date": {
                "type": "string",
                "description": "The observation date the dataset's contents are asserted as of.",
                "example": "2026-01-15",
                "format": "date"
              },
              "name": {
                "type": "string",
                "description": "The authority this dataset's contents are published under.",
                "example": "epsilon"
              }
            },
            "description": "Tags this dataset's contents as a dated assertion from a named authority. Attributes that\nconsume that authority resolve their values against this date.\n\nAvailable only for vendor accounts.\n"
          },
          "output_to_streams": {
            "$ref": "#/components/schemas/OutputToStreamsPut"
          },
          "output_to_streams_array": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OutputToStreamArrayItem"
            },
            "description": "An array-based approach to transforming datasets into streams. This structure allows multiple columns from the same dataset to map to the same stream, each with their own property configurations.\n\nUnlike `output_to_streams`, this does not require nested structures and makes it straightforward to handle cases where a vendor provides multiple columns for the same attribute type (e.g., multiple age fields with different quality or derivation levels).\n\nEach array element specifies a stream_name and properties configuration for stream properties including data column, datetime, authority, precision, derivations, and quality.\n\nStreams named here will be automatically generated if they do not exist.\n"
          },
          "output_to_traits": {
            "$ref": "#/components/schemas/OutputToTraitsPut"
          },
          "preview": {
            "type": "boolean",
            "description": "A dataset in preview mode will only detect columns and produce a data preview, but not ingest the data.\n\nDefaults to undefined, which is equivalent to false.\n",
            "example": true
          },
          "privacy": {
            "type": "string",
            "description": "Currently supported:\n  - 'suppress' - data can be used for modeling but will be excluded from pipelines and deployments (do not contact)\n  - 'delete' - data can not be used for modeling and will be excluded from pipelines and deployments (delete and do not contact)\n  Note: While these options are labeled differently, they currently result in the same behavior (including deletion). This may change in the future.\n",
            "example": "suppress",
            "enum": [
              "suppress",
              "delete"
            ]
          },
          "reference_key_column": {
            "type": "string",
            "description": "**Deprecated:** use reference_key_columns instead\nThe name of the column that references an ID from an external system.\n\nSetting this enables export of data via <a href=\"/reference/createtarget\">`/targets`</a> that is keyed on this field.\n",
            "example": "customer_id",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "reference_key_columns": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
            },
            "description": "The names of columns that reference IDs from an external system.\n\nSetting this enables export of data via <a href=\"/reference/createtarget\">`/targets`</a> that is keyed on this field.\n",
            "example": [
              "customer_id"
            ]
          },
          "upsert_columns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Also known as the \"primary key\" of the dataset.  A column or set of columns that uniquely identify an input row.\n\nIdeally `upsert_columns` SHOULD be set so that data is not duplicated in the dataset.\n\nIdeally ALSO set `incremental_column` to make data loading more efficient.\n\nIf multiple rows are ingested with identical values in the columns\nspecified by `upsert_columns`, the newest will be used.\n\nIf neither `upsert_columns` nor `incremental_column` are\nspecified, each unique row will be ingested once.\n",
            "example": [
              "id"
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Dataset` type.)\n\nTabular data describing orders, customers, leads, etc."
      },
      "DatasetStream": {
        "type": "object",
        "required": [
          "data_map",
          "stream_id"
        ],
        "properties": {
          "classic": {
            "type": "boolean",
            "description": "A classic dataset stream, created internally at Faraday.",
            "const": true
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DatasetStreamCondition"
            },
            "description": "List of conditions to use to filter events."
          },
          "data_map": {
            "$ref": "#/components/schemas/DataMap"
          },
          "stream_id": {
            "type": "string",
            "example": "eefb0735-6ad6-4611-a832-40bab2968353",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "DatasetStreamCondition": {
        "type": "object",
        "required": [
          "column_name"
        ],
        "properties": {
          "_eq": {
            "type": "string",
            "description": "Equal to"
          },
          "_gt": {
            "type": "number",
            "description": "Greater than"
          },
          "_gte": {
            "type": "number",
            "description": "Greater than or equal to"
          },
          "_in": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is one of"
          },
          "_lt": {
            "type": "number",
            "description": "Less than"
          },
          "_lte": {
            "type": "number",
            "description": "Less than or equal to"
          },
          "_matches": {
            "type": "string",
            "description": "Value contains a match to the regex (re2) expression provided. For an exact regex match, use the ^ and $ characters as specified by the (re2 documentation)[https://github.com/google/re2/wiki/Syntax]."
          },
          "_neq": {
            "type": "string",
            "description": "Not equal to"
          },
          "_nin": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is not one of"
          },
          "_nnull": {
            "type": "boolean",
            "description": "Value is not null"
          },
          "_null": {
            "type": "boolean",
            "description": "Value is null (nulls are otherwise excluded)"
          },
          "column_name": {
            "type": "string",
            "description": "The column in the dataset that should be filtered on",
            "maxLength": 256
          },
          "optional": {
            "type": "boolean",
            "description": "Optional conditions are unioned together, when combined they define events that meet either condition. At least one optional condition must be satisfied."
          }
        },
        "additionalProperties": false
      },
      "DatasetStreamMergePatch": {
        "type": "object",
        "properties": {
          "conditions": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/DatasetStreamCondition"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of conditions to use to filter events."
          },
          "data_map": {
            "$ref": "#/components/schemas/DataMapMergePatch"
          }
        },
        "additionalProperties": false
      },
      "DatasetStreamPost": {
        "type": "object",
        "required": [
          "data_map"
        ],
        "properties": {
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DatasetStreamCondition"
            },
            "description": "List of conditions to use to filter events."
          },
          "data_map": {
            "$ref": "#/components/schemas/DataMapPost"
          }
        },
        "additionalProperties": false
      },
      "DatasetStreamPut": {
        "type": "object",
        "required": [
          "data_map"
        ],
        "properties": {
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DatasetStreamCondition"
            },
            "description": "List of conditions to use to filter events."
          },
          "data_map": {
            "$ref": "#/components/schemas/DataMapPut"
          }
        },
        "additionalProperties": false
      },
      "DatasetUpdateHistory": {
        "type": "object",
        "required": [
          "datetime",
          "rows_added"
        ],
        "properties": {
          "datetime": {
            "type": "string",
            "description": "Time of the update",
            "example": "2021-10-05T14:48:00.000Z",
            "format": "date-time"
          },
          "rows_added": {
            "type": "integer",
            "description": "How many rows were added by the update",
            "example": 123
          }
        },
        "additionalProperties": false,
        "description": "Dataset update history item\n"
      },
      "DateColumnFormat": {
        "type": "string",
        "description": "The date format of a column's values. This is the date subset of `DataMapColumnFormat` — every format except the currency and list ones.",
        "enum": [
          "mm_dd_yy_slash",
          "mm_dd_yyyy_slash",
          "mm_dd_yy_dash",
          "mm_dd_yyyy_dash",
          "yyyy_mm_dd_slash",
          "yy_mm_dd_slash",
          "yyyy_mm_dd_dash",
          "yy_mm_dd_dash",
          "yyyymmdd",
          "yyyymm",
          "yyyy_mm_dash",
          "yyyy_mm_slash",
          "dd_mm_yyyy_slash",
          "dd_mm_yy_slash",
          "dd_mm_yyyy_dash",
          "dd_mm_yy_dash",
          "date_iso8601",
          "date_month_day_fullyear",
          "date_month_day_shortyear",
          "date_month_day_fullyear_hours_minutes",
          "date_month_day_fullyear_hours_minutes_seconds",
          "date_seconds_since_epoch_utc",
          "date_milliseconds_since_epoch_utc",
          "static_date_iso8601"
        ]
      },
      "DateOfBirthColumn": {
        "type": "object",
        "required": [
          "column_name"
        ],
        "properties": {
          "column_name": {
            "type": "string",
            "description": "The name of the dataset column holding each person's date of birth.",
            "example": "date_of_birth",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "format": {
            "$ref": "#/components/schemas/DateColumnFormat"
          }
        },
        "additionalProperties": false,
        "description": "A dataset column holding each person's date of birth, together with the date format of its values."
      },
      "DecodeConfig": {
        "type": "object",
        "properties": {
          "cast": {
            "$ref": "#/components/schemas/PrimitiveDataType",
            "description": "The data type to cast the transformed value to"
          },
          "map": {
            "type": "object",
            "description": "A mapping of source values to target values",
            "example": {
              "a": 1,
              "b": 2
            }
          },
          "sql": {
            "type": "string",
            "description": "SQL expression for transformation",
            "example": "SELECT * FROM table"
          }
        },
        "additionalProperties": false,
        "description": "Configuration for decode transformations."
      },
      "Error": {
        "type": "object",
        "required": [
          "id",
          "error",
          "note"
        ],
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ErrorCode"
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this error. Please include this in bug reports.",
            "example": "082f9513-901c-4308-8081-902a8fe22d7e",
            "format": "uuid"
          },
          "note": {
            "type": "string",
            "description": "A human-readable description of the error.",
            "example": "An error occurred"
          },
          "validationErrors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "description": "JSON Schema validation errors, if any."
          }
        },
        "description": "Information about an error."
      },
      "ErrorCode": {
        "type": "string",
        "description": "A Faraday error code.\n\nSome possible values include:\n\n**Generic HTTP Errors**\n\n- BAD_REQUEST: The request could not be validated.\n- FORBIDDEN: You do not have permission to access the specified resource.\n- MAX_RESOURCES_REACHED: You have created too many of this resource type on your account. You must delete some before making more.\n- INTERNAL_SERVER_ERROR: An internal error of an unknown type occurred.\n- INVALID_AUTHORIZATION: The Authorization header could not be parsed.\n- NOT_FOUND: The specified resource could not be found.\n\n**Authentication**\n\nThese are specific to HTTP 401 responses.\n\n- MALFORMED_API_KEY: Could not parse the supplied API key.\n- MISSING_API_KEY: An API key was not supplied.\n- EXPIRED_API_KEY: The supplied API key has expired.\n\n**Application Errors**\n\n- VALIDATION_FAILED: A parameter or request could not be validated.\n- CONFLICT: The request was formatted correctly, but conflicted with an existing resource\n",
        "example": "ERROR_TYPE",
        "enum": [
          "BAD_REQUEST",
          "FORBIDDEN",
          "MAX_RESOURCES_REACHED",
          "INTERNAL_SERVER_ERROR",
          "INVALID_AUTHORIZATION",
          "NOT_FOUND",
          "MALFORMED_API_KEY",
          "MISSING_API_KEY",
          "EXPIRED_API_KEY",
          "VALIDATION_FAILED",
          "CONFLICT"
        ]
      },
      "FeatureStore": {
        "type": "object",
        "required": [
          "created_at",
          "default_selector_by_purpose",
          "description",
          "id",
          "literate",
          "name",
          "resource_type",
          "status",
          "updated_at",
          "version"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "default_selector_by_purpose": {
            "$ref": "#/components/schemas/AttributeSelectorsByPurpose",
            "description": "Default selector hints organized by purpose (modeling, inference, append). These serve as fallbacks when individual attributes don't specify their own selectors.\n"
          },
          "description": {
            "type": "string",
            "description": "A description of the feature store and its contents.",
            "example": "Curated collection of demographic and behavioral attributes"
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "literate": {
            "type": "string",
            "description": "A human-readable name for the feature store.",
            "example": "Faraday Internal Graph"
          },
          "name": {
            "type": "string",
            "description": "The slug name of the feature store. Must start with a letter and contain only lowercase letters, numbers, and underscores.\n",
            "example": "fig",
            "maxLength": 64,
            "pattern": "^[a-z][a-z0-9_]*$"
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource."
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          },
          "version": {
            "type": "integer",
            "description": "The version number of the feature store.",
            "example": 1,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "description": "A feature store compiles and manages a collection of attributes. Feature stores can be versioned and published to other accounts.\n"
      },
      "FeatureStoreMergePatch": {
        "type": "object",
        "properties": {
          "default_selector_by_purpose": {
            "$ref": "#/components/schemas/AttributeSelectorsByPurpose",
            "description": "Default selector hints organized by purpose (modeling, inference, append). These serve as fallbacks when individual attributes don't specify their own selectors.\n"
          },
          "description": {
            "type": "string",
            "description": "A description of the feature store and its contents.",
            "example": "Curated collection of demographic and behavioral attributes"
          },
          "literate": {
            "type": "string",
            "description": "A human-readable name for the feature store.",
            "example": "Faraday Internal Graph"
          },
          "name": {
            "type": "string",
            "description": "The slug name of the feature store. Must start with a letter and contain only lowercase letters, numbers, and underscores.\n",
            "example": "fig",
            "maxLength": 64,
            "pattern": "^[a-z][a-z0-9_]*$"
          },
          "version": {
            "type": "integer",
            "description": "The version number of the feature store.",
            "example": 1,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `FeatureStore` type.)\n\nA feature store compiles and manages a collection of attributes. Feature stores can be versioned and published to other accounts.\n"
      },
      "FeatureStorePost": {
        "type": "object",
        "required": [
          "default_selector_by_purpose",
          "description",
          "literate",
          "name",
          "version"
        ],
        "properties": {
          "default_selector_by_purpose": {
            "$ref": "#/components/schemas/AttributeSelectorsByPurpose",
            "description": "Default selector hints organized by purpose (modeling, inference, append). These serve as fallbacks when individual attributes don't specify their own selectors.\n"
          },
          "description": {
            "type": "string",
            "description": "A description of the feature store and its contents.",
            "example": "Curated collection of demographic and behavioral attributes"
          },
          "literate": {
            "type": "string",
            "description": "A human-readable name for the feature store.",
            "example": "Faraday Internal Graph"
          },
          "name": {
            "type": "string",
            "description": "The slug name of the feature store. Must start with a letter and contain only lowercase letters, numbers, and underscores.\n",
            "example": "fig",
            "maxLength": 64,
            "pattern": "^[a-z][a-z0-9_]*$"
          },
          "version": {
            "type": "integer",
            "description": "The version number of the feature store.",
            "example": 1,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `FeatureStore` type.)\n\nA feature store compiles and manages a collection of attributes. Feature stores can be versioned and published to other accounts.\n"
      },
      "FeatureStorePut": {
        "type": "object",
        "required": [
          "default_selector_by_purpose",
          "description",
          "literate",
          "name",
          "version"
        ],
        "properties": {
          "default_selector_by_purpose": {
            "$ref": "#/components/schemas/AttributeSelectorsByPurpose",
            "description": "Default selector hints organized by purpose (modeling, inference, append). These serve as fallbacks when individual attributes don't specify their own selectors.\n"
          },
          "description": {
            "type": "string",
            "description": "A description of the feature store and its contents.",
            "example": "Curated collection of demographic and behavioral attributes"
          },
          "literate": {
            "type": "string",
            "description": "A human-readable name for the feature store.",
            "example": "Faraday Internal Graph"
          },
          "name": {
            "type": "string",
            "description": "The slug name of the feature store. Must start with a letter and contain only lowercase letters, numbers, and underscores.\n",
            "example": "fig",
            "maxLength": 64,
            "pattern": "^[a-z][a-z0-9_]*$"
          },
          "version": {
            "type": "integer",
            "description": "The version number of the feature store.",
            "example": 1,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `FeatureStore` type.)\n\nA feature store compiles and manages a collection of attributes. Feature stores can be versioned and published to other accounts.\n"
      },
      "FigV1ToFigV2Migration": {
        "type": "object",
        "required": [
          "created_at",
          "fig_v1_account",
          "fig_v2_account",
          "id",
          "resource_type",
          "status",
          "type",
          "updated_at"
        ],
        "properties": {
          "account_tree_relationship": {
            "type": "string",
            "description": "How the two linked accounts sit in the account hierarchy, which decides what the account move does to it. `siblings`: the FIG v2 account already sits beside the FIG v1 account, so no account changes parent and the parent that holds them both is left alone. `fig_v2_is_child_of_fig_v1`: the FIG v2 account moves up into the FIG v1 account's place and the FIG v1 account's other subaccounts move under it, which leaves the two as siblings. `fig_v1_is_child_of_fig_v2`: the FIG v2 account stays where it is and the FIG v1 account's subaccounts move under it. `unrelated`: the two are no longer adjacent in the hierarchy, which a new migration is not allowed to be.",
            "enum": [
              "siblings",
              "fig_v2_is_child_of_fig_v1",
              "fig_v1_is_child_of_fig_v2",
              "unrelated"
            ]
          },
          "approved_at": {
            "type": "string",
            "description": "When a user approved the account move, recorded by the server. Provide\na non-null value via PATCH from either linked account to approve.\nRepeated approval requests do not change the first approval.\n",
            "format": "date-time"
          },
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "cohorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationCohort"
            },
            "description": "Paired FIG v1 and FIG v2 cohorts. Used to match payload columns whose names embed cohort ids when those names differ across the two accounts."
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "datasets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationDataset"
            },
            "description": "Paired FIG v1 and FIG v2 datasets included in the migration."
          },
          "fig_v1_account": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MigrationAccount"
              }
            ],
            "description": "The account that uses FIG v1. It must be related to the FIG v2 account in the account hierarchy, either sharing a parent with it or being its parent or child. Account names are not unique, so this requirement guards against naming an unintended account. When the FIG v2 account is the parent of this account, it must hold no other accounts: migrating gives this account's members access to the FIG v2 account, and a member of an account can see the accounts directly beneath it."
          },
          "fig_v2_account": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MigrationAccount"
              }
            ],
            "description": "The replacement account that uses FIG v2. Always the account that owns the migration."
          },
          "finished_at": {
            "type": "string",
            "description": "When Faraday finished the account move: users moved to the FIG v2 account, any account whose parent had to change was moved, and the FIG v1 account was suspended. Most moves change no parent at all; see `account_tree_relationship`.",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this migration for the account's users."
          },
          "outcomes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationOutcome"
            },
            "description": "Paired FIG v1 and FIG v2 outcomes. Used to match payload columns whose names embed outcome ids when those names differ across the two accounts."
          },
          "persona_sets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationPersonaSet"
            },
            "description": "Paired FIG v1 and FIG v2 persona sets. Used to match payload columns whose names embed persona set ids when those names differ across the two accounts."
          },
          "recommenders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationRecommender"
            },
            "description": "Paired FIG v1 and FIG v2 recommenders. Used to match payload columns whose names embed recommender ids when those names differ across the two accounts."
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource.",
            "example": "migrations"
          },
          "rolled_back_at": {
            "type": "string",
            "description": "When support restored the FIG v1 account after a completed migration.",
            "format": "date-time"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "status_needs_fix_from": {
            "type": "string",
            "description": "Who has to act before a migration with `status == \"error\"` can run again. `user` means editing the migration clears it, `support` means only Faraday can. Omitted when Faraday will retry on its own. A migration performs an irreversible account move, so a failed one says plainly whether the account holder can do anything about it.",
            "enum": [
              "user",
              "support"
            ]
          },
          "targets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationTarget"
            },
            "description": "Paired FIG v1 and FIG v2 targets included in the migration."
          },
          "type": {
            "type": "string",
            "description": "The migration type.",
            "const": "fig_v1_to_fig_v2"
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A move from a FIG v1 account and its resources to their FIG v2 replacements."
      },
      "FigV1ToFigV2MigrationCohort": {
        "type": "object",
        "required": [
          "fig_v1_cohort",
          "fig_v2_cohort",
          "overridden"
        ],
        "properties": {
          "fig_v1_cohort": {
            "$ref": "#/components/schemas/MigrationResource"
          },
          "fig_v2_cohort": {
            "$ref": "#/components/schemas/MigrationResource"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this cohort pair for the account's users."
          },
          "overridden": {
            "type": "boolean",
            "description": "Whether a Faraday team member approved this pair despite an incomplete automated check."
          }
        },
        "additionalProperties": false,
        "description": "A paired FIG v1 cohort and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationCohortMergePatch": {
        "type": "object",
        "properties": {
          "fig_v1_cohort": {
            "$ref": "#/components/schemas/MigrationResourceMergePatch"
          },
          "fig_v2_cohort": {
            "$ref": "#/components/schemas/MigrationResourceMergePatch"
          },
          "notes": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Notes about this cohort pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `FigV1ToFigV2MigrationCohort` type.)\n\nA paired FIG v1 cohort and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationCohortPost": {
        "type": "object",
        "required": [
          "fig_v1_cohort",
          "fig_v2_cohort"
        ],
        "properties": {
          "fig_v1_cohort": {
            "$ref": "#/components/schemas/MigrationResourcePost"
          },
          "fig_v2_cohort": {
            "$ref": "#/components/schemas/MigrationResourcePost"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this cohort pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `FigV1ToFigV2MigrationCohort` type.)\n\nA paired FIG v1 cohort and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationCohortPut": {
        "type": "object",
        "required": [
          "fig_v1_cohort",
          "fig_v2_cohort"
        ],
        "properties": {
          "fig_v1_cohort": {
            "$ref": "#/components/schemas/MigrationResourcePut"
          },
          "fig_v2_cohort": {
            "$ref": "#/components/schemas/MigrationResourcePut"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this cohort pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `FigV1ToFigV2MigrationCohort` type.)\n\nA paired FIG v1 cohort and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationDataset": {
        "type": "object",
        "required": [
          "fig_v1_dataset",
          "fig_v2_dataset",
          "overridden"
        ],
        "properties": {
          "fig_v1_dataset": {
            "$ref": "#/components/schemas/MigrationDatasetResource"
          },
          "fig_v2_dataset": {
            "$ref": "#/components/schemas/MigrationDatasetResource"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this dataset pair for the account's users."
          },
          "overridden": {
            "type": "boolean",
            "description": "Whether a Faraday team member approved this pair despite an incomplete automated check."
          }
        },
        "additionalProperties": false,
        "description": "A paired FIG v1 dataset and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationDatasetMergePatch": {
        "type": "object",
        "properties": {
          "fig_v1_dataset": {
            "$ref": "#/components/schemas/MigrationDatasetResourceMergePatch"
          },
          "fig_v2_dataset": {
            "$ref": "#/components/schemas/MigrationDatasetResourceMergePatch"
          },
          "notes": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Notes about this dataset pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `FigV1ToFigV2MigrationDataset` type.)\n\nA paired FIG v1 dataset and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationDatasetPost": {
        "type": "object",
        "required": [
          "fig_v1_dataset",
          "fig_v2_dataset"
        ],
        "properties": {
          "fig_v1_dataset": {
            "$ref": "#/components/schemas/MigrationDatasetResourcePost"
          },
          "fig_v2_dataset": {
            "$ref": "#/components/schemas/MigrationDatasetResourcePost"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this dataset pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `FigV1ToFigV2MigrationDataset` type.)\n\nA paired FIG v1 dataset and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationDatasetPut": {
        "type": "object",
        "required": [
          "fig_v1_dataset",
          "fig_v2_dataset"
        ],
        "properties": {
          "fig_v1_dataset": {
            "$ref": "#/components/schemas/MigrationDatasetResourcePut"
          },
          "fig_v2_dataset": {
            "$ref": "#/components/schemas/MigrationDatasetResourcePut"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this dataset pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `FigV1ToFigV2MigrationDataset` type.)\n\nA paired FIG v1 dataset and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "approved_at": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "date-time"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "When a user approved the account move, recorded by the server. Provide\na non-null value via PATCH from either linked account to approve.\nRepeated approval requests do not change the first approval.\n"
          },
          "cohorts": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FigV1ToFigV2MigrationCohortMergePatch"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Paired FIG v1 and FIG v2 cohorts. Used to match payload columns whose names embed cohort ids when those names differ across the two accounts."
          },
          "datasets": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FigV1ToFigV2MigrationDatasetMergePatch"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Paired FIG v1 and FIG v2 datasets included in the migration."
          },
          "notes": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Notes about this migration for the account's users."
          },
          "outcomes": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FigV1ToFigV2MigrationOutcomeMergePatch"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Paired FIG v1 and FIG v2 outcomes. Used to match payload columns whose names embed outcome ids when those names differ across the two accounts."
          },
          "persona_sets": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FigV1ToFigV2MigrationPersonaSetMergePatch"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Paired FIG v1 and FIG v2 persona sets. Used to match payload columns whose names embed persona set ids when those names differ across the two accounts."
          },
          "recommenders": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FigV1ToFigV2MigrationRecommenderMergePatch"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Paired FIG v1 and FIG v2 recommenders. Used to match payload columns whose names embed recommender ids when those names differ across the two accounts."
          },
          "targets": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FigV1ToFigV2MigrationTargetMergePatch"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Paired FIG v1 and FIG v2 targets included in the migration."
          },
          "type": {
            "type": "string",
            "description": "The migration type.",
            "const": "fig_v1_to_fig_v2"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `FigV1ToFigV2Migration` type.)\n\nA move from a FIG v1 account and its resources to their FIG v2 replacements."
      },
      "FigV1ToFigV2MigrationOutcome": {
        "type": "object",
        "required": [
          "fig_v1_outcome",
          "fig_v2_outcome",
          "overridden"
        ],
        "properties": {
          "fig_v1_outcome": {
            "$ref": "#/components/schemas/MigrationOutcomeResource"
          },
          "fig_v2_outcome": {
            "$ref": "#/components/schemas/MigrationOutcomeResource"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this outcome pair for the account's users."
          },
          "overridden": {
            "type": "boolean",
            "description": "Whether a Faraday team member approved this pair despite an incomplete automated check."
          }
        },
        "additionalProperties": false,
        "description": "A paired FIG v1 outcome and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationOutcomeMergePatch": {
        "type": "object",
        "properties": {
          "fig_v1_outcome": {
            "$ref": "#/components/schemas/MigrationOutcomeResourceMergePatch"
          },
          "fig_v2_outcome": {
            "$ref": "#/components/schemas/MigrationOutcomeResourceMergePatch"
          },
          "notes": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Notes about this outcome pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `FigV1ToFigV2MigrationOutcome` type.)\n\nA paired FIG v1 outcome and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationOutcomePost": {
        "type": "object",
        "required": [
          "fig_v1_outcome",
          "fig_v2_outcome"
        ],
        "properties": {
          "fig_v1_outcome": {
            "$ref": "#/components/schemas/MigrationOutcomeResourcePost"
          },
          "fig_v2_outcome": {
            "$ref": "#/components/schemas/MigrationOutcomeResourcePost"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this outcome pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `FigV1ToFigV2MigrationOutcome` type.)\n\nA paired FIG v1 outcome and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationOutcomePut": {
        "type": "object",
        "required": [
          "fig_v1_outcome",
          "fig_v2_outcome"
        ],
        "properties": {
          "fig_v1_outcome": {
            "$ref": "#/components/schemas/MigrationOutcomeResourcePut"
          },
          "fig_v2_outcome": {
            "$ref": "#/components/schemas/MigrationOutcomeResourcePut"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this outcome pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `FigV1ToFigV2MigrationOutcome` type.)\n\nA paired FIG v1 outcome and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationPersonaSet": {
        "type": "object",
        "required": [
          "fig_v1_persona_set",
          "fig_v2_persona_set",
          "overridden"
        ],
        "properties": {
          "fig_v1_persona_set": {
            "$ref": "#/components/schemas/MigrationPersonaSetResource"
          },
          "fig_v2_persona_set": {
            "$ref": "#/components/schemas/MigrationPersonaSetResource"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this persona set pair for the account's users."
          },
          "overridden": {
            "type": "boolean",
            "description": "Whether a Faraday team member approved this pair despite an incomplete automated check."
          }
        },
        "additionalProperties": false,
        "description": "A paired FIG v1 persona set and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationPersonaSetMergePatch": {
        "type": "object",
        "properties": {
          "fig_v1_persona_set": {
            "$ref": "#/components/schemas/MigrationPersonaSetResourceMergePatch"
          },
          "fig_v2_persona_set": {
            "$ref": "#/components/schemas/MigrationPersonaSetResourceMergePatch"
          },
          "notes": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Notes about this persona set pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `FigV1ToFigV2MigrationPersonaSet` type.)\n\nA paired FIG v1 persona set and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationPersonaSetPost": {
        "type": "object",
        "required": [
          "fig_v1_persona_set",
          "fig_v2_persona_set"
        ],
        "properties": {
          "fig_v1_persona_set": {
            "$ref": "#/components/schemas/MigrationPersonaSetResourcePost"
          },
          "fig_v2_persona_set": {
            "$ref": "#/components/schemas/MigrationPersonaSetResourcePost"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this persona set pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `FigV1ToFigV2MigrationPersonaSet` type.)\n\nA paired FIG v1 persona set and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationPersonaSetPut": {
        "type": "object",
        "required": [
          "fig_v1_persona_set",
          "fig_v2_persona_set"
        ],
        "properties": {
          "fig_v1_persona_set": {
            "$ref": "#/components/schemas/MigrationPersonaSetResourcePut"
          },
          "fig_v2_persona_set": {
            "$ref": "#/components/schemas/MigrationPersonaSetResourcePut"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this persona set pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `FigV1ToFigV2MigrationPersonaSet` type.)\n\nA paired FIG v1 persona set and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationPost": {
        "type": "object",
        "required": [
          "fig_v1_account",
          "type"
        ],
        "properties": {
          "cohorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationCohortPost"
            },
            "description": "Paired FIG v1 and FIG v2 cohorts. Used to match payload columns whose names embed cohort ids when those names differ across the two accounts."
          },
          "datasets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationDatasetPost"
            },
            "description": "Paired FIG v1 and FIG v2 datasets included in the migration."
          },
          "fig_v1_account": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MigrationAccountPost"
              }
            ],
            "description": "The account that uses FIG v1. It must be related to the FIG v2 account in the account hierarchy, either sharing a parent with it or being its parent or child. Account names are not unique, so this requirement guards against naming an unintended account. When the FIG v2 account is the parent of this account, it must hold no other accounts: migrating gives this account's members access to the FIG v2 account, and a member of an account can see the accounts directly beneath it."
          },
          "notes": {
            "type": "string",
            "description": "Notes about this migration for the account's users."
          },
          "outcomes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationOutcomePost"
            },
            "description": "Paired FIG v1 and FIG v2 outcomes. Used to match payload columns whose names embed outcome ids when those names differ across the two accounts."
          },
          "persona_sets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationPersonaSetPost"
            },
            "description": "Paired FIG v1 and FIG v2 persona sets. Used to match payload columns whose names embed persona set ids when those names differ across the two accounts."
          },
          "recommenders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationRecommenderPost"
            },
            "description": "Paired FIG v1 and FIG v2 recommenders. Used to match payload columns whose names embed recommender ids when those names differ across the two accounts."
          },
          "targets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationTargetPost"
            },
            "description": "Paired FIG v1 and FIG v2 targets included in the migration."
          },
          "type": {
            "type": "string",
            "description": "The migration type.",
            "const": "fig_v1_to_fig_v2"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `FigV1ToFigV2Migration` type.)\n\nA move from a FIG v1 account and its resources to their FIG v2 replacements."
      },
      "FigV1ToFigV2MigrationPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "approved_at": {
            "type": "string",
            "description": "When a user approved the account move, recorded by the server. Provide\na non-null value via PATCH from either linked account to approve.\nRepeated approval requests do not change the first approval.\n",
            "format": "date-time"
          },
          "cohorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationCohortPut"
            },
            "description": "Paired FIG v1 and FIG v2 cohorts. Used to match payload columns whose names embed cohort ids when those names differ across the two accounts."
          },
          "datasets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationDatasetPut"
            },
            "description": "Paired FIG v1 and FIG v2 datasets included in the migration."
          },
          "notes": {
            "type": "string",
            "description": "Notes about this migration for the account's users."
          },
          "outcomes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationOutcomePut"
            },
            "description": "Paired FIG v1 and FIG v2 outcomes. Used to match payload columns whose names embed outcome ids when those names differ across the two accounts."
          },
          "persona_sets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationPersonaSetPut"
            },
            "description": "Paired FIG v1 and FIG v2 persona sets. Used to match payload columns whose names embed persona set ids when those names differ across the two accounts."
          },
          "recommenders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationRecommenderPut"
            },
            "description": "Paired FIG v1 and FIG v2 recommenders. Used to match payload columns whose names embed recommender ids when those names differ across the two accounts."
          },
          "targets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationTargetPut"
            },
            "description": "Paired FIG v1 and FIG v2 targets included in the migration."
          },
          "type": {
            "type": "string",
            "description": "The migration type.",
            "const": "fig_v1_to_fig_v2"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `FigV1ToFigV2Migration` type.)\n\nA move from a FIG v1 account and its resources to their FIG v2 replacements."
      },
      "FigV1ToFigV2MigrationRecommender": {
        "type": "object",
        "required": [
          "fig_v1_recommender",
          "fig_v2_recommender",
          "overridden"
        ],
        "properties": {
          "fig_v1_recommender": {
            "$ref": "#/components/schemas/MigrationRecommenderResource"
          },
          "fig_v2_recommender": {
            "$ref": "#/components/schemas/MigrationRecommenderResource"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this recommender pair for the account's users."
          },
          "overridden": {
            "type": "boolean",
            "description": "Whether a Faraday team member approved this pair despite an incomplete automated check."
          }
        },
        "additionalProperties": false,
        "description": "A paired FIG v1 recommender and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationRecommenderMergePatch": {
        "type": "object",
        "properties": {
          "fig_v1_recommender": {
            "$ref": "#/components/schemas/MigrationRecommenderResourceMergePatch"
          },
          "fig_v2_recommender": {
            "$ref": "#/components/schemas/MigrationRecommenderResourceMergePatch"
          },
          "notes": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Notes about this recommender pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `FigV1ToFigV2MigrationRecommender` type.)\n\nA paired FIG v1 recommender and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationRecommenderPost": {
        "type": "object",
        "required": [
          "fig_v1_recommender",
          "fig_v2_recommender"
        ],
        "properties": {
          "fig_v1_recommender": {
            "$ref": "#/components/schemas/MigrationRecommenderResourcePost"
          },
          "fig_v2_recommender": {
            "$ref": "#/components/schemas/MigrationRecommenderResourcePost"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this recommender pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `FigV1ToFigV2MigrationRecommender` type.)\n\nA paired FIG v1 recommender and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationRecommenderPut": {
        "type": "object",
        "required": [
          "fig_v1_recommender",
          "fig_v2_recommender"
        ],
        "properties": {
          "fig_v1_recommender": {
            "$ref": "#/components/schemas/MigrationRecommenderResourcePut"
          },
          "fig_v2_recommender": {
            "$ref": "#/components/schemas/MigrationRecommenderResourcePut"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this recommender pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `FigV1ToFigV2MigrationRecommender` type.)\n\nA paired FIG v1 recommender and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationTarget": {
        "type": "object",
        "required": [
          "external_configuration_checked",
          "fig_v1_target",
          "fig_v2_target",
          "overridden"
        ],
        "properties": {
          "destination_mapping": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationTargetDestinationField"
            },
            "description": "Matching destination options whose values differ between the two targets, such as table names or object keys."
          },
          "external_configuration_checked": {
            "type": "boolean",
            "description": "Whether a Faraday team member checked configuration held by the target's external destination."
          },
          "field_mapping": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationTargetField"
            },
            "description": "Matching columns whose names differ between the two targets."
          },
          "fig_v1_target": {
            "$ref": "#/components/schemas/MigrationTargetResource"
          },
          "fig_v2_target": {
            "$ref": "#/components/schemas/MigrationTargetResource"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this target pair for the account's users."
          },
          "overridden": {
            "type": "boolean",
            "description": "Whether a Faraday team member approved this pair despite an incomplete automated check."
          },
          "push_readiness": {
            "$ref": "#/components/schemas/MigrationTargetPushReadiness"
          }
        },
        "additionalProperties": false,
        "description": "A paired FIG v1 target and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationTargetDestinationField": {
        "type": "object",
        "required": [
          "fig_v1_value",
          "fig_v2_value",
          "option",
          "scope"
        ],
        "properties": {
          "fig_v1_value": {
            "type": "string",
            "description": "The FIG v1 destination option value."
          },
          "fig_v2_value": {
            "type": "string",
            "description": "The matching FIG v2 destination option value."
          },
          "option": {
            "type": "string",
            "description": "Destination option name, for example `table_name`, `object_key`, `file_name`, or `prefix`."
          },
          "scope": {
            "type": "string",
            "description": "Whether the option lives on the connection or on the target.",
            "enum": [
              "connection",
              "target"
            ]
          }
        },
        "additionalProperties": false,
        "description": "A destination option rename between paired FIG v1 and FIG v2 targets, such as a Snowflake table name or an S3 object key."
      },
      "FigV1ToFigV2MigrationTargetDestinationFieldMergePatch": {
        "type": "object",
        "properties": {
          "fig_v1_value": {
            "type": "string",
            "description": "The FIG v1 destination option value."
          },
          "fig_v2_value": {
            "type": "string",
            "description": "The matching FIG v2 destination option value."
          },
          "option": {
            "type": "string",
            "description": "Destination option name, for example `table_name`, `object_key`, `file_name`, or `prefix`."
          },
          "scope": {
            "type": "string",
            "description": "Whether the option lives on the connection or on the target.",
            "enum": [
              "connection",
              "target"
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `FigV1ToFigV2MigrationTargetDestinationField` type.)\n\nA destination option rename between paired FIG v1 and FIG v2 targets, such as a Snowflake table name or an S3 object key."
      },
      "FigV1ToFigV2MigrationTargetDestinationFieldPost": {
        "type": "object",
        "required": [
          "fig_v1_value",
          "fig_v2_value",
          "option",
          "scope"
        ],
        "properties": {
          "fig_v1_value": {
            "type": "string",
            "description": "The FIG v1 destination option value."
          },
          "fig_v2_value": {
            "type": "string",
            "description": "The matching FIG v2 destination option value."
          },
          "option": {
            "type": "string",
            "description": "Destination option name, for example `table_name`, `object_key`, `file_name`, or `prefix`."
          },
          "scope": {
            "type": "string",
            "description": "Whether the option lives on the connection or on the target.",
            "enum": [
              "connection",
              "target"
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `FigV1ToFigV2MigrationTargetDestinationField` type.)\n\nA destination option rename between paired FIG v1 and FIG v2 targets, such as a Snowflake table name or an S3 object key."
      },
      "FigV1ToFigV2MigrationTargetDestinationFieldPut": {
        "type": "object",
        "required": [
          "fig_v1_value",
          "fig_v2_value",
          "option",
          "scope"
        ],
        "properties": {
          "fig_v1_value": {
            "type": "string",
            "description": "The FIG v1 destination option value."
          },
          "fig_v2_value": {
            "type": "string",
            "description": "The matching FIG v2 destination option value."
          },
          "option": {
            "type": "string",
            "description": "Destination option name, for example `table_name`, `object_key`, `file_name`, or `prefix`."
          },
          "scope": {
            "type": "string",
            "description": "Whether the option lives on the connection or on the target.",
            "enum": [
              "connection",
              "target"
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `FigV1ToFigV2MigrationTargetDestinationField` type.)\n\nA destination option rename between paired FIG v1 and FIG v2 targets, such as a Snowflake table name or an S3 object key."
      },
      "FigV1ToFigV2MigrationTargetField": {
        "type": "object",
        "properties": {
          "fig_v1_column_name": {
            "type": "string",
            "description": "A FIG v1 target column. Omitted when FIG v2 emits a column FIG v1 never did, such as a scope's location proximity columns."
          },
          "fig_v2_column_name": {
            "type": "string",
            "description": "The matching FIG v2 target column. Omitted when FIG v1 emitted a column FIG v2 no longer produces."
          }
        },
        "additionalProperties": false,
        "description": "A column difference between paired FIG v1 and FIG v2 targets: a rename, a column only FIG v2 emits, or one only FIG v1 emitted."
      },
      "FigV1ToFigV2MigrationTargetFieldMergePatch": {
        "type": "object",
        "properties": {
          "fig_v1_column_name": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A FIG v1 target column. Omitted when FIG v2 emits a column FIG v1 never did, such as a scope's location proximity columns."
          },
          "fig_v2_column_name": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The matching FIG v2 target column. Omitted when FIG v1 emitted a column FIG v2 no longer produces."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `FigV1ToFigV2MigrationTargetField` type.)\n\nA column difference between paired FIG v1 and FIG v2 targets: a rename, a column only FIG v2 emits, or one only FIG v1 emitted."
      },
      "FigV1ToFigV2MigrationTargetFieldPost": {
        "type": "object",
        "properties": {
          "fig_v1_column_name": {
            "type": "string",
            "description": "A FIG v1 target column. Omitted when FIG v2 emits a column FIG v1 never did, such as a scope's location proximity columns."
          },
          "fig_v2_column_name": {
            "type": "string",
            "description": "The matching FIG v2 target column. Omitted when FIG v1 emitted a column FIG v2 no longer produces."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `FigV1ToFigV2MigrationTargetField` type.)\n\nA column difference between paired FIG v1 and FIG v2 targets: a rename, a column only FIG v2 emits, or one only FIG v1 emitted."
      },
      "FigV1ToFigV2MigrationTargetFieldPut": {
        "type": "object",
        "properties": {
          "fig_v1_column_name": {
            "type": "string",
            "description": "A FIG v1 target column. Omitted when FIG v2 emits a column FIG v1 never did, such as a scope's location proximity columns."
          },
          "fig_v2_column_name": {
            "type": "string",
            "description": "The matching FIG v2 target column. Omitted when FIG v1 emitted a column FIG v2 no longer produces."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `FigV1ToFigV2MigrationTargetField` type.)\n\nA column difference between paired FIG v1 and FIG v2 targets: a rename, a column only FIG v2 emits, or one only FIG v1 emitted."
      },
      "FigV1ToFigV2MigrationTargetMergePatch": {
        "type": "object",
        "properties": {
          "destination_mapping": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FigV1ToFigV2MigrationTargetDestinationFieldMergePatch"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Matching destination options whose values differ between the two targets, such as table names or object keys."
          },
          "field_mapping": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FigV1ToFigV2MigrationTargetFieldMergePatch"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Matching columns whose names differ between the two targets."
          },
          "fig_v1_target": {
            "$ref": "#/components/schemas/MigrationTargetResourceMergePatch"
          },
          "fig_v2_target": {
            "$ref": "#/components/schemas/MigrationTargetResourceMergePatch"
          },
          "notes": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Notes about this target pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `FigV1ToFigV2MigrationTarget` type.)\n\nA paired FIG v1 target and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationTargetPost": {
        "type": "object",
        "required": [
          "fig_v1_target",
          "fig_v2_target"
        ],
        "properties": {
          "destination_mapping": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationTargetDestinationFieldPost"
            },
            "description": "Matching destination options whose values differ between the two targets, such as table names or object keys."
          },
          "field_mapping": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationTargetFieldPost"
            },
            "description": "Matching columns whose names differ between the two targets."
          },
          "fig_v1_target": {
            "$ref": "#/components/schemas/MigrationTargetResourcePost"
          },
          "fig_v2_target": {
            "$ref": "#/components/schemas/MigrationTargetResourcePost"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this target pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `FigV1ToFigV2MigrationTarget` type.)\n\nA paired FIG v1 target and its FIG v2 replacement."
      },
      "FigV1ToFigV2MigrationTargetPut": {
        "type": "object",
        "required": [
          "fig_v1_target",
          "fig_v2_target"
        ],
        "properties": {
          "destination_mapping": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationTargetDestinationFieldPut"
            },
            "description": "Matching destination options whose values differ between the two targets, such as table names or object keys."
          },
          "field_mapping": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FigV1ToFigV2MigrationTargetFieldPut"
            },
            "description": "Matching columns whose names differ between the two targets."
          },
          "fig_v1_target": {
            "$ref": "#/components/schemas/MigrationTargetResourcePut"
          },
          "fig_v2_target": {
            "$ref": "#/components/schemas/MigrationTargetResourcePut"
          },
          "notes": {
            "type": "string",
            "description": "Notes about this target pair for the account's users."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `FigV1ToFigV2MigrationTarget` type.)\n\nA paired FIG v1 target and its FIG v2 replacement."
      },
      "GraphEdge": {
        "type": "object",
        "required": [
          "downstream_id",
          "downstream_literate",
          "downstream_status",
          "downstream_type",
          "upstream_id",
          "upstream_literate",
          "upstream_status",
          "upstream_type"
        ],
        "properties": {
          "downstream_archived_at": {
            "type": "string",
            "format": "date-time"
          },
          "downstream_id": {
            "type": "string",
            "description": "the id of the resource that depends on the upstream resource",
            "example": "24f830ff-2769-4c1f-989b-0a87481a1025",
            "format": "uuid"
          },
          "downstream_last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "downstream_last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "downstream_last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "downstream_literate": {
            "type": "string",
            "description": "A more human-consumable version of the name of the downstream resource.",
            "example": "customer personas"
          },
          "downstream_status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "downstream_status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "downstream_status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "downstream_type": {
            "$ref": "#/components/schemas/ResourceType"
          },
          "upstream_archived_at": {
            "type": "string",
            "format": "date-time"
          },
          "upstream_id": {
            "type": "string",
            "description": "the id of the resource that is depended on by the downstream resource",
            "example": "2c1881c4-a0c0-424d-89e1-b481f3cb118c",
            "format": "uuid"
          },
          "upstream_last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "upstream_last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "upstream_last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "upstream_literate": {
            "type": "string",
            "description": "A more human-consumable version of the name of the upstream resource.",
            "example": "customers"
          },
          "upstream_status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "upstream_status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "upstream_status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "upstream_type": {
            "$ref": "#/components/schemas/ResourceType"
          }
        },
        "additionalProperties": false,
        "description": "An edge in the dependency graph."
      },
      "IdentitySet": {
        "type": "object",
        "properties": {
          "address_line_1": {
            "type": "string",
            "description": "Deprecated: use `house_number_and_street` instead",
            "example": "shipping_address_address1",
            "deprecated": true,
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "address_line_2": {
            "type": "string",
            "description": "Deprecated: use `house_number_and_street` instead",
            "example": "shipping_address_address2",
            "deprecated": true,
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "city": {
            "type": "string",
            "example": "shipping_address_city",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "date_of_birth": {
            "oneOf": [
              {
                "type": "string",
                "description": "The name of the dataset column holding each person's date of birth, whose values are ISO 8601 (`YYYY-MM-DD`) dates. To read a different date format, pass an object with a `format` instead.",
                "example": "date_of_birth",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "$ref": "#/components/schemas/DateOfBirthColumn"
              }
            ],
            "description": "How to read each person's date of birth from the dataset. Combined with first name, last name, and postcode, a date of birth can resolve a person to an identity even without an email, phone, or full street address. Provide either a column name — whose values are read as ISO 8601 (`YYYY-MM-DD`) dates — or an object naming the column and its date `format`."
          },
          "email": {
            "type": "string",
            "example": "email_address",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "email_hash": {
            "type": "string",
            "description": "Lowercase hex-encoded SHA-256 hash of the lowercased email, with plus-addressing removed.",
            "example": "email_hash",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "email_hash_base64": {
            "type": "string",
            "description": "Base64-encoded SHA-256 hash of the lowercased email, with plus-addressing removed.",
            "example": "email_hash_base64",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "freeform_address": {
            "type": "string",
            "description": "House number and Street, City, State, and Zip all on one line if they are not available separately",
            "example": "shipping_address",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "house_number_and_street": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
            },
            "description": "The source columns composing the street address line (house number and street name). If this field and either `address_line_1` or `address_line_2` are populated, this field's value overrides those when saved.\n",
            "example": [
              "shipping_address_address1",
              "shipping_address_address2"
            ]
          },
          "person_date_of_birth_postcode_hash_base64": {
            "type": "string",
            "description": "Base64-encoded SHA-256 composite hash of a person's first name, last name, date of birth, and postcode, allowing that combination to resolve an identity without an email, phone, or street address. Build it by standardizing and Base64-encoded-SHA-256 hashing each field on its own, then Base64-encoded-SHA-256 hashing the four hashes concatenated in the order first name, last name, date of birth, postcode. Standardization: names are lowercased with spaces, hyphens, and apostrophes removed; date of birth is `YYYYMMDD`; postcode keeps its first five alphanumeric characters, lowercased with leading zeros removed.",
            "example": "ndz_hash",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "person_first_name": {
            "type": "string",
            "example": "shipping_address_first_name",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "person_full_name": {
            "type": "string",
            "description": "Only provide this if you don't have first name and last name separately",
            "example": "shipping_address_full_name",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "person_last_name": {
            "type": "string",
            "example": "shipping_address_last_name",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "phone": {
            "type": "string",
            "example": "shipping_address_phone",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "phone_hash_base64": {
            "type": "string",
            "description": "Base64-encoded SHA-256 hash of the phone number's last ten digits, with all non-digit characters removed first. Available only to accounts enabled for phone-only matching.",
            "example": "phone_hash_base64",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "postcode": {
            "type": "string",
            "example": "shipping_address_zip",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "state": {
            "type": "string",
            "example": "shipping_address_state",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          }
        },
        "additionalProperties": false,
        "description": "Information about how to extract personally identifiable information (name, contact, address) from the rows \nin a dataset. \n\nAt least one value must be provided.\n"
      },
      "IdentitySetMergePatch": {
        "type": "object",
        "properties": {
          "address_line_1": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "shipping_address_address1",
                "deprecated": true,
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Deprecated: use `house_number_and_street` instead"
          },
          "address_line_2": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "shipping_address_address2",
                "deprecated": true,
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Deprecated: use `house_number_and_street` instead"
          },
          "city": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "shipping_address_city",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "date_of_birth": {
            "oneOf": [
              {
                "type": "string",
                "description": "The name of the dataset column holding each person's date of birth, whose values are ISO 8601 (`YYYY-MM-DD`) dates. To read a different date format, pass an object with a `format` instead.",
                "example": "date_of_birth",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "$ref": "#/components/schemas/DateOfBirthColumn"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "How to read each person's date of birth from the dataset. Combined with first name, last name, and postcode, a date of birth can resolve a person to an identity even without an email, phone, or full street address. Provide either a column name — whose values are read as ISO 8601 (`YYYY-MM-DD`) dates — or an object naming the column and its date `format`."
          },
          "email": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "email_address",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "email_hash": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "email_hash",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Lowercase hex-encoded SHA-256 hash of the lowercased email, with plus-addressing removed."
          },
          "email_hash_base64": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "email_hash_base64",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Base64-encoded SHA-256 hash of the lowercased email, with plus-addressing removed."
          },
          "freeform_address": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "shipping_address",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "House number and Street, City, State, and Zip all on one line if they are not available separately"
          },
          "house_number_and_street": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": [
                  "shipping_address_address1",
                  "shipping_address_address2"
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The source columns composing the street address line (house number and street name). If this field and either `address_line_1` or `address_line_2` are populated, this field's value overrides those when saved.\n"
          },
          "person_date_of_birth_postcode_hash_base64": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "ndz_hash",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Base64-encoded SHA-256 composite hash of a person's first name, last name, date of birth, and postcode, allowing that combination to resolve an identity without an email, phone, or street address. Build it by standardizing and Base64-encoded-SHA-256 hashing each field on its own, then Base64-encoded-SHA-256 hashing the four hashes concatenated in the order first name, last name, date of birth, postcode. Standardization: names are lowercased with spaces, hyphens, and apostrophes removed; date of birth is `YYYYMMDD`; postcode keeps its first five alphanumeric characters, lowercased with leading zeros removed."
          },
          "person_first_name": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "shipping_address_first_name",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "person_full_name": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "shipping_address_full_name",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Only provide this if you don't have first name and last name separately"
          },
          "person_last_name": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "shipping_address_last_name",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "phone": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "shipping_address_phone",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "phone_hash_base64": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "phone_hash_base64",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Base64-encoded SHA-256 hash of the phone number's last ten digits, with all non-digit characters removed first. Available only to accounts enabled for phone-only matching."
          },
          "postcode": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "shipping_address_zip",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "state": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "shipping_address_state",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `IdentitySet` type.)\n\nInformation about how to extract personally identifiable information (name, contact, address) from the rows \nin a dataset. \n\nAt least one value must be provided.\n"
      },
      "IdentitySetPost": {
        "type": "object",
        "properties": {
          "address_line_1": {
            "type": "string",
            "description": "Deprecated: use `house_number_and_street` instead",
            "example": "shipping_address_address1",
            "deprecated": true,
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "address_line_2": {
            "type": "string",
            "description": "Deprecated: use `house_number_and_street` instead",
            "example": "shipping_address_address2",
            "deprecated": true,
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "city": {
            "type": "string",
            "example": "shipping_address_city",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "date_of_birth": {
            "oneOf": [
              {
                "type": "string",
                "description": "The name of the dataset column holding each person's date of birth, whose values are ISO 8601 (`YYYY-MM-DD`) dates. To read a different date format, pass an object with a `format` instead.",
                "example": "date_of_birth",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "$ref": "#/components/schemas/DateOfBirthColumn"
              }
            ],
            "description": "How to read each person's date of birth from the dataset. Combined with first name, last name, and postcode, a date of birth can resolve a person to an identity even without an email, phone, or full street address. Provide either a column name — whose values are read as ISO 8601 (`YYYY-MM-DD`) dates — or an object naming the column and its date `format`."
          },
          "email": {
            "type": "string",
            "example": "email_address",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "email_hash": {
            "type": "string",
            "description": "Lowercase hex-encoded SHA-256 hash of the lowercased email, with plus-addressing removed.",
            "example": "email_hash",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "email_hash_base64": {
            "type": "string",
            "description": "Base64-encoded SHA-256 hash of the lowercased email, with plus-addressing removed.",
            "example": "email_hash_base64",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "freeform_address": {
            "type": "string",
            "description": "House number and Street, City, State, and Zip all on one line if they are not available separately",
            "example": "shipping_address",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "house_number_and_street": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
            },
            "description": "The source columns composing the street address line (house number and street name). If this field and either `address_line_1` or `address_line_2` are populated, this field's value overrides those when saved.\n",
            "example": [
              "shipping_address_address1",
              "shipping_address_address2"
            ]
          },
          "person_date_of_birth_postcode_hash_base64": {
            "type": "string",
            "description": "Base64-encoded SHA-256 composite hash of a person's first name, last name, date of birth, and postcode, allowing that combination to resolve an identity without an email, phone, or street address. Build it by standardizing and Base64-encoded-SHA-256 hashing each field on its own, then Base64-encoded-SHA-256 hashing the four hashes concatenated in the order first name, last name, date of birth, postcode. Standardization: names are lowercased with spaces, hyphens, and apostrophes removed; date of birth is `YYYYMMDD`; postcode keeps its first five alphanumeric characters, lowercased with leading zeros removed.",
            "example": "ndz_hash",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "person_first_name": {
            "type": "string",
            "example": "shipping_address_first_name",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "person_full_name": {
            "type": "string",
            "description": "Only provide this if you don't have first name and last name separately",
            "example": "shipping_address_full_name",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "person_last_name": {
            "type": "string",
            "example": "shipping_address_last_name",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "phone": {
            "type": "string",
            "example": "shipping_address_phone",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "phone_hash_base64": {
            "type": "string",
            "description": "Base64-encoded SHA-256 hash of the phone number's last ten digits, with all non-digit characters removed first. Available only to accounts enabled for phone-only matching.",
            "example": "phone_hash_base64",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "postcode": {
            "type": "string",
            "example": "shipping_address_zip",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "state": {
            "type": "string",
            "example": "shipping_address_state",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `IdentitySet` type.)\n\nInformation about how to extract personally identifiable information (name, contact, address) from the rows \nin a dataset. \n\nAt least one value must be provided.\n"
      },
      "IdentitySetPut": {
        "type": "object",
        "properties": {
          "address_line_1": {
            "type": "string",
            "description": "Deprecated: use `house_number_and_street` instead",
            "example": "shipping_address_address1",
            "deprecated": true,
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "address_line_2": {
            "type": "string",
            "description": "Deprecated: use `house_number_and_street` instead",
            "example": "shipping_address_address2",
            "deprecated": true,
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "city": {
            "type": "string",
            "example": "shipping_address_city",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "date_of_birth": {
            "oneOf": [
              {
                "type": "string",
                "description": "The name of the dataset column holding each person's date of birth, whose values are ISO 8601 (`YYYY-MM-DD`) dates. To read a different date format, pass an object with a `format` instead.",
                "example": "date_of_birth",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "$ref": "#/components/schemas/DateOfBirthColumn"
              }
            ],
            "description": "How to read each person's date of birth from the dataset. Combined with first name, last name, and postcode, a date of birth can resolve a person to an identity even without an email, phone, or full street address. Provide either a column name — whose values are read as ISO 8601 (`YYYY-MM-DD`) dates — or an object naming the column and its date `format`."
          },
          "email": {
            "type": "string",
            "example": "email_address",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "email_hash": {
            "type": "string",
            "description": "Lowercase hex-encoded SHA-256 hash of the lowercased email, with plus-addressing removed.",
            "example": "email_hash",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "email_hash_base64": {
            "type": "string",
            "description": "Base64-encoded SHA-256 hash of the lowercased email, with plus-addressing removed.",
            "example": "email_hash_base64",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "freeform_address": {
            "type": "string",
            "description": "House number and Street, City, State, and Zip all on one line if they are not available separately",
            "example": "shipping_address",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "house_number_and_street": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
            },
            "description": "The source columns composing the street address line (house number and street name). If this field and either `address_line_1` or `address_line_2` are populated, this field's value overrides those when saved.\n",
            "example": [
              "shipping_address_address1",
              "shipping_address_address2"
            ]
          },
          "person_date_of_birth_postcode_hash_base64": {
            "type": "string",
            "description": "Base64-encoded SHA-256 composite hash of a person's first name, last name, date of birth, and postcode, allowing that combination to resolve an identity without an email, phone, or street address. Build it by standardizing and Base64-encoded-SHA-256 hashing each field on its own, then Base64-encoded-SHA-256 hashing the four hashes concatenated in the order first name, last name, date of birth, postcode. Standardization: names are lowercased with spaces, hyphens, and apostrophes removed; date of birth is `YYYYMMDD`; postcode keeps its first five alphanumeric characters, lowercased with leading zeros removed.",
            "example": "ndz_hash",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "person_first_name": {
            "type": "string",
            "example": "shipping_address_first_name",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "person_full_name": {
            "type": "string",
            "description": "Only provide this if you don't have first name and last name separately",
            "example": "shipping_address_full_name",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "person_last_name": {
            "type": "string",
            "example": "shipping_address_last_name",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "phone": {
            "type": "string",
            "example": "shipping_address_phone",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "phone_hash_base64": {
            "type": "string",
            "description": "Base64-encoded SHA-256 hash of the phone number's last ten digits, with all non-digit characters removed first. Available only to accounts enabled for phone-only matching.",
            "example": "phone_hash_base64",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "postcode": {
            "type": "string",
            "example": "shipping_address_zip",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "state": {
            "type": "string",
            "example": "shipping_address_state",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `IdentitySet` type.)\n\nInformation about how to extract personally identifiable information (name, contact, address) from the rows \nin a dataset. \n\nAt least one value must be provided.\n"
      },
      "IdentitySets": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/IdentitySet"
        },
        "description": "A mapping of {identity set name} (ex. shipping) -> {identity set object}. \n\nDescribes all the logical groupings of personally-identifiable information present in the dataset.\n\nIdentity set objects map canonical names to dataset column names. The following keys are supported:\n  * `email`\n  * `email_hash`\n  * `email_hash_base64`\n  * `phone`\n  * `phone_hash_base64`\n  * `person_full_name`\n  * `person_last_name`\n  * `person_first_name`\n  * `person_date_of_birth_postcode_hash_base64`\n  * `house_number_and_street`\n  * `city`\n  * `state`\n  * `postcode`\n  * `freeform_address`\n  * `date_of_birth`\n\nAll keys must correspond to a single column name except `house_number_and_street` which must be an array of column names.\n\nKey names can contain letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore.\n"
      },
      "IdentitySetsMergePatch": {
        "type": "object",
        "additionalProperties": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/IdentitySetMergePatch"
            },
            {
              "type": "null",
              "description": "Pass `null` to clear this field's existing value.",
              "title": "Clear"
            }
          ]
        },
        "description": "(Parameters used to PATCH the `IdentitySets` type.)\n\nA mapping of {identity set name} (ex. shipping) -> {identity set object}. \n\nDescribes all the logical groupings of personally-identifiable information present in the dataset.\n\nIdentity set objects map canonical names to dataset column names. The following keys are supported:\n  * `email`\n  * `email_hash`\n  * `email_hash_base64`\n  * `phone`\n  * `phone_hash_base64`\n  * `person_full_name`\n  * `person_last_name`\n  * `person_first_name`\n  * `person_date_of_birth_postcode_hash_base64`\n  * `house_number_and_street`\n  * `city`\n  * `state`\n  * `postcode`\n  * `freeform_address`\n  * `date_of_birth`\n\nAll keys must correspond to a single column name except `house_number_and_street` which must be an array of column names.\n\nKey names can contain letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore.\n"
      },
      "IdentitySetsPost": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/IdentitySetPost"
        },
        "description": "(Parameters used to POST a new value of the `IdentitySets` type.)\n\nA mapping of {identity set name} (ex. shipping) -> {identity set object}. \n\nDescribes all the logical groupings of personally-identifiable information present in the dataset.\n\nIdentity set objects map canonical names to dataset column names. The following keys are supported:\n  * `email`\n  * `email_hash`\n  * `email_hash_base64`\n  * `phone`\n  * `phone_hash_base64`\n  * `person_full_name`\n  * `person_last_name`\n  * `person_first_name`\n  * `person_date_of_birth_postcode_hash_base64`\n  * `house_number_and_street`\n  * `city`\n  * `state`\n  * `postcode`\n  * `freeform_address`\n  * `date_of_birth`\n\nAll keys must correspond to a single column name except `house_number_and_street` which must be an array of column names.\n\nKey names can contain letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore.\n",
        "example": {
          "shipping1": {
            "city": "shipping_address_city",
            "house_number_and_street": [
              "shipping_address_address1",
              "shipping_address_address2"
            ],
            "person_first_name": "shipping_address_first_name",
            "person_last_name": "shipping_address_last_name",
            "phone": "shipping_address_phone",
            "postcode": "shipping_address_zip",
            "state": "shipping_address_state"
          },
          "shipping2": {
            "freeform_address": "shipping_address",
            "person_first_name": "shipping_address_first_name",
            "person_last_name": "shipping_address_last_name",
            "phone": "shipping_address_phone"
          }
        }
      },
      "IdentitySetsPut": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/IdentitySetPut"
        },
        "description": "(Parameters used to PUT a value of the `IdentitySets` type.)\n\nA mapping of {identity set name} (ex. shipping) -> {identity set object}. \n\nDescribes all the logical groupings of personally-identifiable information present in the dataset.\n\nIdentity set objects map canonical names to dataset column names. The following keys are supported:\n  * `email`\n  * `email_hash`\n  * `email_hash_base64`\n  * `phone`\n  * `phone_hash_base64`\n  * `person_full_name`\n  * `person_last_name`\n  * `person_first_name`\n  * `person_date_of_birth_postcode_hash_base64`\n  * `house_number_and_street`\n  * `city`\n  * `state`\n  * `postcode`\n  * `freeform_address`\n  * `date_of_birth`\n\nAll keys must correspond to a single column name except `house_number_and_street` which must be an array of column names.\n\nKey names can contain letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore.\n"
      },
      "Invoice": {
        "type": "object",
        "required": [
          "effective_date",
          "amount",
          "paid",
          "due_date"
        ],
        "properties": {
          "amount": {
            "type": "number",
            "description": "The amount of the invoice.",
            "example": 123.45
          },
          "due_date": {
            "type": "string",
            "example": "2022-10-05",
            "format": "date"
          },
          "effective_date": {
            "type": "string",
            "description": "The date of the invoice",
            "example": "2022-05-24",
            "format": "date"
          },
          "paid": {
            "type": "boolean",
            "description": "Whether or not the invoice has been paid.",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "KnowledgebaseOverview": {
        "type": "object",
        "required": [
          "content"
        ],
        "properties": {
          "content": {
            "type": "string",
            "description": "Markdown body of the overview. May be empty if no overview has been written yet."
          },
          "created_at": {
            "type": "string",
            "description": "When the current revision was saved. Absent if no overview has been written yet.",
            "format": "date-time"
          },
          "revision_id": {
            "type": "string",
            "description": "Identifies the latest saved revision. Pass back to PATCH to detect\nconcurrent edits — if the server's current revision_id has moved\npast this value the PATCH is rejected with 409.\n",
            "format": "uuid"
          }
        },
        "description": "The current saved revision of an account's knowledgebase overview, or an\nempty stub if no overview has ever been written. `revision_id` and\n`created_at` are absent in the empty-stub case; `content` is \"\".\n"
      },
      "KnowledgebaseOverviewPatch": {
        "type": "object",
        "required": [
          "content"
        ],
        "properties": {
          "content": {
            "type": "string",
            "description": "New markdown body of the overview."
          },
          "revision_id": {
            "type": "string",
            "description": "revision_id of the revision the client based their edit on. Required\nunless the overview has never been written before. Server returns\n409 if its current revision_id has moved past this value.\n",
            "format": "uuid"
          }
        },
        "description": "New content for the account knowledgebase overview, plus the\n`revision_id` the edit was based on.\n"
      },
      "KnowledgebaseOverviewRevisionSummary": {
        "type": "object",
        "required": [
          "revision_id",
          "created_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "revision_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "description": "One entry in the list of saved overview revisions."
      },
      "Location": {
        "type": "object",
        "required": [
          "atlas_id"
        ],
        "properties": {
          "atlas_id": {
            "type": "string",
            "description": "The UUID of the atlas this location belongs to - see <a href=\"https://faraday.ai/developers/reference/createatlas\">/atlases</a> for more detail.\n",
            "example": "4c6c0f1e-0a58-4f1a-9c8a-52a1a1a3f5b7",
            "format": "uuid"
          },
          "city": {
            "type": "string",
            "description": "The city this location was geocoded from."
          },
          "geometry": {
            "type": "object",
            "description": "A GeoJSON Geometry, as defined in the [GeoJSON specification](https://www.rfc-editor.org/rfc/rfc7946#section-3.1)\n\nThe longitude and latitude units of this geometry are in decimal degrees, using the WGS84 coordinate reference system, also known by the SRID 4326. https://www.rfc-editor.org/rfc/rfc7946#section-4\n"
          },
          "house_number_and_street": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The street address lines this location was geocoded from."
          },
          "latitude": {
            "type": "number",
            "description": "The latitude this location was placed from, in decimal degrees, EPSG 4326 (WGS 84). Present only for locations placed from latitude and longitude columns; null otherwise, including addresses, whose coordinates come from geocoding rather than input."
          },
          "longitude": {
            "type": "number",
            "description": "The longitude this location was placed from, in decimal degrees, EPSG 4326 (WGS 84). Present only for locations placed from latitude and longitude columns; null otherwise, including addresses, whose coordinates come from geocoding rather than input."
          },
          "name": {
            "type": "string",
            "description": "A human-readable label for this location.",
            "example": "Burlington"
          },
          "postcode": {
            "type": "string",
            "description": "The postcode this location was geocoded from."
          },
          "properties": {
            "type": "object",
            "description": "The values of the properties defined by this location's atlas."
          },
          "reference_key": {
            "type": "string",
            "description": "This location's identifier from an external system.",
            "example": "store-042"
          },
          "state": {
            "type": "string",
            "description": "The state this location was geocoded from."
          }
        },
        "additionalProperties": false,
        "description": "A geographic location belonging to an atlas.\n"
      },
      "LocationPropertyCondition": {
        "type": "object",
        "required": [
          "property"
        ],
        "properties": {
          "_eq": {
            "type": "string",
            "description": "Equal to"
          },
          "_gt": {
            "type": "number",
            "description": "Greater than"
          },
          "_gte": {
            "type": "number",
            "description": "Greater than or equal to"
          },
          "_in": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is one of"
          },
          "_lt": {
            "type": "number",
            "description": "Less than"
          },
          "_lte": {
            "type": "number",
            "description": "Less than or equal to"
          },
          "_matches": {
            "type": "string",
            "description": "Value contains a match to the regex (re2) expression provided. For an exact regex match, use the ^ and $ characters as specified by the (re2 documentation)[https://github.com/google/re2/wiki/Syntax]."
          },
          "_neq": {
            "type": "string",
            "description": "Not equal to"
          },
          "_nin": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is not one of"
          },
          "_nnull": {
            "type": "boolean",
            "description": "Value is not null"
          },
          "_null": {
            "type": "boolean",
            "description": "Value is null (nulls are otherwise excluded)"
          },
          "optional": {
            "type": "boolean",
            "description": "Optional property conditions are unioned together, when combined they select locations that meet either property condition. At least one optional condition must be satisfied."
          },
          "property": {
            "type": "string",
            "description": "The name of the location property, as defined by its atlas' `output_to_locations`.",
            "maxLength": 256
          }
        },
        "additionalProperties": false
      },
      "LookupApiIdentifiers": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "example": "Anytown"
          },
          "email": {
            "type": "string",
            "example": "john_doe@test.com",
            "format": "email"
          },
          "email_hash": {
            "type": "string",
            "description": "Lowercase hex-encoded SHA-256 hash of the lowercased email, with plus-addressing removed.",
            "example": "ea7047caf2a60b1c20c6c13b12a47e4e08610736f2062b0ae67c266f7a9516c9"
          },
          "house_number_and_street": {
            "type": "string",
            "example": "123 Main Street"
          },
          "latitude": {
            "type": "string"
          },
          "longitude": {
            "type": "string"
          },
          "person_first_name": {
            "type": "string",
            "example": "John"
          },
          "person_last_name": {
            "type": "string",
            "example": "Doe"
          },
          "phone": {
            "type": "string"
          },
          "postcode": {
            "type": "string",
            "example": "00001",
            "pattern": "\\d\\d\\d\\d\\d"
          },
          "search_radius": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "example": "Farazona or FZ"
          }
        }
      },
      "LookupApiIdentitySets": {
        "allOf": [
          {
            "$ref": "#/components/schemas/LookupApiIdentifiers"
          }
        ],
        "type": "object"
      },
      "LookupIdentityProvider": {
        "type": "string",
        "description": "The identity provider used to obtain a match with the requested identity.\n",
        "enum": [
          "fig",
          "match_boost"
        ]
      },
      "LookupMatchType": {
        "type": "string",
        "description": "The type of match that was found for the lookup request.\n",
        "enum": [
          "address_full_name",
          "email_full_name",
          "phone_full_name",
          "address_last_name",
          "email_last_name",
          "phone_last_name",
          "address_only",
          "email_only",
          "postcode_only",
          "phone_only"
        ]
      },
      "MarketOpportunityAnalysis": {
        "type": "object",
        "required": [
          "created_at",
          "id",
          "name",
          "outcome_id",
          "resource_type",
          "scope_id",
          "status",
          "updated_at"
        ],
        "properties": {
          "aggregate": {
            "type": "string",
            "description": "The entity this analysis counts. `person` (the default) counts individuals. `residence` counts households: people at the same address collapse into one entity before any metric is computed.\n\nHow a household's member scores combine is not selectable. A residence analysis uses the best-scoring member — the household counts as the prospect its strongest member makes it, matching the rule that a household has attained if any member has.\n",
            "default": "person",
            "enum": [
              "person",
              "residence"
            ]
          },
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "google_sheets_url": {
            "type": "string",
            "description": "URL to the Google Sheets spreadsheet of the market opportunity analysis. Available once the market opportunity analysis has been run. Permission to view the spreadsheet is granted to all users on the current account.",
            "format": "uri"
          },
          "google_slides_url": {
            "type": "string",
            "description": "URL to the Google Slides presentation of the market opportunity analysis. Available once the market opportunity analysis has been run. Permission to view the presentation is granted to all users on the current account.",
            "format": "uri"
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "locations": {
            "type": "object",
            "properties": {
              "atlas_ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "4c6c0f1e-0a58-4f1a-9c8a-52a1a1a3f5b7",
                  "format": "uuid"
                },
                "description": "The atlases whose locations this analysis covers.\n\nIf this is empty or absent, every atlas in the account is used.\n"
              },
              "location_reference_keys": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "store-042"
                },
                "description": "Cover only the locations carrying these reference keys.\n\nA reference key is unique only within one atlas, so these keys are matched in every atlas this analysis covers. Select a single atlas to restrict them to that atlas' keys.\n"
              },
              "property_conditions": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LocationPropertyCondition"
                },
                "description": "Cover only the locations whose properties satisfy these conditions."
              }
            },
            "additionalProperties": false,
            "description": "The atlas locations this analysis covers. If absent, the analysis is not based on locations.\n"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this market opportunity analysis",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "outcome_id": {
            "type": "string",
            "description": "Outcome must be in the scope payload.",
            "format": "uuid"
          },
          "overall_report": {
            "$ref": "#/components/schemas/MarketOpportunityAnalysisOverallReport"
          },
          "persona_id": {
            "type": "string",
            "description": "persona_id must belong to the persona_set_id chosen. Providing a persona_id will do further analysis on the persona, but is not required to generate results for the persona set as a whole.",
            "format": "uuid"
          },
          "persona_set_id": {
            "type": "string",
            "description": "Optionally select a persona set to analyze. Persona set must be in the scope payload.",
            "format": "uuid"
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource."
          },
          "scope_id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A market opportunity analysis report allows you to measure penetration and opportunity in your market. With this report, you can see the size and location of remaining opportunity in your market, which can help you focus your efforts accordingly.\n\nMarket opportunity analysis reports are for customer acquisition pipelines only. Make sure your pipeline’s population to include represents your market, and that you’re not excluding your existing customers in the population to exclude.\n\nThis feature may not be available in all plans. Contact your account manager for more information.\n"
      },
      "MarketOpportunityAnalysisMergePatch": {
        "type": "object",
        "properties": {
          "aggregate": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "default": "person",
                "enum": [
                  "person",
                  "residence"
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The entity this analysis counts. `person` (the default) counts individuals. `residence` counts households: people at the same address collapse into one entity before any metric is computed.\n\nHow a household's member scores combine is not selectable. A residence analysis uses the best-scoring member — the household counts as the prospect its strongest member makes it, matching the rule that a household has attained if any member has.\n"
          },
          "locations": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "atlas_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "4c6c0f1e-0a58-4f1a-9c8a-52a1a1a3f5b7",
                      "format": "uuid"
                    },
                    "description": "The atlases whose locations this analysis covers.\n\nIf this is empty or absent, every atlas in the account is used.\n"
                  },
                  "location_reference_keys": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "store-042"
                    },
                    "description": "Cover only the locations carrying these reference keys.\n\nA reference key is unique only within one atlas, so these keys are matched in every atlas this analysis covers. Select a single atlas to restrict them to that atlas' keys.\n"
                  },
                  "property_conditions": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/LocationPropertyCondition"
                    },
                    "description": "Cover only the locations whose properties satisfy these conditions."
                  }
                },
                "additionalProperties": false,
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The atlas locations this analysis covers. If absent, the analysis is not based on locations.\n"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this market opportunity analysis",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "outcome_id": {
            "type": "string",
            "description": "Outcome must be in the scope payload.",
            "format": "uuid"
          },
          "persona_id": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "uuid"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "persona_id must belong to the persona_set_id chosen. Providing a persona_id will do further analysis on the persona, but is not required to generate results for the persona set as a whole."
          },
          "persona_set_id": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "uuid"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Optionally select a persona set to analyze. Persona set must be in the scope payload."
          },
          "scope_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `MarketOpportunityAnalysis` type.)\n\nA market opportunity analysis report allows you to measure penetration and opportunity in your market. With this report, you can see the size and location of remaining opportunity in your market, which can help you focus your efforts accordingly.\n\nMarket opportunity analysis reports are for customer acquisition pipelines only. Make sure your pipeline’s population to include represents your market, and that you’re not excluding your existing customers in the population to exclude.\n\nThis feature may not be available in all plans. Contact your account manager for more information.\n"
      },
      "MarketOpportunityAnalysisOverallReport": {
        "type": "object",
        "required": [
          "in_population_remaining_likely_attainers",
          "in_population_remaining_attainment_value",
          "adjusted_in_population_attainers",
          "total_value_of_adjusted_in_population_attainment",
          "average_value_per_in_population_attainment",
          "average_total_value_per_in_population_attainer"
        ],
        "properties": {
          "adjusted_in_population_attainers": {
            "type": "integer"
          },
          "average_total_value_per_in_population_attainer": {
            "type": "number"
          },
          "average_value_per_in_population_attainment": {
            "type": "number"
          },
          "in_population_remaining_attainment_value": {
            "type": "number"
          },
          "in_population_remaining_likely_attainers": {
            "type": "integer"
          },
          "total_value_of_adjusted_in_population_attainment": {
            "type": "number"
          }
        },
        "description": "Summary over the latest report. Available once the market opportunity analysis has been run."
      },
      "MarketOpportunityAnalysisPost": {
        "type": "object",
        "required": [
          "name",
          "outcome_id",
          "scope_id"
        ],
        "properties": {
          "aggregate": {
            "type": "string",
            "description": "The entity this analysis counts. `person` (the default) counts individuals. `residence` counts households: people at the same address collapse into one entity before any metric is computed.\n\nHow a household's member scores combine is not selectable. A residence analysis uses the best-scoring member — the household counts as the prospect its strongest member makes it, matching the rule that a household has attained if any member has.\n",
            "default": "person",
            "enum": [
              "person",
              "residence"
            ]
          },
          "locations": {
            "type": "object",
            "properties": {
              "atlas_ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "4c6c0f1e-0a58-4f1a-9c8a-52a1a1a3f5b7",
                  "format": "uuid"
                },
                "description": "The atlases whose locations this analysis covers.\n\nIf this is empty or absent, every atlas in the account is used.\n"
              },
              "location_reference_keys": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "store-042"
                },
                "description": "Cover only the locations carrying these reference keys.\n\nA reference key is unique only within one atlas, so these keys are matched in every atlas this analysis covers. Select a single atlas to restrict them to that atlas' keys.\n"
              },
              "property_conditions": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LocationPropertyCondition"
                },
                "description": "Cover only the locations whose properties satisfy these conditions."
              }
            },
            "additionalProperties": false,
            "description": "The atlas locations this analysis covers. If absent, the analysis is not based on locations.\n"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this market opportunity analysis",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "outcome_id": {
            "type": "string",
            "description": "Outcome must be in the scope payload.",
            "format": "uuid"
          },
          "persona_id": {
            "type": "string",
            "description": "persona_id must belong to the persona_set_id chosen. Providing a persona_id will do further analysis on the persona, but is not required to generate results for the persona set as a whole.",
            "format": "uuid"
          },
          "persona_set_id": {
            "type": "string",
            "description": "Optionally select a persona set to analyze. Persona set must be in the scope payload.",
            "format": "uuid"
          },
          "scope_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `MarketOpportunityAnalysis` type.)\n\nA market opportunity analysis report allows you to measure penetration and opportunity in your market. With this report, you can see the size and location of remaining opportunity in your market, which can help you focus your efforts accordingly.\n\nMarket opportunity analysis reports are for customer acquisition pipelines only. Make sure your pipeline’s population to include represents your market, and that you’re not excluding your existing customers in the population to exclude.\n\nThis feature may not be available in all plans. Contact your account manager for more information.\n"
      },
      "MarketOpportunityAnalysisPut": {
        "type": "object",
        "required": [
          "name",
          "outcome_id",
          "scope_id"
        ],
        "properties": {
          "aggregate": {
            "type": "string",
            "description": "The entity this analysis counts. `person` (the default) counts individuals. `residence` counts households: people at the same address collapse into one entity before any metric is computed.\n\nHow a household's member scores combine is not selectable. A residence analysis uses the best-scoring member — the household counts as the prospect its strongest member makes it, matching the rule that a household has attained if any member has.\n",
            "default": "person",
            "enum": [
              "person",
              "residence"
            ]
          },
          "locations": {
            "type": "object",
            "properties": {
              "atlas_ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "4c6c0f1e-0a58-4f1a-9c8a-52a1a1a3f5b7",
                  "format": "uuid"
                },
                "description": "The atlases whose locations this analysis covers.\n\nIf this is empty or absent, every atlas in the account is used.\n"
              },
              "location_reference_keys": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "store-042"
                },
                "description": "Cover only the locations carrying these reference keys.\n\nA reference key is unique only within one atlas, so these keys are matched in every atlas this analysis covers. Select a single atlas to restrict them to that atlas' keys.\n"
              },
              "property_conditions": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LocationPropertyCondition"
                },
                "description": "Cover only the locations whose properties satisfy these conditions."
              }
            },
            "additionalProperties": false,
            "description": "The atlas locations this analysis covers. If absent, the analysis is not based on locations.\n"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this market opportunity analysis",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "outcome_id": {
            "type": "string",
            "description": "Outcome must be in the scope payload.",
            "format": "uuid"
          },
          "persona_id": {
            "type": "string",
            "description": "persona_id must belong to the persona_set_id chosen. Providing a persona_id will do further analysis on the persona, but is not required to generate results for the persona set as a whole.",
            "format": "uuid"
          },
          "persona_set_id": {
            "type": "string",
            "description": "Optionally select a persona set to analyze. Persona set must be in the scope payload.",
            "format": "uuid"
          },
          "scope_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `MarketOpportunityAnalysis` type.)\n\nA market opportunity analysis report allows you to measure penetration and opportunity in your market. With this report, you can see the size and location of remaining opportunity in your market, which can help you focus your efforts accordingly.\n\nMarket opportunity analysis reports are for customer acquisition pipelines only. Make sure your pipeline’s population to include represents your market, and that you’re not excluding your existing customers in the population to exclude.\n\nThis feature may not be available in all plans. Contact your account manager for more information.\n"
      },
      "Migration": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/FigV1ToFigV2Migration"
          }
        ],
        "description": "A change from one account or resource configuration to another.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "fig_v1_to_fig_v2": "#/components/schemas/FigV1ToFigV2Migration"
          }
        }
      },
      "MigrationAccount": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The account's unique ID.",
            "format": "uuid"
          },
          "lookup_api_calls": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Deprecated. Lookup API call counts belong on each Lookup API target (`targets[].fig_v1_target.lookup_api_calls` / `targets[].fig_v2_target.lookup_api_calls`), not on the account. Omitted on new checks.",
            "deprecated": true
          },
          "name": {
            "type": "string",
            "description": "The account's name."
          }
        },
        "additionalProperties": false,
        "description": "An account referenced by a migration."
      },
      "MigrationAccountMergePatch": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The account's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `MigrationAccount` type.)\n\nAn account referenced by a migration."
      },
      "MigrationAccountPost": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The account's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `MigrationAccount` type.)\n\nAn account referenced by a migration."
      },
      "MigrationAccountPut": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The account's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `MigrationAccount` type.)\n\nAn account referenced by a migration."
      },
      "MigrationDatasetResource": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "When the resource was archived. Omitted for active resources.",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          },
          "identified_count": {
            "type": "integer",
            "description": "The number of distinct people identified in the dataset's latest successful build.",
            "minimum": 0
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "When the resource last built successfully.",
            "format": "date-time"
          },
          "matched_count": {
            "type": "integer",
            "description": "The number of identified people matched to Faraday data in the dataset's latest successful build.",
            "minimum": 0
          },
          "name": {
            "type": "string",
            "description": "The resource's name."
          },
          "row_count": {
            "type": "integer",
            "description": "The number of rows in the dataset's latest successful build.",
            "minimum": 0
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus",
            "description": "The resource's current run state."
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the resource's run state last changed.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "Why the resource's latest run failed. Omitted unless `status` is `error`."
          }
        },
        "additionalProperties": false,
        "description": "A dataset referenced by a migration pair."
      },
      "MigrationDatasetResourceMergePatch": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `MigrationDatasetResource` type.)\n\nA dataset referenced by a migration pair."
      },
      "MigrationDatasetResourcePost": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `MigrationDatasetResource` type.)\n\nA dataset referenced by a migration pair."
      },
      "MigrationDatasetResourcePut": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `MigrationDatasetResource` type.)\n\nA dataset referenced by a migration pair."
      },
      "MigrationMergePatch": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/FigV1ToFigV2MigrationMergePatch"
          }
        ],
        "description": "A change from one account or resource configuration to another.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "fig_v1_to_fig_v2": "#/components/schemas/FigV1ToFigV2MigrationMergePatch"
          }
        }
      },
      "MigrationOutcomeResource": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "When the resource was archived. Omitted for active resources.",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "When the resource last built successfully.",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "The resource's name."
          },
          "roc_auc": {
            "type": "number",
            "description": "The ROC AUC from the outcome's latest completed run.",
            "maximum": 1,
            "minimum": 0
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus",
            "description": "The resource's current run state."
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the resource's run state last changed.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "Why the resource's latest run failed. Omitted unless `status` is `error`."
          },
          "training_set_size": {
            "type": "integer",
            "description": "The total number of examples across the training sets used by the outcome's latest completed run.",
            "minimum": 0
          }
        },
        "additionalProperties": false,
        "description": "An outcome referenced by a migration pair."
      },
      "MigrationOutcomeResourceMergePatch": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `MigrationOutcomeResource` type.)\n\nAn outcome referenced by a migration pair."
      },
      "MigrationOutcomeResourcePost": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `MigrationOutcomeResource` type.)\n\nAn outcome referenced by a migration pair."
      },
      "MigrationOutcomeResourcePut": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `MigrationOutcomeResource` type.)\n\nAn outcome referenced by a migration pair."
      },
      "MigrationPersonaSetResource": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "When the resource was archived. Omitted for active resources.",
            "format": "date-time"
          },
          "cluster_count": {
            "type": "integer",
            "description": "The number of personas in the persona set's latest completed run.",
            "minimum": 0
          },
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "When the resource last built successfully.",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "The resource's name."
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus",
            "description": "The resource's current run state."
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the resource's run state last changed.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "Why the resource's latest run failed. Omitted unless `status` is `error`."
          }
        },
        "additionalProperties": false,
        "description": "A persona set referenced by a migration pair."
      },
      "MigrationPersonaSetResourceMergePatch": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `MigrationPersonaSetResource` type.)\n\nA persona set referenced by a migration pair."
      },
      "MigrationPersonaSetResourcePost": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `MigrationPersonaSetResource` type.)\n\nA persona set referenced by a migration pair."
      },
      "MigrationPersonaSetResourcePut": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `MigrationPersonaSetResource` type.)\n\nA persona set referenced by a migration pair."
      },
      "MigrationPost": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/FigV1ToFigV2MigrationPost"
          }
        ],
        "description": "A change from one account or resource configuration to another.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "fig_v1_to_fig_v2": "#/components/schemas/FigV1ToFigV2MigrationPost"
          }
        }
      },
      "MigrationPut": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/FigV1ToFigV2MigrationPut"
          }
        ],
        "description": "A change from one account or resource configuration to another.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "fig_v1_to_fig_v2": "#/components/schemas/FigV1ToFigV2MigrationPut"
          }
        }
      },
      "MigrationRecommenderResource": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "When the resource was archived. Omitted for active resources.",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "When the resource last built successfully.",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "The resource's name."
          },
          "roc_auc": {
            "type": "number",
            "description": "The overall ROC AUC from the recommender's latest completed analysis.",
            "maximum": 1,
            "minimum": 0
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus",
            "description": "The resource's current run state."
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the resource's run state last changed.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "Why the resource's latest run failed. Omitted unless `status` is `error`."
          }
        },
        "additionalProperties": false,
        "description": "A recommender referenced by a migration pair."
      },
      "MigrationRecommenderResourceMergePatch": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `MigrationRecommenderResource` type.)\n\nA recommender referenced by a migration pair."
      },
      "MigrationRecommenderResourcePost": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `MigrationRecommenderResource` type.)\n\nA recommender referenced by a migration pair."
      },
      "MigrationRecommenderResourcePut": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `MigrationRecommenderResource` type.)\n\nA recommender referenced by a migration pair."
      },
      "MigrationResource": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "When the resource was archived. Omitted for active resources.",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "When the resource last built successfully.",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "The resource's name."
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus",
            "description": "The resource's current run state."
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the resource's run state last changed.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "Why the resource's latest run failed. Omitted unless `status` is `error`."
          }
        },
        "additionalProperties": false,
        "description": "A resource referenced by a migration pair."
      },
      "MigrationResourceMergePatch": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `MigrationResource` type.)\n\nA resource referenced by a migration pair."
      },
      "MigrationResourcePost": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `MigrationResource` type.)\n\nA resource referenced by a migration pair."
      },
      "MigrationResourcePut": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `MigrationResource` type.)\n\nA resource referenced by a migration pair."
      },
      "MigrationTargetPushReadiness": {
        "type": "object",
        "required": [
          "checked_at",
          "destination_mapping_status",
          "destination_status",
          "field_mapping_status",
          "fig_v1_target_succeeded",
          "fig_v2_target_succeeded",
          "status"
        ],
        "properties": {
          "checked_at": {
            "type": "string",
            "description": "When these checks last ran.",
            "format": "date-time"
          },
          "destination_mapping_status": {
            "type": "string",
            "description": "Whether renamed destination options (table name, object key, path, and similar) have a complete mapping.",
            "enum": [
              "not_required",
              "complete",
              "incomplete"
            ]
          },
          "destination_status": {
            "type": "string",
            "description": "Whether the paired targets write to distinct destinations.",
            "enum": [
              "different",
              "same",
              "external_check_required",
              "external_check_complete"
            ]
          },
          "field_mapping_status": {
            "type": "string",
            "description": "Whether renamed output columns have a complete mapping.",
            "enum": [
              "not_required",
              "complete",
              "incomplete"
            ]
          },
          "fig_v1_target_succeeded": {
            "type": "boolean",
            "description": "Whether the FIG v1 target completed a successful run."
          },
          "fig_v2_target_succeeded": {
            "type": "boolean",
            "description": "Whether the FIG v2 target completed a successful run."
          },
          "status": {
            "type": "string",
            "description": "`ready` means the pair passed every check, or a Faraday team member approved it anyway. `needs_external_review` means an external destination still needs review. `blocked` means an automated check failed.",
            "enum": [
              "ready",
              "needs_external_review",
              "blocked"
            ]
          }
        },
        "additionalProperties": false,
        "description": "Checks that compare a paired target and its replacement. Omitted until the checks have run."
      },
      "MigrationTargetResource": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "When the resource was archived. Omitted for active resources.",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "When the resource last built successfully.",
            "format": "date-time"
          },
          "lookup_api_calls": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Lookup API call counts for this target for each of the last 7 days, keyed by YYYY-MM-DD. Present only for Lookup API targets, and only after the migration has checked usage."
          },
          "name": {
            "type": "string",
            "description": "The resource's name."
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus",
            "description": "The resource's current run state."
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the resource's run state last changed.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "Why the resource's latest run failed. Omitted unless `status` is `error`."
          }
        },
        "additionalProperties": false,
        "description": "A target referenced by a migration pair."
      },
      "MigrationTargetResourceMergePatch": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `MigrationTargetResource` type.)\n\nA target referenced by a migration pair."
      },
      "MigrationTargetResourcePost": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `MigrationTargetResource` type.)\n\nA target referenced by a migration pair."
      },
      "MigrationTargetResourcePut": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The resource's unique ID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `MigrationTargetResource` type.)\n\nA target referenced by a migration pair."
      },
      "ModelingAttribute": {
        "type": "string",
        "description": "Faraday attributes available for modeling on accounts with an identity graph feature store set.\n\nUse these in `modeling_attributes` on a persona set instead of `modeling_fields`.\n",
        "enum": [
          "fig/total_purchase_count_observed_quintile",
          "fig/total_amount_spent_on_purchases_quintile",
          "fig/age",
          "fig/collectibles_art_antiques_interest",
          "fig/general_book_reading_interest",
          "fig/charitable_donation_interest",
          "fig/nutrition_interest",
          "fig/household_education",
          "fig/automated_valuation_model",
          "fig/tax_assessed_property_value",
          "fig/gardening_interest",
          "fig/gender",
          "fig/fitness_interest",
          "fig/home_ownership_status",
          "fig/household_income",
          "fig/household_size",
          "fig/length_of_residence",
          "fig/interest_in_sports",
          "fig/property_living_area",
          "fig/marital_status",
          "fig/individual_marital_status",
          "fig/music_interest",
          "fig/net_worth",
          "fig/current_installment_loan_to_value",
          "fig/pet_interest",
          "fig/purchased_via_internet",
          "fig/shopping_styles",
          "fig/general_travel_interest",
          "fig/travel_interest",
          "fig/housing_density",
          "fig/credit_score_proxy",
          "fig/marketing_value_overall",
          "fig/home_year_built"
        ]
      },
      "ModelingField": {
        "type": "string",
        "description": "Faraday traits available for modeling\n\nfig/actvty_num_purchase_quintile: Total lifetime number of purchases made, bucketed into 5 quintile groupings\nfig/actvty_ttl_dollars_quintile: Total dollars that were spent on purchases within lifetime activity bucketed into 5 quintile groupings\nfig/age: The age of the individual\nfig/antiques: Interest in antiques\nfig/books_magazines: Interest in books and magazines\nfig/charitable_donations: Self-reported interest in charitable donations\nfig/dieting: Self-reported interest in dieting & weight loss\nfig/education: Median attainment completed by adults in household age 18 or older\nfig/favm: Faraday's Automated Valuation Model (AVM) is an algorithmic estimate that approximates the true market value of a home as closely as possible.\nfig/frequent_remodeler: Interest in home improvement, or recent renovation activity\nfig/gardener: Self-reported interest in gardening\nfig/gender: Gender of individual\nfig/health_conscious: Self-reported interest in health & exercise\nfig/homeowner_status: Designation of person-to-property relationship (renter vs. owner), with probability\nfig/household_income: Deprecated. Use fig/household_income_v2 instead.\nfig/household_income_v2: Median numeric value of narrow-band income; computed based on highly accurate multi-sourced models which take into account modeled self-reported incomes, property values and other proprietary sources; calibrated to and validated against truth sets prior to release every six weeks\nfig/household_size: The number of people living in the household, including adults and children\nfig/housing_density: Number of housing units per square mile\nfig/length_of_residence: Deprecated. Use fig/length_of_residence_v2 instead.\nfig/length_of_residence_v2: The number of years the resident has lived at this location\nfig/life_sports_sports_all: Self-reported interest in sports - sports participation\nfig/living_area: The finished square footage of the house\nfig/marital_status: Marital status\nfig/music: Self-reported interest in music\nfig/net_worth: Value equals household asset minus liabilities.\nfig/percent_equity: Loan-to-value percentage, subtracted from 100. Negative values indicate the loan is underwater.\nfig/pet_any: Owns a pet of any variety (Turtle? Capybara? The mind boggles . . .)\nfig/purch_chan_internet: Likely to make purchases via online channel\nfig/shopping_styles: Household's preferred mode of shopping\nfig/travel: Self-reported interest in travel\nfig/value_score_all: Estimated consumer marketing profitability. This modeled data is derived from credit behavior and leverages demographic and self-reported data.\nfig/year_built: The year that the house was originally built (see \"Effective year built\" for last extensive remodel)\n",
        "enum": [
          "fig/actvty_num_purchase_quintile",
          "fig/actvty_ttl_dollars_quintile",
          "fig/age",
          "fig/antiques",
          "fig/books_magazines",
          "fig/charitable_donations",
          "fig/dieting",
          "fig/education",
          "fig/favm",
          "fig/frequent_remodeler",
          "fig/gardener",
          "fig/gender",
          "fig/health_conscious",
          "fig/homeowner_status",
          "fig/household_income",
          "fig/household_income_v2",
          "fig/household_size",
          "fig/length_of_residence",
          "fig/length_of_residence_v2",
          "fig/life_sports_sports_all",
          "fig/living_area",
          "fig/marital_status",
          "fig/music",
          "fig/net_worth",
          "fig/percent_equity",
          "fig/pet_any",
          "fig/purch_chan_internet",
          "fig/shopping_styles",
          "fig/travel",
          "fig/housing_density",
          "fig/value_score_all",
          "fig/year_built"
        ]
      },
      "Outcome": {
        "type": "object",
        "required": [
          "attainment_cohort_id",
          "created_at",
          "id",
          "name",
          "resource_type",
          "status",
          "updated_at"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "attainment_cohort_id": {
            "type": "string",
            "description": "A cohort of people who have attained the desired outcome (for example, if predicting transition from prospect to customer, the attainment cohort should be existing customers).",
            "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
            "format": "uuid"
          },
          "attainment_cohort_name": {
            "type": "string",
            "description": "Human-readable label of the attainment cohort. See /cohorts/{attainment_cohort_id} to edit the attainment cohort or view additional details.",
            "example": "customers"
          },
          "attrition_cohort_id": {
            "type": "string",
            "description": "A cohort of counterexamples - people who have clearly failed to attain the outcome, as opposed to simply being indeterminate. This cohort is optional.",
            "example": "3a6878ab-525f-418b-bea5-e9b8fd2dde2a",
            "format": "uuid"
          },
          "attrition_cohort_name": {
            "type": "string",
            "description": "Human-readable label of the attrition cohort. See /cohorts/{attrition_cohort_id} to edit the attrition cohort or view additional details.",
            "example": "unqualified leads"
          },
          "bias_mitigation": {
            "type": "object",
            "properties": {
              "age": {
                "$ref": "#/components/schemas/OutcomeBiasMitigationStrategy"
              },
              "gender": {
                "$ref": "#/components/schemas/OutcomeBiasMitigationStrategy"
              }
            },
            "description": "The strategy to be applied to gender and/or age to mitigate or reverse the bias found in the attainment population.\n\nThough the spec appears you can combine different mitigation strategies per dimension of concern (age=equity, gender=equality), API runtime validation will prevent it for now. Later we may support this so the spec is designed for future proofing. Note: age=none, gender=equity is allowed.\n"
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "eligible_cohort_id": {
            "type": "string",
            "description": "A cohort of people who could attain or attrite the desired outcome (for example, if predicting transition from prospect to customer, the eligible cohort should be prospects). If no eligible cohort is specified, the model will use the US population as the eligible cohort.",
            "example": "d7a8b7df-4bb3-4f55-af9f-7f2138d3796d",
            "format": "uuid"
          },
          "eligible_cohort_name": {
            "type": "string",
            "description": "Human-readable label of the eligibility cohort. See /cohorts/{eligible_cohort_id} to edit the eligible cohort or view additional details.",
            "example": "leads"
          },
          "feature_blocklist": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^(fig/)?[a-z][_a-z0-9]*$"
            },
            "description": "The name of a field or category of fields which should not be considered for this Outcome. Should be used\nprimarily for the purposes of Responsible AI.\n",
            "example": [
              "fig/gender"
            ]
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "lift_value": {
            "type": "number",
            "description": "Average of lift over random at average conversion rate (r), (0.75 * r), (0.5 * r), (0.25 * r).",
            "example": 1.425
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this outcome. Each outcome must have a unique name.",
            "example": "Lead Conversion",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "prediction_mode": {
            "type": "string",
            "description": "Defaults to auto, which enables dynamic modeling if possible. The other option is static, which disables dynamic modeling. Dynamic modeling considers chronology and uses advanced feature engineering whenever possible. You may want to disable dynamic prediction if chronology could confuse your use case, or if advised by Faraday staff.",
            "default": "auto",
            "enum": [
              "auto",
              "static"
            ]
          },
          "predictors": {
            "$ref": "#/components/schemas/OutcomePredictors"
          },
          "preview": {
            "type": "boolean",
            "description": "An outcome in preview mode will not build until preview is turned off.\n",
            "example": true
          },
          "report_url": {
            "type": "string",
            "description": "URL of an HTML report containing information such as the objective of the model, performance, and important features."
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource.",
            "example": "outcomes"
          },
          "roc_auc": {
            "type": "number",
            "description": "The area under the receiver operating characteristic curve. Typically, the higher the ROC AUC, the better the model.",
            "example": 0.75,
            "maximum": 1,
            "minimum": 0
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A business objective describing how likely a group of people are to transition from one cohort to another (for example, from a prospect to a customer)."
      },
      "OutcomeAnalysis": {
        "type": "object",
        "required": [
          "overall_performance",
          "overall_features"
        ],
        "properties": {
          "bias": {
            "$ref": "#/components/schemas/OutcomeAnalysisBias"
          },
          "overall_features": {
            "type": "object",
            "required": [
              "recognized_individuals"
            ],
            "properties": {
              "all_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OutcomeAnalysisFeature"
                }
              },
              "recognized_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OutcomeAnalysisFeature"
                }
              },
              "unrecognized_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OutcomeAnalysisFeature"
                }
              }
            }
          },
          "overall_performance": {
            "type": "object",
            "required": [
              "recognized_individuals"
            ],
            "properties": {
              "all_individuals": {
                "$ref": "#/components/schemas/OutcomePerformanceModel"
              },
              "recognized_individuals": {
                "$ref": "#/components/schemas/OutcomePerformanceModel"
              },
              "unrecognized_individuals": {
                "$ref": "#/components/schemas/OutcomePerformanceModel"
              }
            }
          },
          "strategies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OutcomeAnalysisStrategy"
            },
            "description": "When an Outcome is being built, many \"strategies\" are employed to produce candidate models. After cross-validation, the best models resulting from, therefore, the best strategies are promoted to production for later use in inference.\nYou can inspect which strategies are used by referencing the `strategy_id` field in the `OutcomePerformanceModel` in tenure performances.\n"
          },
          "tenure_features": {
            "type": "object",
            "required": [
              "recognized_individuals"
            ],
            "properties": {
              "all_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OutcomeAnalysisTenureFeatures"
                }
              },
              "recognized_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OutcomeAnalysisTenureFeatures"
                }
              },
              "unrecognized_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OutcomeAnalysisTenureFeatures"
                }
              }
            }
          },
          "tenure_performances": {
            "type": "object",
            "required": [
              "recognized_individuals"
            ],
            "properties": {
              "all_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OutcomePerformanceModel"
                }
              },
              "recognized_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OutcomePerformanceModel"
                }
              },
              "unrecognized_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OutcomePerformanceModel"
                }
              }
            },
            "description": "The performance metrics by data source, broken down further by tenure ranges, for an outcome."
          }
        },
        "description": "Analysis metrics for an outcome. Includes model performance, bias, feature importances, etc.\n\nMost of the outcome analytics are grouped by data source (e.g. recognized_individuals) they were derived from.\n\n- Recognized individuals: The set of individuals that have been matched with Faraday's Identity Graph.\n\nIn the future, we may expand the list of data sources.\n"
      },
      "OutcomeAnalysisBias": {
        "type": "object",
        "required": [
          "summary",
          "data",
          "power",
          "predictions",
          "fairness"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasData"
          },
          "fairness": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasSubpopulation"
          },
          "power": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasSubpopulation"
          },
          "predictions": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasSubpopulation"
          },
          "summary": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasSummary"
          }
        },
        "description": "Information about the various types of bias for an outcome.\nThe measurements for each type of bias are taken with respect to\n**subpopulations** of **sensitive dimensions** whose priority\ncan be increased or decreased by a type of bias.\n\nThe sensitive dimensions and values are:\n- Age (measured in years)\n  - Teen `[0, 21)`\n  - Young Adult `[21, 30]`\n  - Adult `[31, 40]`\n  - Middle Age `[41, 60]`\n  - Senior `[61, infty)`  \n  - Unknown\n- Gender\n  - Female\n  - Male\n  - Unknown\n\nSubpopulations are defined by a set of sensitive dimensions and values\nthat represent the intersection of those dimensions and values\n(e.g. Adult Females, Seniors, Teen Males, Females, etc.).\n\nThere are 4 types of bias measured in this analysis:\n- (data) Distribution of underlying historical data for a sensitive dimension across labels.\n- (power) Variation in predictive performance across subpopulations.\n- (predictions) Proportions of positive predictions across subpopulations.\n- (fairness) Overall fairness metrics for each subpopulation.\n\nAdditionally, there is a summary of each type of bias distilled down to a boolean value.\n"
      },
      "OutcomeAnalysisBiasData": {
        "type": "object",
        "required": [
          "age",
          "gender"
        ],
        "properties": {
          "age": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasDataAgeDistribution"
          },
          "gender": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasDataGenderProportion"
          }
        },
        "description": "The underlying data used to build an outcome can introduce bias by unevenly representing subpopulations.\nThis bias is measured by comparing distributions of sensitive dimensions across labels.\nCategorical distributions (e.g. for gender) are compared using proportions.\nNumeric distributions (e.g. for age) are compared using the Wasserstein distance on the space of empirical distributions.\n"
      },
      "OutcomeAnalysisBiasDataAgeDistribution": {
        "type": "object",
        "required": [
          "level",
          "positives",
          "candidates"
        ],
        "properties": {
          "candidates": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasDataAgeDistributionDatum"
          },
          "level": {
            "type": "string",
            "description": "Let `w(l)` denote the Wasserstein distance between the age distribution of individuals with label `l`\nand the age distribution of all individuals.\nSpecifically, the implement\n\nLet `w` denote the maximum of `w(l)` over all values of `l` in (positives, candidates, negatives).\n\nLet `w_max` denote the maximum possible Wasserstein distance between two age distributions\napproximated by the range of ages in the eligible population.\n\nLet `w' = w / w_max` be the normalized Wasserstein distance.\n\nThe `level` is defined to be `low_bias` if `w' < 0.1`, `moderate_bias` if `w' < 0.2`, and `strong_bias` otherwise.\n\nNote: The Wasserstein distance is computed using the `wasserstein_distance` function from the `scipy.stats` package.\n- [https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.wasserstein_distance.html](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.wasserstein_distance.html)\n",
            "enum": [
              "low_bias",
              "moderate_bias",
              "strong_bias"
            ]
          },
          "negatives": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasDataAgeDistributionDatum"
          },
          "positives": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasDataAgeDistributionDatum"
          }
        },
        "description": "The age distributions among positive examples, candidates, and negative examples\nalong with a `level` that describes the bias.\n"
      },
      "OutcomeAnalysisBiasDataAgeDistributionDatum": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "x",
            "y"
          ],
          "properties": {
            "x": {
              "type": "number",
              "description": "Age in years."
            },
            "y": {
              "type": "number",
              "description": "The approximate density of individuals with a given age normalized to `[0,1]`."
            }
          }
        },
        "description": "The age distribution for a given label (positives, candidates, negatives)."
      },
      "OutcomeAnalysisBiasDataGenderProportion": {
        "type": "object",
        "required": [
          "level",
          "positives",
          "candidates"
        ],
        "properties": {
          "candidates": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasDataGenderProportionDatum"
          },
          "level": {
            "type": "string",
            "description": "Let `d(g,l)` denote the absolute difference between the two proportions:\n- the proportion of individuals with gender `g` among individuals with label `l`\n- the proportion of individuals with gender `g` among all individuals\n\nLet `d(g)` denote the maximum of `d(g,l)` over all values of `l` (positives, candidates, negatives).\n\nThe `level` is defined to be `low_bias` if `d(g) < 0.1`, `moderate_bias` if `d(g) < 0.2`, and `strong_bias` otherwise.\n",
            "enum": [
              "low_bias",
              "moderate_bias",
              "strong_bias"
            ]
          },
          "negatives": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasDataGenderProportionDatum"
          },
          "positives": {
            "$ref": "#/components/schemas/OutcomeAnalysisBiasDataGenderProportionDatum"
          }
        },
        "description": "The proportions of gender values (female, male, unknown) among positive examples, candidates, and negative examples\nalong with a `level` that describes the bias.\n"
      },
      "OutcomeAnalysisBiasDataGenderProportionDatum": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "x",
            "y"
          ],
          "properties": {
            "x": {
              "type": "string",
              "description": "The gender value (female, male, unknown)."
            },
            "y": {
              "type": "number",
              "description": "The proportion of individuals with the given gender value among the individuals with the given label."
            }
          }
        },
        "description": "The proportions of gender values for a given label (positives, candidates, negatives)."
      },
      "OutcomeAnalysisBiasSubpopulation": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "dimensions",
            "values",
            "metrics"
          ],
          "properties": {
            "dimensions": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "A nonempty ordered set of sensitive dimensions."
            },
            "metrics": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/OutcomeAnalysisBiasSubpopulationMetric"
              },
              "description": "A metric that measures bias for a subpopulation.\nThere are 3 groups of metrics detailed here.\nA decision threshold corresponding to a top 5% target population is chosen for all metrics.\n\nThe metrics measuring predictive power are:\n- `f1`: The F1 score for the given subpopulation.\n  - `value`: `[0,1]`\n  - `level`: determined by the `level` of `relative_f1`\n- `accuracy`: The accuracy for the given subpopulation.\n  - `value`: `[0,1]`\n  - `level`: determined by the `level` of `relative_f1`\n- `relative_accuracy`: Let `accuracy` denote the accuracy for the given subpopulation,\n  and `baseline_accuracy` denote the accuracy for the eligible population.\n  Then the relative accuracy is defined as `(accuracy - baseline_accuracy) / baseline_accuracy`.\n  - `value`: `[-1,1]`\n  - `level`: determined by the `level` of `relative_f1`\n- `relative_f1`: Let `f1` denote the F1 score for the given subpopulation\n  and `baseline_f1` denote the F1 score for the eligible population.\n  Then the relative F1 score is defined as `(f1 - baseline_f1) / baseline_f1`.\n  The relative F1 score is defined as `(f1 - overall_f1) / overall_f1`.\n  - `value`: `[-1,1]`\n  - `level`:\n    - `seriously_impaired`: `value < -0.2`\n    - `moderately_impaired`: `-0.2 <= value < -0.1`\n    - `relatively_unaffected`: `-0.1 <= value < 0.1`\n    - `moderately_enhanced`: `0.1 <= value < 0.2`\n    - `seriously_enhanced`: `0.2 <= value`\n\nThe metrics measuring imbalance in positive predictions are:\n- `odds_ratio`: Let `T` denote a top 5% target population.\n  Then the odds ratio for a given subpopulation is defined as\n  `(proportion of subpopulation members in T) / (the proportion of subpopulation members among the eligible population)`.\n  - `value`: `[0, infty)`\n  - `level`:\n    - `low_bias`: `0.9 <= value <= 1.1`\n    - `moderate_bias`: `0.8 <= value < 0.9` or `1.1 < value <= 1.2`\n    - `strong_bias`: `value < 0.8` or `value > 1.2`\n- `relative_odds_ratio`: Let `odds_ratio` denote the odds ratio for the given subpopulation.\n  Then the relative odds ratio is defined as `(odds_ratio - 1) / 1`, i.e. zero-centered.\n  - `value`: `[-1,infty)`\n  - `level`:\n    - `low_bias`: `-0.1 <= value <= 0.1`\n    - `moderate_bias`: `-0.2 <= value < -0.1` or `0.1 < value <= 0.2`\n    - `strong_bias`: `value < -0.2` or `value > 0.2`\n\nThe overall fairness metrics are:\n- `equal_opportunity_difference`: The difference between the true positive rate for a subpopulation\n  and the true positive rate for the eligible population with respect to a top 5% target population.\n  - `value`: `[-1,1]`\n  - `level`: Let `delta = 0.2/(target_rate+0.5)` where `target_rate` is taken to be `0.05`.\n    - `seriously_underprivileged`: `value < -2*delta`\n    - `moderately_underprivileged`: `-2*delta <= value < -delta`\n    - `equitably_treated`: `-delta <= value < delta`\n    - `moderately_privileged`: `delta <= value < 2*delta`\n    - `seriously_privileged`: `2*delta <= value`\n- `statistical_parity_difference`: The difference between the proportion of positive predictions for a subpopulation\n  and the proportion of positive predictions for the eligible population with respect to a top 5% target population.\n  - `value`: `[-1,1]`\n  - `level`: Let `delta = 0.2/(target_rate+0.5)` where `target_rate` is taken to be `0.05`.\n    - `seriously_underprivileged`: `value < -2*delta`\n    - `moderately_underprivileged`: `-2*delta <= value < -delta`\n    - `equitably_treated`: `-delta <= value < delta`\n    - `moderately_privileged`: `delta <= value < 2*delta`\n    - `seriously_privileged`: `2*delta <= value`\n- `average_odds_difference`: The average of the equal opportunity difference and the statistical parity difference.\n  - `value`: `[-1,1]`\n  - `level`: Let `delta = 0.2/(target_rate+0.5)` where `target_rate` is taken to be `0.05`.\n    - `seriously_underprivileged`: `value < -2*delta`\n    - `moderately_underprivileged`: `-2*delta <= value < -delta`\n    - `equitably_treated`: `-delta <= value < delta`\n    - `moderately_privileged`: `delta <= value < 2*delta`\n    - `seriously_privileged`: `2*delta <= value`\n- `disparate_impact`: The ratio of the proportion of positive predictions for a subpopulation\n  - `value`: `[0, infty)`\n  - `level`: Let `gamma = (1.25-0.8)/2` and `m = (1.25+0.8)/2`.\n    - `seriously_underprivileged`: `value < m-2*gamma`\n    - `moderately_underprivileged`: `m-2*gamma <= value < m-gamma`\n    - `equitably_treated`: `m-gamma <= value < m+gamma`\n    - `moderately_privileged`: `m+gamma <= value < m+2*gamma`\n    - `seriously_privileged`: `m+2*gamma <= value`\n- `scaled_disparate_impact`: A scaled version of `disparate_impact` post-composing with the map: `x -> x-1` if `x <= 1` and `x -> x/(x+1) -0.5` if `x > 1`.\n  - `value`: [-1,1]\n  - `level`: Let `delta = 0.2/(target_rate+0.5)` where `target_rate` is taken to be `0.05`.\n    - `seriously_underprivileged`: `value < -2*delta`\n    - `moderately_underprivileged`: `-2*delta <= value < -delta`\n    - `equitably_treated`: `-delta <= value < delta`\n    - `moderately_privileged`: `delta <= value < 2*delta`\n    - `seriously_privileged`: `2*delta <= value`\n- `total_fairness`: The sum of equal opportunity difference, statistical parity difference, average odds difference, and scaled disparate impact.\n  - `value`: `[-4,4]`\n  - `level`: Let `delta = 4*0.2/(target_rate+0.5)` where `target_rate` is taken to be `0.05`.\n    - `seriously_underprivileged`: `value < -2*delta`\n    - `moderately_underprivileged`: `-2*delta <= value < -delta`\n    - `equitably_treated`: `-delta <= value < delta`\n    - `moderately_privileged`: `delta <= value < 2*delta`\n- `relative_total_fairness`: The average of equal opportunity difference, statistical parity difference, average odds difference, and scaled disparate impact.\n  - `value`: [-1,1]\n  - `level`: The level is determined by the `level` of `total_fairness`.\n\nNote: Interpreting bias/fairness of a subpopulation in terms of a set of metrics is\nand active area of research. The above definitions are based on the following paper:\n- Bellamy, Rachel KE, et al. \"AI Fairness 360: An extensible toolkit for detecting and mitigating algorithmic bias.\" IBM Journal of Research and Development 63.4/5 (2019): 4-1.\n"
            },
            "values": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "A nonempty ordered set of values for each corresponding sensitive dimension."
            }
          }
        },
        "description": "A subpopulation is a subset of the eligible population defined by a set of\nsensitive dimensions (e.g. age and gender) and values (e.g. adult and female).\n\nEach subpopulation has a set of metrics that measure different types of bias associated with it.\n"
      },
      "OutcomeAnalysisBiasSubpopulationMetric": {
        "type": "object",
        "required": [
          "name",
          "value",
          "level"
        ],
        "properties": {
          "level": {
            "type": "string",
            "description": "An interpretation of the metric value for the subpopulation."
          },
          "name": {
            "type": "string",
            "description": "The name of the metric."
          },
          "value": {
            "type": "number",
            "description": "The value of the metric."
          }
        }
      },
      "OutcomeAnalysisBiasSummary": {
        "type": "object",
        "required": [
          "data_unbiased",
          "power_unbiased",
          "predictions_unbiased",
          "fairness_fair"
        ],
        "properties": {
          "data_unbiased": {
            "type": "boolean",
            "description": "This boolean value indicates whether the underlying data used to build an outcome is unbiased.\n\nEach sensitive dimension has a similarity metric (taking values in `[0,1]`)\nto measure the discrepancy between a subpopulation and the overall population.\n\nFor categorical dimensions, the similarity metric is the maximum absolute difference\nbetween subpopulation proportions and overall proportions across all values\n(e.g. the proportion of positive examples among the female subpopulation\nis compared to the proportion of positive examples among the overall population).\n\nFor numeric dimensions, the similarity metric is the Wasserstein distance in one variable\n(e.g. the Wasserstein distance between the age distribution of positive examples\nand the overall age distribution) normalized to `[0,1]` by approximating the maximum Wasserstein distance.\n\nFrom each sensitive dimension we obtain 2 or 3 similarity metrics:\n- The similarity metric comparing the positive examples to the overall population.\n- The similarity metric comparing the candidates to the overall population.\n- (Optionally) The similarity metric comparing the negative examples to the overall population.\n\nThe sensitive dimension is defined to have `low_bias` if the maximum similarity metric is less than `0.1`.\n\nThe boolean `data_unbiased` is true if all sensitive dimensions are `low_bias` according to the above definition.\n"
          },
          "fairness_fair": {
            "type": "boolean",
            "description": "This boolean value indicates that all subpopulations are neither privileged nor disadvantaged using a sum of 4 metrics defined in\n- Bellamy, Rachel KE, et al. \"AI Fairness 360: An extensible toolkit for detecting and mitigating algorithmic bias.\" IBM Journal of Research and Development 63.4/5 (2019): 4-1.\n\nThe 4 metrics are:\n- Equal opportunity difference: The difference between the true positive rate for a subpopulation and the true positive rate for the overall population.\n- Statistical parity difference: The difference between the proportion of positive predictions for a subpopulation and the proportion of positive predictions for the overall population.\n- Average odds difference: The average of the equal opportunity difference and the statistical parity difference.\n- Disparate impact: The ratio of the proportion of positive predictions for a subpopulation and the proportion of positive predictions for the overall population.\n\nTo compute these metrics, a decision threshold corresponding to a top 5% target population is chosen,\n\nThe `total_fairness` of a subpopulation is defined as the sum of these 4 fairness metrics.\n\nThe ideal value for disparate impact is `1.0`, and the ideal value for the other 3 metrics is `0.0`.\nThus, the ideal value for the `total_fairness` is `1.0`,\nand a subpopulation is defined to be `equitably_treated` if the `total_fairness` is between `0.9` and `1.1`.\n\nThe boolean `fairness_fair` is true if all subpopulations are `equitably_treated` according to the above definition.\n"
          },
          "power_unbiased": {
            "type": "boolean",
            "description": "This boolean value indicates whether the predictive performance of an outcome is unbiased across subpopulations.\n\nTo measure predictive performance, the F1 score, the harmonic mean of precision and recall,\nis computed at a top 5% decision threshold.\n\nThe F1 score of the overall population is compared to the F1 score of each subpopulation by computing\nthe relative difference between the F1 scores: `(subpopulation_f1 - overall_f1) / overall_f1`.\n\nThe subpopulation is defined to be `relatively_unaffected` (neither enhanced or impaired)\nif the absolute relative difference is less than `0.1`.\n\nThe boolean `power_unbiased` is true if all subpopulations are `relatively_unaffected` according to the above definition.\n"
          },
          "predictions_unbiased": {
            "type": "boolean",
            "description": "This boolean value indicates that all subpopulations are equally represented among positive predictions.\n\nTo measure this, a decision threshold corresponding to a top 5% target population is chosen,\nand the odds ratio is computed for each subpopulation as:\n`(proportion of subpopulation members in the target population) / (the proportion of subpopulation members among the eligible population)`.\n\nA subpopulation is defined to have `low_bias` if the odds ratio is between `0.9` and `1.1`.\n\nThe boolean `predictions_unbiased` is true if all subpopulations are `low_bias` according to the above definition.\n"
          }
        },
        "description": "A summary of each type of bias distilled down to a boolean value."
      },
      "OutcomeAnalysisFeature": {
        "type": "object",
        "required": [
          "name",
          "literate",
          "importance",
          "directionality"
        ],
        "properties": {
          "directionality": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisFeatureDirectionality"
            }
          },
          "importance": {
            "type": "number",
            "description": "The importance of the feature"
          },
          "literate": {
            "type": "string",
            "description": "The human-readable name of the feature"
          },
          "name": {
            "type": "string",
            "description": "The identifier for the feature"
          }
        },
        "description": "Importance and directionality of a given feature in an outcome."
      },
      "OutcomeAnalysisStrategy": {
        "type": "object",
        "required": [
          "id",
          "name",
          "description",
          "providers"
        ],
        "properties": {
          "description": {
            "type": "string",
            "description": "A description of the prediction strategy."
          },
          "experimental": {
            "type": "boolean",
            "description": "Whether the prediction strategy is experimental.",
            "example": false
          },
          "id": {
            "type": "string",
            "description": "A unique identifier for the prediction strategy. Referenced by `strategy_id` in the `OutcomePerformanceModel` in tenure performances.",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The name of the prediction strategy."
          },
          "providers": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "self",
              "pattern": "^[a-zA-Z0-9-]*$"
            },
            "description": "The data providers used to make predictions.\n\n- \"self\" means uses first party data (your account).\n- \"fig\" means uses Faraday's Identity Graph.\n"
          },
          "slug": {
            "type": "string",
            "description": "A unique identifier for the prediction strategy."
          }
        },
        "description": "The strategy used to make predictions."
      },
      "OutcomeAnalysisTenureFeatures": {
        "type": "object",
        "required": [
          "features"
        ],
        "properties": {
          "features": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OutcomeAnalysisFeature"
            }
          },
          "tenure_end": {
            "type": "integer",
            "description": "When the tenure range ends measured in days. The value can be null if no tenure range applies. The value can also be null if the range is unbounded.",
            "example": 60
          },
          "tenure_start": {
            "type": "integer",
            "description": "When the tenure range starts measured in days. The value can be null if no tenure range applies.",
            "example": 30
          }
        }
      },
      "OutcomeBiasMitigationStrategy": {
        "type": "string",
        "description": "The strategy to use for bias mitigation. \n\nCurrently supported:\n  - `none` - ignore bias\n  - `equality` - neutralize bias\n  - `equity` - invert bias\n\nBias mitigation will attempt to match the baseline population rate for the dimension of concern (DOC) (`equality`) or overcorrect for past inequality in the direction of the underprivileged DOC (`equity`).\n",
        "enum": [
          "none",
          "equality",
          "equity"
        ]
      },
      "OutcomeMergePatch": {
        "type": "object",
        "properties": {
          "attainment_cohort_id": {
            "type": "string",
            "description": "A cohort of people who have attained the desired outcome (for example, if predicting transition from prospect to customer, the attainment cohort should be existing customers).",
            "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
            "format": "uuid"
          },
          "attrition_cohort_id": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "3a6878ab-525f-418b-bea5-e9b8fd2dde2a",
                "format": "uuid"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A cohort of counterexamples - people who have clearly failed to attain the outcome, as opposed to simply being indeterminate. This cohort is optional."
          },
          "bias_mitigation": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "age": {
                    "$ref": "#/components/schemas/OutcomeBiasMitigationStrategy"
                  },
                  "gender": {
                    "$ref": "#/components/schemas/OutcomeBiasMitigationStrategy"
                  }
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The strategy to be applied to gender and/or age to mitigate or reverse the bias found in the attainment population.\n\nThough the spec appears you can combine different mitigation strategies per dimension of concern (age=equity, gender=equality), API runtime validation will prevent it for now. Later we may support this so the spec is designed for future proofing. Note: age=none, gender=equity is allowed.\n"
          },
          "eligible_cohort_id": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "d7a8b7df-4bb3-4f55-af9f-7f2138d3796d",
                "format": "uuid"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A cohort of people who could attain or attrite the desired outcome (for example, if predicting transition from prospect to customer, the eligible cohort should be prospects). If no eligible cohort is specified, the model will use the US population as the eligible cohort."
          },
          "feature_blocklist": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^(fig/)?[a-z][_a-z0-9]*$"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": [
                  "fig/gender"
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The name of a field or category of fields which should not be considered for this Outcome. Should be used\nprimarily for the purposes of Responsible AI.\n"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this outcome. Each outcome must have a unique name.",
            "example": "Lead Conversion",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "prediction_mode": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "default": "auto",
                "enum": [
                  "auto",
                  "static"
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Defaults to auto, which enables dynamic modeling if possible. The other option is static, which disables dynamic modeling. Dynamic modeling considers chronology and uses advanced feature engineering whenever possible. You may want to disable dynamic prediction if chronology could confuse your use case, or if advised by Faraday staff."
          },
          "predictors": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/OutcomePredictorsMergePatch"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "preview": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "An outcome in preview mode will not build until preview is turned off.\n"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Outcome` type.)\n\nA business objective describing how likely a group of people are to transition from one cohort to another (for example, from a prospect to a customer)."
      },
      "OutcomePerformanceLiftCurvePoint": {
        "type": "object",
        "required": [
          "x",
          "y",
          "y_min",
          "y_max"
        ],
        "properties": {
          "x": {
            "type": "number",
            "description": "The quantile-based target percentile. For example, a value of `.1` defines a target percentile specifying the top 10 percent of scores.",
            "example": 0.1
          },
          "y": {
            "type": "number",
            "description": "The estimated lift over random at the given target percentile.",
            "example": 0.75
          },
          "y_max": {
            "type": "number",
            "description": "The upper error bound for `y`.",
            "example": 0.76
          },
          "y_min": {
            "type": "number",
            "description": "The lower error bound for `y`.",
            "example": 0.74
          }
        },
        "description": "A list of lift data for the model. Each lift point consists of a target percentile`x`, an estimated lift over random `y`, and error bounds on the lift `y_min` and `y_max`."
      },
      "OutcomePerformanceModel": {
        "type": "object",
        "required": [
          "lift_curve",
          "lift_table",
          "metrics_table",
          "roc_auc",
          "roc_curve"
        ],
        "properties": {
          "lift_curve": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OutcomePerformanceLiftCurvePoint"
            }
          },
          "lift_table": {
            "$ref": "#/components/schemas/TabularData"
          },
          "lift_value": {
            "type": "number",
            "description": "Average of lift over random at average conversion rate (r), (0.75 * r), (0.5 * r), (0.25 * r).",
            "example": 1.425
          },
          "metrics_table": {
            "$ref": "#/components/schemas/TabularData"
          },
          "roc_auc": {
            "type": "number",
            "description": "The area under the receiver operating characteristic curve.",
            "example": 0.75,
            "maximum": 1,
            "minimum": 0
          },
          "roc_curve": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisRocCurvePoint"
            }
          },
          "strategy_id": {
            "type": "string",
            "description": "The ID of a strategy from the strategies array. If the group is overall, this value is null. To determine which strategies apply in such cases, refer to the strategy IDs defined at the tenure level.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          },
          "tenure_end": {
            "type": "integer",
            "description": "When the tenure range ends measured in days. The value can be null if no tenure range applies to this model. The value can also be null if the range is unbounded.",
            "example": 60
          },
          "tenure_start": {
            "type": "integer",
            "description": "When the tenure range starts measured in days. The value can be null if no tenure range applies to this model.",
            "example": 30
          }
        },
        "description": "Performance metrics for a propensity model, optionally over a tenure range."
      },
      "OutcomePost": {
        "type": "object",
        "required": [
          "attainment_cohort_id",
          "name"
        ],
        "properties": {
          "attainment_cohort_id": {
            "type": "string",
            "description": "A cohort of people who have attained the desired outcome (for example, if predicting transition from prospect to customer, the attainment cohort should be existing customers).",
            "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
            "format": "uuid"
          },
          "attrition_cohort_id": {
            "type": "string",
            "description": "A cohort of counterexamples - people who have clearly failed to attain the outcome, as opposed to simply being indeterminate. This cohort is optional.",
            "example": "3a6878ab-525f-418b-bea5-e9b8fd2dde2a",
            "format": "uuid"
          },
          "bias_mitigation": {
            "type": "object",
            "properties": {
              "age": {
                "$ref": "#/components/schemas/OutcomeBiasMitigationStrategy"
              },
              "gender": {
                "$ref": "#/components/schemas/OutcomeBiasMitigationStrategy"
              }
            },
            "description": "The strategy to be applied to gender and/or age to mitigate or reverse the bias found in the attainment population.\n\nThough the spec appears you can combine different mitigation strategies per dimension of concern (age=equity, gender=equality), API runtime validation will prevent it for now. Later we may support this so the spec is designed for future proofing. Note: age=none, gender=equity is allowed.\n"
          },
          "eligible_cohort_id": {
            "type": "string",
            "description": "A cohort of people who could attain or attrite the desired outcome (for example, if predicting transition from prospect to customer, the eligible cohort should be prospects). If no eligible cohort is specified, the model will use the US population as the eligible cohort.",
            "example": "d7a8b7df-4bb3-4f55-af9f-7f2138d3796d",
            "format": "uuid"
          },
          "feature_blocklist": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^(fig/)?[a-z][_a-z0-9]*$"
            },
            "description": "The name of a field or category of fields which should not be considered for this Outcome. Should be used\nprimarily for the purposes of Responsible AI.\n",
            "example": [
              "fig/gender"
            ]
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this outcome. Each outcome must have a unique name.",
            "example": "Lead Conversion",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "prediction_mode": {
            "type": "string",
            "description": "Defaults to auto, which enables dynamic modeling if possible. The other option is static, which disables dynamic modeling. Dynamic modeling considers chronology and uses advanced feature engineering whenever possible. You may want to disable dynamic prediction if chronology could confuse your use case, or if advised by Faraday staff.",
            "default": "auto",
            "enum": [
              "auto",
              "static"
            ]
          },
          "predictors": {
            "$ref": "#/components/schemas/OutcomePredictorsPost"
          },
          "preview": {
            "type": "boolean",
            "description": "An outcome in preview mode will not build until preview is turned off.\n",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Outcome` type.)\n\nA business objective describing how likely a group of people are to transition from one cohort to another (for example, from a prospect to a customer)."
      },
      "OutcomePredictors": {
        "type": "object",
        "properties": {
          "blocked": {
            "$ref": "#/components/schemas/OutcomePredictorsBlocked"
          },
          "max_observation_date": {
            "type": "string",
            "description": "The maximum date for FIG attribute observations used during modeling. When set, only attribute data observed on or before this date will be used. If not set, the freshest available data is used.\n",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "description": "Provides control over the features used during modeling to predict an outcome.\n"
      },
      "OutcomePredictorsBlocked": {
        "type": "object",
        "properties": {
          "providers": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "self",
              "pattern": "^[a-zA-Z0-9-]*$"
            },
            "description": "The name of a provider whose features should be blocked from consideration for this Outcome. \n\nOptions: \n  - self: refers to the Account the Outcome belongs to.\n"
          }
        },
        "additionalProperties": false
      },
      "OutcomePredictorsBlockedMergePatch": {
        "type": "object",
        "properties": {
          "providers": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "self",
                  "pattern": "^[a-zA-Z0-9-]*$"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The name of a provider whose features should be blocked from consideration for this Outcome. \n\nOptions: \n  - self: refers to the Account the Outcome belongs to.\n"
          }
        },
        "additionalProperties": false
      },
      "OutcomePredictorsBlockedPost": {
        "type": "object",
        "properties": {
          "providers": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "self",
              "pattern": "^[a-zA-Z0-9-]*$"
            },
            "description": "The name of a provider whose features should be blocked from consideration for this Outcome. \n\nOptions: \n  - self: refers to the Account the Outcome belongs to.\n"
          }
        },
        "additionalProperties": false
      },
      "OutcomePredictorsBlockedPut": {
        "type": "object",
        "properties": {
          "providers": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "self",
              "pattern": "^[a-zA-Z0-9-]*$"
            },
            "description": "The name of a provider whose features should be blocked from consideration for this Outcome. \n\nOptions: \n  - self: refers to the Account the Outcome belongs to.\n"
          }
        },
        "additionalProperties": false
      },
      "OutcomePredictorsMergePatch": {
        "type": "object",
        "properties": {
          "blocked": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/OutcomePredictorsBlockedMergePatch"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "max_observation_date": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "date"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The maximum date for FIG attribute observations used during modeling. When set, only attribute data observed on or before this date will be used. If not set, the freshest available data is used.\n"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `OutcomePredictors` type.)\n\nProvides control over the features used during modeling to predict an outcome.\n"
      },
      "OutcomePredictorsPost": {
        "type": "object",
        "properties": {
          "blocked": {
            "$ref": "#/components/schemas/OutcomePredictorsBlockedPost"
          },
          "max_observation_date": {
            "type": "string",
            "description": "The maximum date for FIG attribute observations used during modeling. When set, only attribute data observed on or before this date will be used. If not set, the freshest available data is used.\n",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `OutcomePredictors` type.)\n\nProvides control over the features used during modeling to predict an outcome.\n"
      },
      "OutcomePredictorsPut": {
        "type": "object",
        "properties": {
          "blocked": {
            "$ref": "#/components/schemas/OutcomePredictorsBlockedPut"
          },
          "max_observation_date": {
            "type": "string",
            "description": "The maximum date for FIG attribute observations used during modeling. When set, only attribute data observed on or before this date will be used. If not set, the freshest available data is used.\n",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `OutcomePredictors` type.)\n\nProvides control over the features used during modeling to predict an outcome.\n"
      },
      "OutcomePut": {
        "type": "object",
        "required": [
          "attainment_cohort_id",
          "name"
        ],
        "properties": {
          "attainment_cohort_id": {
            "type": "string",
            "description": "A cohort of people who have attained the desired outcome (for example, if predicting transition from prospect to customer, the attainment cohort should be existing customers).",
            "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
            "format": "uuid"
          },
          "attrition_cohort_id": {
            "type": "string",
            "description": "A cohort of counterexamples - people who have clearly failed to attain the outcome, as opposed to simply being indeterminate. This cohort is optional.",
            "example": "3a6878ab-525f-418b-bea5-e9b8fd2dde2a",
            "format": "uuid"
          },
          "bias_mitigation": {
            "type": "object",
            "properties": {
              "age": {
                "$ref": "#/components/schemas/OutcomeBiasMitigationStrategy"
              },
              "gender": {
                "$ref": "#/components/schemas/OutcomeBiasMitigationStrategy"
              }
            },
            "description": "The strategy to be applied to gender and/or age to mitigate or reverse the bias found in the attainment population.\n\nThough the spec appears you can combine different mitigation strategies per dimension of concern (age=equity, gender=equality), API runtime validation will prevent it for now. Later we may support this so the spec is designed for future proofing. Note: age=none, gender=equity is allowed.\n"
          },
          "eligible_cohort_id": {
            "type": "string",
            "description": "A cohort of people who could attain or attrite the desired outcome (for example, if predicting transition from prospect to customer, the eligible cohort should be prospects). If no eligible cohort is specified, the model will use the US population as the eligible cohort.",
            "example": "d7a8b7df-4bb3-4f55-af9f-7f2138d3796d",
            "format": "uuid"
          },
          "feature_blocklist": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^(fig/)?[a-z][_a-z0-9]*$"
            },
            "description": "The name of a field or category of fields which should not be considered for this Outcome. Should be used\nprimarily for the purposes of Responsible AI.\n",
            "example": [
              "fig/gender"
            ]
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this outcome. Each outcome must have a unique name.",
            "example": "Lead Conversion",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "prediction_mode": {
            "type": "string",
            "description": "Defaults to auto, which enables dynamic modeling if possible. The other option is static, which disables dynamic modeling. Dynamic modeling considers chronology and uses advanced feature engineering whenever possible. You may want to disable dynamic prediction if chronology could confuse your use case, or if advised by Faraday staff.",
            "default": "auto",
            "enum": [
              "auto",
              "static"
            ]
          },
          "predictors": {
            "$ref": "#/components/schemas/OutcomePredictorsPut"
          },
          "preview": {
            "type": "boolean",
            "description": "An outcome in preview mode will not build until preview is turned off.\n",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Outcome` type.)\n\nA business objective describing how likely a group of people are to transition from one cohort to another (for example, from a prospect to a customer)."
      },
      "OutputToLocations": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "The city of each location.",
            "example": "city",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "geometry": {
            "type": "string",
            "description": "The geometry of each location, as GeoJSON or well-known text. Coordinates are decimal degrees in EPSG 4326 (WGS 84), written longitude first, and the geometry must be two-dimensional; a row whose geometry does not conform produces no location.\n\nGeometries may be points, lines, or areas; an area is used in full when measuring distance to a location, so distances are measured to the nearest edge.\n\nA column holding a bare coordinate pair is not a geometry. Split it into two columns and map them as `latitude` and `longitude` instead.\n",
            "example": "catchment",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "house_number_and_street": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 256,
              "pattern": "^(?!\\s*$).+"
            },
            "description": "The street address lines of each location.",
            "example": [
              "address_1",
              "address_2"
            ]
          },
          "latitude": {
            "type": "string",
            "description": "The latitude of each location, in decimal degrees, EPSG 4326 (WGS 84).",
            "example": "lat",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "longitude": {
            "type": "string",
            "description": "The longitude of each location, in decimal degrees, EPSG 4326 (WGS 84).",
            "example": "long",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "name": {
            "type": "string",
            "description": "A human-readable label for each location.",
            "example": "store_name",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "postcode": {
            "type": "string",
            "description": "The postcode of each location.",
            "example": "zip",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "properties": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name"
              ],
              "properties": {
                "column": {
                  "type": "string",
                  "description": "The source column this property's value is read from. Mutually exclusive with `value`.",
                  "example": "sq_ft",
                  "maxLength": 256,
                  "pattern": "^(?!\\s*$).+"
                },
                "name": {
                  "type": "string",
                  "description": "The name this property is given on each location.",
                  "example": "square_footage",
                  "maxLength": 64,
                  "pattern": "^(?!\\s*$).+"
                },
                "value": {
                  "type": "string",
                  "description": "A constant value for this property, shared by every location. Mutually exclusive with `column`.",
                  "example": "vermont"
                }
              },
              "additionalProperties": false
            },
            "description": "Additional values to record on each location. Properties can be filtered on wherever an atlas' locations are used.\n"
          },
          "reference_key": {
            "type": "string",
            "description": "An identifier for each location from an external system.\n\nReference keys must be unique within an atlas. Setting this enables filtering by `location_reference_keys` wherever an atlas' locations are used.\n",
            "example": "store_id",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "state": {
            "type": "string",
            "description": "The state of each location.",
            "example": "state",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "How to build a location out of each row of the source data. Each member below names a column in the source data.\n"
      },
      "OutputToLocationsMergePatch": {
        "type": "object",
        "properties": {
          "city": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "city",
                "maxLength": 256,
                "pattern": "^(?!\\s*$).+"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The city of each location."
          },
          "geometry": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "catchment",
                "maxLength": 256,
                "pattern": "^(?!\\s*$).+"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The geometry of each location, as GeoJSON or well-known text. Coordinates are decimal degrees in EPSG 4326 (WGS 84), written longitude first, and the geometry must be two-dimensional; a row whose geometry does not conform produces no location.\n\nGeometries may be points, lines, or areas; an area is used in full when measuring distance to a location, so distances are measured to the nearest edge.\n\nA column holding a bare coordinate pair is not a geometry. Split it into two columns and map them as `latitude` and `longitude` instead.\n"
          },
          "house_number_and_street": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 256,
                  "pattern": "^(?!\\s*$).+"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": [
                  "address_1",
                  "address_2"
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The street address lines of each location."
          },
          "latitude": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "lat",
                "maxLength": 256,
                "pattern": "^(?!\\s*$).+"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The latitude of each location, in decimal degrees, EPSG 4326 (WGS 84)."
          },
          "longitude": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "long",
                "maxLength": 256,
                "pattern": "^(?!\\s*$).+"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The longitude of each location, in decimal degrees, EPSG 4326 (WGS 84)."
          },
          "name": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "store_name",
                "maxLength": 256,
                "pattern": "^(?!\\s*$).+"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A human-readable label for each location."
          },
          "postcode": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "zip",
                "maxLength": 256,
                "pattern": "^(?!\\s*$).+"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The postcode of each location."
          },
          "properties": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "name"
                  ],
                  "properties": {
                    "column": {
                      "type": "string",
                      "description": "The source column this property's value is read from. Mutually exclusive with `value`.",
                      "example": "sq_ft",
                      "maxLength": 256,
                      "pattern": "^(?!\\s*$).+"
                    },
                    "name": {
                      "type": "string",
                      "description": "The name this property is given on each location.",
                      "example": "square_footage",
                      "maxLength": 64,
                      "pattern": "^(?!\\s*$).+"
                    },
                    "value": {
                      "type": "string",
                      "description": "A constant value for this property, shared by every location. Mutually exclusive with `column`.",
                      "example": "vermont"
                    }
                  },
                  "additionalProperties": false
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Additional values to record on each location. Properties can be filtered on wherever an atlas' locations are used.\n"
          },
          "reference_key": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "store_id",
                "maxLength": 256,
                "pattern": "^(?!\\s*$).+"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "An identifier for each location from an external system.\n\nReference keys must be unique within an atlas. Setting this enables filtering by `location_reference_keys` wherever an atlas' locations are used.\n"
          },
          "state": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "state",
                "maxLength": 256,
                "pattern": "^(?!\\s*$).+"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The state of each location."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `OutputToLocations` type.)\n\nHow to build a location out of each row of the source data. Each member below names a column in the source data.\n"
      },
      "OutputToLocationsPost": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "The city of each location.",
            "example": "city",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "geometry": {
            "type": "string",
            "description": "The geometry of each location, as GeoJSON or well-known text. Coordinates are decimal degrees in EPSG 4326 (WGS 84), written longitude first, and the geometry must be two-dimensional; a row whose geometry does not conform produces no location.\n\nGeometries may be points, lines, or areas; an area is used in full when measuring distance to a location, so distances are measured to the nearest edge.\n\nA column holding a bare coordinate pair is not a geometry. Split it into two columns and map them as `latitude` and `longitude` instead.\n",
            "example": "catchment",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "house_number_and_street": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 256,
              "pattern": "^(?!\\s*$).+"
            },
            "description": "The street address lines of each location.",
            "example": [
              "address_1",
              "address_2"
            ]
          },
          "latitude": {
            "type": "string",
            "description": "The latitude of each location, in decimal degrees, EPSG 4326 (WGS 84).",
            "example": "lat",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "longitude": {
            "type": "string",
            "description": "The longitude of each location, in decimal degrees, EPSG 4326 (WGS 84).",
            "example": "long",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "name": {
            "type": "string",
            "description": "A human-readable label for each location.",
            "example": "store_name",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "postcode": {
            "type": "string",
            "description": "The postcode of each location.",
            "example": "zip",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "properties": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name"
              ],
              "properties": {
                "column": {
                  "type": "string",
                  "description": "The source column this property's value is read from. Mutually exclusive with `value`.",
                  "example": "sq_ft",
                  "maxLength": 256,
                  "pattern": "^(?!\\s*$).+"
                },
                "name": {
                  "type": "string",
                  "description": "The name this property is given on each location.",
                  "example": "square_footage",
                  "maxLength": 64,
                  "pattern": "^(?!\\s*$).+"
                },
                "value": {
                  "type": "string",
                  "description": "A constant value for this property, shared by every location. Mutually exclusive with `column`.",
                  "example": "vermont"
                }
              },
              "additionalProperties": false
            },
            "description": "Additional values to record on each location. Properties can be filtered on wherever an atlas' locations are used.\n"
          },
          "reference_key": {
            "type": "string",
            "description": "An identifier for each location from an external system.\n\nReference keys must be unique within an atlas. Setting this enables filtering by `location_reference_keys` wherever an atlas' locations are used.\n",
            "example": "store_id",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "state": {
            "type": "string",
            "description": "The state of each location.",
            "example": "state",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `OutputToLocations` type.)\n\nHow to build a location out of each row of the source data. Each member below names a column in the source data.\n"
      },
      "OutputToLocationsPut": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "The city of each location.",
            "example": "city",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "geometry": {
            "type": "string",
            "description": "The geometry of each location, as GeoJSON or well-known text. Coordinates are decimal degrees in EPSG 4326 (WGS 84), written longitude first, and the geometry must be two-dimensional; a row whose geometry does not conform produces no location.\n\nGeometries may be points, lines, or areas; an area is used in full when measuring distance to a location, so distances are measured to the nearest edge.\n\nA column holding a bare coordinate pair is not a geometry. Split it into two columns and map them as `latitude` and `longitude` instead.\n",
            "example": "catchment",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "house_number_and_street": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 256,
              "pattern": "^(?!\\s*$).+"
            },
            "description": "The street address lines of each location.",
            "example": [
              "address_1",
              "address_2"
            ]
          },
          "latitude": {
            "type": "string",
            "description": "The latitude of each location, in decimal degrees, EPSG 4326 (WGS 84).",
            "example": "lat",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "longitude": {
            "type": "string",
            "description": "The longitude of each location, in decimal degrees, EPSG 4326 (WGS 84).",
            "example": "long",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "name": {
            "type": "string",
            "description": "A human-readable label for each location.",
            "example": "store_name",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "postcode": {
            "type": "string",
            "description": "The postcode of each location.",
            "example": "zip",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "properties": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name"
              ],
              "properties": {
                "column": {
                  "type": "string",
                  "description": "The source column this property's value is read from. Mutually exclusive with `value`.",
                  "example": "sq_ft",
                  "maxLength": 256,
                  "pattern": "^(?!\\s*$).+"
                },
                "name": {
                  "type": "string",
                  "description": "The name this property is given on each location.",
                  "example": "square_footage",
                  "maxLength": 64,
                  "pattern": "^(?!\\s*$).+"
                },
                "value": {
                  "type": "string",
                  "description": "A constant value for this property, shared by every location. Mutually exclusive with `column`.",
                  "example": "vermont"
                }
              },
              "additionalProperties": false
            },
            "description": "Additional values to record on each location. Properties can be filtered on wherever an atlas' locations are used.\n"
          },
          "reference_key": {
            "type": "string",
            "description": "An identifier for each location from an external system.\n\nReference keys must be unique within an atlas. Setting this enables filtering by `location_reference_keys` wherever an atlas' locations are used.\n",
            "example": "store_id",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          },
          "state": {
            "type": "string",
            "description": "The state of each location.",
            "example": "state",
            "maxLength": 256,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `OutputToLocations` type.)\n\nHow to build a location out of each row of the source data. Each member below names a column in the source data.\n"
      },
      "OutputToStreamArrayItem": {
        "type": "object",
        "required": [
          "stream_name",
          "properties"
        ],
        "properties": {
          "properties": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/StreamPropertyConfig"
            },
            "description": "A flexible mapping of property names to their configurations. Property names can be any string (e.g., data, datetime, authority, precision, derivations, quality).\n\nEach property can either reference a column from the dataset or provide a static value.\n"
          },
          "stream_id": {
            "type": "string",
            "example": "eefb0735-6ad6-4611-a832-40bab2968353",
            "format": "uuid"
          },
          "stream_name": {
            "type": "string",
            "description": "The name of the stream to populate with this data",
            "example": "attribute_assertion_figv2_age"
          }
        },
        "additionalProperties": false,
        "description": "A single mapping of a dataset column to a stream with property configurations."
      },
      "OutputToStreams": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/DatasetStream"
        },
        "description": "Describes how to transform the dataset into one or more streams. \n\nStreams typically represent events. They can have multiple dataset sources and each dataset can be used to populate multiple streams.\n\nThe shape of this parameter is a mapping of stream names to stream output columns, given by a `data_map` object. Ex:\n```\n\"output_to_streams\": {\n  \"orders\": {                               <-- stream name\n      \"data_map\": {\n        \"datetime\": {                       <-- stream column\n          \"column_name\": \"purchase_date\",   <-- dataset column name\n          \"format\": \"mm_dd_yyyy_slash\"      <-- dataset column format\n        },\n        \"value\": {\n          \"column_name\": \"purchase_amount\"\n        }\n      }\n    }\n  }\n}\n```\n\nStreams named here will be automatically generated if they do not exist. They can be fetched with <a href=\"https://faraday.ai/developers/reference/getstream\">/streams/{stream_id_or_name}</a>.\n\nA `data_map` object can have any keys, but it is recommended to include the reserved `datetime` key as this will improve modeling.\n\nEach key of the `data_map` object must specificy at mimumum a `column_name` (source column) and optionally a `format`, which can be one of:\n  * `currency_cents`\n  * `currency_dollars`\n  * `mm_dd_yy_slash`\n  * `mm_dd_yyyy_slash`\n  * `mm_dd_yy_dash`\n  * `mm_dd_yyyy_dash`\n  * `yyyy_mm_dd_slash`\n  * `yy_mm_dd_slash`\n  * `yyyy_mm_dd_dash`\n  * `yy_mm_dd_dash`\n  * `yyyymmdd`\n  * `yyyymm`\n  * `dd_mm_yyyy_slash`\n  * `dd_mm_yy_slash`\n  * `dd_mm_yyyy_dash`\n  * `dd_mm_yy_dash`\n  * `list_comma_separated`\n  * `list_semicolon_separated`\n  * `list_single_value`\n  * `static_date_iso8601`\n  * `date_iso8601` (deprecated)\n  * `date_month_day_fullyear` (deprecated)\n  * `date_month_day_shortyear` (deprecated)\n  * `date_month_day_fullyear_hours_minutes` (deprecated)\n  * `date_month_day_fullyear_hours_minutes_seconds` (deprecated)\n\nIf no format is provided, the dataset type will be retained (data uploaded through csv are text by default).\n\nFor the date formats, time values are ignored. In other words, if you have YYYY-MM-DDTHH:MM:SS, you can pick yyyy_mm_dd_dash.\n\nCannot be set in combination with `output_all_columns_as_traits`.\n"
      },
      "OutputToStreamsMergePatch": {
        "type": "object",
        "additionalProperties": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/DatasetStreamMergePatch"
            },
            {
              "type": "null",
              "description": "Pass `null` to clear this field's existing value.",
              "title": "Clear"
            }
          ]
        },
        "description": "(Parameters used to PATCH the `OutputToStreams` type.)\n\nDescribes how to transform the dataset into one or more streams. \n\nStreams typically represent events. They can have multiple dataset sources and each dataset can be used to populate multiple streams.\n\nThe shape of this parameter is a mapping of stream names to stream output columns, given by a `data_map` object. Ex:\n```\n\"output_to_streams\": {\n  \"orders\": {                               <-- stream name\n      \"data_map\": {\n        \"datetime\": {                       <-- stream column\n          \"column_name\": \"purchase_date\",   <-- dataset column name\n          \"format\": \"mm_dd_yyyy_slash\"      <-- dataset column format\n        },\n        \"value\": {\n          \"column_name\": \"purchase_amount\"\n        }\n      }\n    }\n  }\n}\n```\n\nStreams named here will be automatically generated if they do not exist. They can be fetched with <a href=\"https://faraday.ai/developers/reference/getstream\">/streams/{stream_id_or_name}</a>.\n\nA `data_map` object can have any keys, but it is recommended to include the reserved `datetime` key as this will improve modeling.\n\nEach key of the `data_map` object must specificy at mimumum a `column_name` (source column) and optionally a `format`, which can be one of:\n  * `currency_cents`\n  * `currency_dollars`\n  * `mm_dd_yy_slash`\n  * `mm_dd_yyyy_slash`\n  * `mm_dd_yy_dash`\n  * `mm_dd_yyyy_dash`\n  * `yyyy_mm_dd_slash`\n  * `yy_mm_dd_slash`\n  * `yyyy_mm_dd_dash`\n  * `yy_mm_dd_dash`\n  * `yyyymmdd`\n  * `yyyymm`\n  * `dd_mm_yyyy_slash`\n  * `dd_mm_yy_slash`\n  * `dd_mm_yyyy_dash`\n  * `dd_mm_yy_dash`\n  * `list_comma_separated`\n  * `list_semicolon_separated`\n  * `list_single_value`\n  * `static_date_iso8601`\n  * `date_iso8601` (deprecated)\n  * `date_month_day_fullyear` (deprecated)\n  * `date_month_day_shortyear` (deprecated)\n  * `date_month_day_fullyear_hours_minutes` (deprecated)\n  * `date_month_day_fullyear_hours_minutes_seconds` (deprecated)\n\nIf no format is provided, the dataset type will be retained (data uploaded through csv are text by default).\n\nFor the date formats, time values are ignored. In other words, if you have YYYY-MM-DDTHH:MM:SS, you can pick yyyy_mm_dd_dash.\n\nCannot be set in combination with `output_all_columns_as_traits`.\n"
      },
      "OutputToStreamsPost": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/DatasetStreamPost"
        },
        "description": "(Parameters used to POST a new value of the `OutputToStreams` type.)\n\nDescribes how to transform the dataset into one or more streams. \n\nStreams typically represent events. They can have multiple dataset sources and each dataset can be used to populate multiple streams.\n\nThe shape of this parameter is a mapping of stream names to stream output columns, given by a `data_map` object. Ex:\n```\n\"output_to_streams\": {\n  \"orders\": {                               <-- stream name\n      \"data_map\": {\n        \"datetime\": {                       <-- stream column\n          \"column_name\": \"purchase_date\",   <-- dataset column name\n          \"format\": \"mm_dd_yyyy_slash\"      <-- dataset column format\n        },\n        \"value\": {\n          \"column_name\": \"purchase_amount\"\n        }\n      }\n    }\n  }\n}\n```\n\nStreams named here will be automatically generated if they do not exist. They can be fetched with <a href=\"https://faraday.ai/developers/reference/getstream\">/streams/{stream_id_or_name}</a>.\n\nA `data_map` object can have any keys, but it is recommended to include the reserved `datetime` key as this will improve modeling.\n\nEach key of the `data_map` object must specificy at mimumum a `column_name` (source column) and optionally a `format`, which can be one of:\n  * `currency_cents`\n  * `currency_dollars`\n  * `mm_dd_yy_slash`\n  * `mm_dd_yyyy_slash`\n  * `mm_dd_yy_dash`\n  * `mm_dd_yyyy_dash`\n  * `yyyy_mm_dd_slash`\n  * `yy_mm_dd_slash`\n  * `yyyy_mm_dd_dash`\n  * `yy_mm_dd_dash`\n  * `yyyymmdd`\n  * `yyyymm`\n  * `dd_mm_yyyy_slash`\n  * `dd_mm_yy_slash`\n  * `dd_mm_yyyy_dash`\n  * `dd_mm_yy_dash`\n  * `list_comma_separated`\n  * `list_semicolon_separated`\n  * `list_single_value`\n  * `static_date_iso8601`\n  * `date_iso8601` (deprecated)\n  * `date_month_day_fullyear` (deprecated)\n  * `date_month_day_shortyear` (deprecated)\n  * `date_month_day_fullyear_hours_minutes` (deprecated)\n  * `date_month_day_fullyear_hours_minutes_seconds` (deprecated)\n\nIf no format is provided, the dataset type will be retained (data uploaded through csv are text by default).\n\nFor the date formats, time values are ignored. In other words, if you have YYYY-MM-DDTHH:MM:SS, you can pick yyyy_mm_dd_dash.\n\nCannot be set in combination with `output_all_columns_as_traits`.\n",
        "example": {
          "orders": {
            "data_map": {
              "channel": "referring_site",
              "datetime": "processed_at",
              "product": {
                "column": "skus",
                "format": "list_comma_separated"
              },
              "value": "total_line_items_price"
            }
          }
        }
      },
      "OutputToStreamsPut": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/DatasetStreamPut"
        },
        "description": "(Parameters used to PUT a value of the `OutputToStreams` type.)\n\nDescribes how to transform the dataset into one or more streams. \n\nStreams typically represent events. They can have multiple dataset sources and each dataset can be used to populate multiple streams.\n\nThe shape of this parameter is a mapping of stream names to stream output columns, given by a `data_map` object. Ex:\n```\n\"output_to_streams\": {\n  \"orders\": {                               <-- stream name\n      \"data_map\": {\n        \"datetime\": {                       <-- stream column\n          \"column_name\": \"purchase_date\",   <-- dataset column name\n          \"format\": \"mm_dd_yyyy_slash\"      <-- dataset column format\n        },\n        \"value\": {\n          \"column_name\": \"purchase_amount\"\n        }\n      }\n    }\n  }\n}\n```\n\nStreams named here will be automatically generated if they do not exist. They can be fetched with <a href=\"https://faraday.ai/developers/reference/getstream\">/streams/{stream_id_or_name}</a>.\n\nA `data_map` object can have any keys, but it is recommended to include the reserved `datetime` key as this will improve modeling.\n\nEach key of the `data_map` object must specificy at mimumum a `column_name` (source column) and optionally a `format`, which can be one of:\n  * `currency_cents`\n  * `currency_dollars`\n  * `mm_dd_yy_slash`\n  * `mm_dd_yyyy_slash`\n  * `mm_dd_yy_dash`\n  * `mm_dd_yyyy_dash`\n  * `yyyy_mm_dd_slash`\n  * `yy_mm_dd_slash`\n  * `yyyy_mm_dd_dash`\n  * `yy_mm_dd_dash`\n  * `yyyymmdd`\n  * `yyyymm`\n  * `dd_mm_yyyy_slash`\n  * `dd_mm_yy_slash`\n  * `dd_mm_yyyy_dash`\n  * `dd_mm_yy_dash`\n  * `list_comma_separated`\n  * `list_semicolon_separated`\n  * `list_single_value`\n  * `static_date_iso8601`\n  * `date_iso8601` (deprecated)\n  * `date_month_day_fullyear` (deprecated)\n  * `date_month_day_shortyear` (deprecated)\n  * `date_month_day_fullyear_hours_minutes` (deprecated)\n  * `date_month_day_fullyear_hours_minutes_seconds` (deprecated)\n\nIf no format is provided, the dataset type will be retained (data uploaded through csv are text by default).\n\nFor the date formats, time values are ignored. In other words, if you have YYYY-MM-DDTHH:MM:SS, you can pick yyyy_mm_dd_dash.\n\nCannot be set in combination with `output_all_columns_as_traits`.\n"
      },
      "OutputToTraits": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/TraitDataMapColumn"
        },
        "description": "A mapping of trait name to trait definition, where the key is what the trait will be called in Faraday's system.\n\nTraits are characteristics about people, that are unrelated to particular events.\n\nWhen specifying or modifying this parameter, bulk trait declarations specified with `output_all_columns_as_traits` must be null.\n\nThere is an option to provide either a static value or a column name for each trait. Please provide one or the other.\n"
      },
      "OutputToTraitsMergePatch": {
        "type": "object",
        "additionalProperties": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/TraitDataMapColumnMergePatch"
            },
            {
              "type": "null",
              "description": "Pass `null` to clear this field's existing value.",
              "title": "Clear"
            }
          ]
        },
        "description": "(Parameters used to PATCH the `OutputToTraits` type.)\n\nA mapping of trait name to trait definition, where the key is what the trait will be called in Faraday's system.\n\nTraits are characteristics about people, that are unrelated to particular events.\n\nWhen specifying or modifying this parameter, bulk trait declarations specified with `output_all_columns_as_traits` must be null.\n\nThere is an option to provide either a static value or a column name for each trait. Please provide one or the other.\n"
      },
      "OutputToTraitsPost": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/TraitDataMapColumnPost"
        },
        "description": "(Parameters used to POST a new value of the `OutputToTraits` type.)\n\nA mapping of trait name to trait definition, where the key is what the trait will be called in Faraday's system.\n\nTraits are characteristics about people, that are unrelated to particular events.\n\nWhen specifying or modifying this parameter, bulk trait declarations specified with `output_all_columns_as_traits` must be null.\n\nThere is an option to provide either a static value or a column name for each trait. Please provide one or the other.\n"
      },
      "OutputToTraitsPut": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/TraitDataMapColumnPut"
        },
        "description": "(Parameters used to PUT a value of the `OutputToTraits` type.)\n\nA mapping of trait name to trait definition, where the key is what the trait will be called in Faraday's system.\n\nTraits are characteristics about people, that are unrelated to particular events.\n\nWhen specifying or modifying this parameter, bulk trait declarations specified with `output_all_columns_as_traits` must be null.\n\nThere is an option to provide either a static value or a column name for each trait. Please provide one or the other.\n"
      },
      "Payment": {
        "type": "object",
        "required": [
          "amount",
          "date"
        ],
        "properties": {
          "amount": {
            "type": "number",
            "description": "The amount paid.",
            "example": 123.45
          },
          "date": {
            "type": "string",
            "description": "The date of the payment.",
            "example": "2022-10-05",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Persona": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "avatar": {
            "type": "string",
            "description": "**Deprecated**: Value will be null until the key is eventually removed or replaced. Previously, an image used to represent this persona (only available if demographics (age and gender) are included in the model)\n",
            "example": "https://app.faraday.ai/images/persona_stereotypes/face-5.jpg",
            "deprecated": true,
            "pattern": "^https://app.faraday.ai/images/persona_stereotypes/[A-Za-z0-9_][-A-Za-z0-9_ ]*.jpg$"
          },
          "details": {
            "$ref": "#/components/schemas/PersonaDetails"
          },
          "id": {
            "type": "string",
            "example": "5cc63c04-f451-43e4-98ce-0e755db8f8e6",
            "format": "uuid"
          },
          "individuals_count": {
            "type": "integer",
            "description": "The number of individuals in this persona among members of the cohort used to generate the persona set who are matched at the individual level. Members matched only at the address level aren't used to build personas.",
            "example": 1000
          },
          "interpretation": {
            "type": "object",
            "properties": {
              "marketing_strategems": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Marketing strategems for this persona"
              },
              "summary": {
                "type": "string",
                "description": "A summary interpretation of this persona"
              }
            },
            "description": "Interpretation data for this persona"
          },
          "name": {
            "type": "string",
            "description": "A human-readable label for this persona.",
            "example": "Cluster 0",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "A set of people who have more in common with each other than they do with members of other personas in the persona set."
      },
      "PersonaDetails": {
        "type": "object",
        "properties": {
          "bins": {
            "type": "object",
            "description": "**Deprecated**: Use `/persona_sets/{persona_set_id}/analysis/dimensions` instead.\n\nHow much the members of the persona differ from an average member. This is represented as a histogram. For example, if the average member is 38 years old, this will show how many members are 0-20 years old, 20-30, 30-40, and so on.\n",
            "example": "{\n  \"age\": [\n      {\n          \"max\": 20,\n          \"min\": 0,\n          \"count\": 0,\n          \"percent\": 0.0\n      },\n      //...\n      {\n          \"max\": 30,\n          \"min\": 20,\n          \"count\": 6,\n          \"percent\": 0.0035608308605341245\n      },\n      //...\n      {\n          \"max\": null,\n          \"min\": 90,\n          \"count\": 0,\n          \"percent\": 0.0\n      }\n  ],\n  \"gender\": [\n      {\n          \"count\": 1396,\n          \"value\": \"Female\",\n          \"percent\": 0.828486646884273\n      },\n      {\n          \"count\": 289,\n          \"value\": \"Male\",\n          \"percent\": 0.171513353115727\n      }\n  ]\n  //...\n}\n",
            "deprecated": true
          },
          "center": {
            "type": "object",
            "description": "The average traits of a member of this persona. A person does not need to match these traits exactly to be a member of the persona.",
            "example": "{\n  \"age\": 38.98716,\n  \"gender\": \"Female\",\n  \"household_size\": 6.61248,\n  \"household_income\": 148072.78481\n}\n"
          }
        },
        "additionalProperties": false,
        "description": "Statistics about the members of this persona."
      },
      "PersonaMergePatch": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "A human-readable label for this persona.",
            "example": "Cluster 0",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Persona` type.)\n\nA set of people who have more in common with each other than they do with members of other personas in the persona set."
      },
      "PersonaPost": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "A human-readable label for this persona.",
            "example": "Cluster 0",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Persona` type.)\n\nA set of people who have more in common with each other than they do with members of other personas in the persona set."
      },
      "PersonaPut": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "A human-readable label for this persona.",
            "example": "Cluster 0",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Persona` type.)\n\nA set of people who have more in common with each other than they do with members of other personas in the persona set."
      },
      "PersonaSet": {
        "type": "object",
        "required": [
          "cohort_id",
          "created_at",
          "id",
          "name",
          "resource_type",
          "status",
          "updated_at"
        ],
        "properties": {
          "active": {
            "type": "boolean",
            "description": "Is the related cohort using this as the primary persona set?"
          },
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "clustering_dimensions": {
            "$ref": "#/components/schemas/ClusteringDimensions"
          },
          "cohort_id": {
            "type": "string",
            "description": "The cohort to organize into personas. Personas are built from cohort members matched at the individual level.",
            "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
            "format": "uuid"
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "explore": {
            "type": "boolean",
            "description": "Whether to show the persona set in Explore, the map view on https://app.faraday.ai.\n\nThis will slow down persona set builds.\n",
            "example": true,
            "default": false
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "example": "4b3f42dd-b6c3-4f0f-ac18-9e6e47321f83",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "modeling_attributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelingAttribute"
            },
            "description": "Deprecated. Use `clustering_dimensions` instead.\n\nSpecify Faraday provided attributes to use in modeling. Only available to accounts with an identity graph feature store set.\n\nMutually exclusive with `modeling_fields`.\n\nChanging this on an existing persona set triggers a complete rebuild of the persona set.\n",
            "deprecated": true
          },
          "modeling_field_max_observation_date": {
            "type": "string",
            "description": "Deprecated. Use `clustering_dimensions.attribute_max_observation_date` instead.\n\nThe maximum date for FIG attribute observations used in modeling fields. When set, only attribute data observed on or before this date will be used. If not set, the freshest available data is used.\n\nIf `clustering_dimensions.attribute_max_observation_date` is also supplied, it takes precedence over this field.\n",
            "deprecated": true,
            "format": "date"
          },
          "modeling_fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelingField"
            },
            "description": "Deprecated. Use `clustering_dimensions` instead.\n\nSpecify Faraday provided traits to use in modeling.\n\nOnly valid on accounts that do not have an identity graph feature store set, which must use modeling_attributes instead. Mutually exclusive with `modeling_attributes`.\n\nChanging this on an existing persona set triggers a complete rebuild of the persona set.\n",
            "deprecated": true
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this persona set.",
            "example": "Customers personas",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "number_of_clusters": {
            "type": "integer",
            "description": "Specify the exact number of clusters (i.e. personas) there should be in the persona set.\n\nBy default, the optimal value for this parameter is determined automatically.\n\nSetting this requires external knowledge and should only be done when the use-case necessitates a specific number of clusters.\n"
          },
          "personas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Persona"
            },
            "description": "The personas that belong to this persona set"
          },
          "preview": {
            "type": "boolean",
            "description": "A persona set in preview mode will not build until preview is turned off.\n",
            "example": true
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource.",
            "example": "persona_sets"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A set of customer personas."
      },
      "PersonaSetAnalysisDimensions": {
        "type": "object",
        "required": [
          "persona_id"
        ],
        "properties": {
          "attributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisDimensionsAttribute"
            },
            "description": "A list of counts and percents about the persona set based on attributes. Present instead of `traits` for accounts with an identity graph feature store set."
          },
          "persona_id": {
            "type": "string",
            "format": "uuid"
          },
          "traits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisDimensionsTrait"
            },
            "description": "A list of counts and percents about the persona set based on a predefined list of traits, including the traits used to model the persona set."
          }
        }
      },
      "PersonaSetAnalysisFlow": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/PersonaSetAnalysisFlowPersona"
        }
      },
      "PersonaSetAnalysisFlowPersona": {
        "type": "object",
        "required": [
          "persona_id",
          "days"
        ],
        "properties": {
          "days": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonaSetAnalysisFlowPersonaDate"
            },
            "description": "A series of dates each with a count for the invidiuals that match that persona."
          },
          "persona_id": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "PersonaSetAnalysisFlowPersonaDate": {
        "type": "object",
        "required": [
          "date",
          "count"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "The number of members of this persona on this date"
          },
          "date": {
            "type": "string",
            "format": "date"
          }
        }
      },
      "PersonaSetMergePatch": {
        "type": "object",
        "properties": {
          "clustering_dimensions": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ClusteringDimensions"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "explore": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": true,
                "default": false
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether to show the persona set in Explore, the map view on https://app.faraday.ai.\n\nThis will slow down persona set builds.\n"
          },
          "modeling_field_max_observation_date": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "deprecated": true,
                "format": "date"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Deprecated. Use `clustering_dimensions.attribute_max_observation_date` instead.\n\nThe maximum date for FIG attribute observations used in modeling fields. When set, only attribute data observed on or before this date will be used. If not set, the freshest available data is used.\n\nIf `clustering_dimensions.attribute_max_observation_date` is also supplied, it takes precedence over this field.\n"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this persona set.",
            "example": "Customers personas",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "number_of_clusters": {
            "oneOf": [
              {
                "type": "integer",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Specify the exact number of clusters (i.e. personas) there should be in the persona set.\n\nBy default, the optimal value for this parameter is determined automatically.\n\nSetting this requires external knowledge and should only be done when the use-case necessitates a specific number of clusters.\n"
          },
          "preview": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A persona set in preview mode will not build until preview is turned off.\n"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `PersonaSet` type.)\n\nA set of customer personas."
      },
      "PersonaSetPost": {
        "type": "object",
        "required": [
          "cohort_id",
          "name"
        ],
        "properties": {
          "clustering_dimensions": {
            "$ref": "#/components/schemas/ClusteringDimensions"
          },
          "cohort_id": {
            "type": "string",
            "description": "The cohort to organize into personas. Personas are built from cohort members matched at the individual level.",
            "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
            "format": "uuid"
          },
          "explore": {
            "type": "boolean",
            "description": "Whether to show the persona set in Explore, the map view on https://app.faraday.ai.\n\nThis will slow down persona set builds.\n",
            "example": true,
            "default": false
          },
          "modeling_attributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelingAttribute"
            },
            "description": "Deprecated. Use `clustering_dimensions` instead.\n\nSpecify Faraday provided attributes to use in modeling. Only available to accounts with an identity graph feature store set.\n\nMutually exclusive with `modeling_fields`.\n\nChanging this on an existing persona set triggers a complete rebuild of the persona set.\n",
            "deprecated": true
          },
          "modeling_field_max_observation_date": {
            "type": "string",
            "description": "Deprecated. Use `clustering_dimensions.attribute_max_observation_date` instead.\n\nThe maximum date for FIG attribute observations used in modeling fields. When set, only attribute data observed on or before this date will be used. If not set, the freshest available data is used.\n\nIf `clustering_dimensions.attribute_max_observation_date` is also supplied, it takes precedence over this field.\n",
            "deprecated": true,
            "format": "date"
          },
          "modeling_fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelingField"
            },
            "description": "Deprecated. Use `clustering_dimensions` instead.\n\nSpecify Faraday provided traits to use in modeling.\n\nOnly valid on accounts that do not have an identity graph feature store set, which must use modeling_attributes instead. Mutually exclusive with `modeling_attributes`.\n\nChanging this on an existing persona set triggers a complete rebuild of the persona set.\n",
            "deprecated": true
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this persona set.",
            "example": "Customers personas",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "number_of_clusters": {
            "type": "integer",
            "description": "Specify the exact number of clusters (i.e. personas) there should be in the persona set.\n\nBy default, the optimal value for this parameter is determined automatically.\n\nSetting this requires external knowledge and should only be done when the use-case necessitates a specific number of clusters.\n"
          },
          "preview": {
            "type": "boolean",
            "description": "A persona set in preview mode will not build until preview is turned off.\n",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `PersonaSet` type.)\n\nA set of customer personas."
      },
      "PersonaSetPut": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "clustering_dimensions": {
            "$ref": "#/components/schemas/ClusteringDimensions"
          },
          "explore": {
            "type": "boolean",
            "description": "Whether to show the persona set in Explore, the map view on https://app.faraday.ai.\n\nThis will slow down persona set builds.\n",
            "example": true,
            "default": false
          },
          "modeling_field_max_observation_date": {
            "type": "string",
            "description": "Deprecated. Use `clustering_dimensions.attribute_max_observation_date` instead.\n\nThe maximum date for FIG attribute observations used in modeling fields. When set, only attribute data observed on or before this date will be used. If not set, the freshest available data is used.\n\nIf `clustering_dimensions.attribute_max_observation_date` is also supplied, it takes precedence over this field.\n",
            "deprecated": true,
            "format": "date"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this persona set.",
            "example": "Customers personas",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "number_of_clusters": {
            "type": "integer",
            "description": "Specify the exact number of clusters (i.e. personas) there should be in the persona set.\n\nBy default, the optimal value for this parameter is determined automatically.\n\nSetting this requires external knowledge and should only be done when the use-case necessitates a specific number of clusters.\n"
          },
          "preview": {
            "type": "boolean",
            "description": "A persona set in preview mode will not build until preview is turned off.\n",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `PersonaSet` type.)\n\nA set of customer personas."
      },
      "Place": {
        "type": "object",
        "required": [
          "created_at",
          "id",
          "name",
          "resource_type",
          "status",
          "updated_at"
        ],
        "properties": {
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressInfo"
            }
          },
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "geojson": {
            "type": "object",
            "description": "A GeoJSON Geometry, as defined in the [GeoJSON specification](https://www.rfc-editor.org/rfc/rfc7946#section-3.1)\n\nThe longitude and latitude units of this geometry are expected to be in decimal degrees, using the \nWGS84 coordinate reference system, also known by the SRID 4326. https://www.rfc-editor.org/rfc/rfc7946#section-4\n"
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "example": "4b3f42dd-b6c3-4f0f-ac18-9e6e47321f83",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this place. Names must be unique. Uniqueness is case-insensitive.",
            "example": "Service Area",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource."
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A geospatial area or set of addresses which can be used as a spatial filter when defining other resources.\n\nSuperseded by the `Atlas`, which holds many locations built from a connection or an\nuploaded file rather than a single hand-defined area.\n"
      },
      "PlaceMergePatch": {
        "type": "object",
        "properties": {
          "addresses": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/AddressInfo"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "geojson": {
            "oneOf": [
              {
                "type": "object",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A GeoJSON Geometry, as defined in the [GeoJSON specification](https://www.rfc-editor.org/rfc/rfc7946#section-3.1)\n\nThe longitude and latitude units of this geometry are expected to be in decimal degrees, using the \nWGS84 coordinate reference system, also known by the SRID 4326. https://www.rfc-editor.org/rfc/rfc7946#section-4\n"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this place. Names must be unique. Uniqueness is case-insensitive.",
            "example": "Service Area",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Place` type.)\n\nA geospatial area or set of addresses which can be used as a spatial filter when defining other resources.\n\nSuperseded by the `Atlas`, which holds many locations built from a connection or an\nuploaded file rather than a single hand-defined area.\n"
      },
      "PlacePost": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressInfo"
            }
          },
          "geojson": {
            "type": "object",
            "description": "A GeoJSON Geometry, as defined in the [GeoJSON specification](https://www.rfc-editor.org/rfc/rfc7946#section-3.1)\n\nThe longitude and latitude units of this geometry are expected to be in decimal degrees, using the \nWGS84 coordinate reference system, also known by the SRID 4326. https://www.rfc-editor.org/rfc/rfc7946#section-4\n"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this place. Names must be unique. Uniqueness is case-insensitive.",
            "example": "Service Area",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Place` type.)\n\nA geospatial area or set of addresses which can be used as a spatial filter when defining other resources.\n\nSuperseded by the `Atlas`, which holds many locations built from a connection or an\nuploaded file rather than a single hand-defined area.\n"
      },
      "PlacePut": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressInfo"
            }
          },
          "geojson": {
            "type": "object",
            "description": "A GeoJSON Geometry, as defined in the [GeoJSON specification](https://www.rfc-editor.org/rfc/rfc7946#section-3.1)\n\nThe longitude and latitude units of this geometry are expected to be in decimal degrees, using the \nWGS84 coordinate reference system, also known by the SRID 4326. https://www.rfc-editor.org/rfc/rfc7946#section-4\n"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this place. Names must be unique. Uniqueness is case-insensitive.",
            "example": "Service Area",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Place` type.)\n\nA geospatial area or set of addresses which can be used as a spatial filter when defining other resources.\n\nSuperseded by the `Atlas`, which holds many locations built from a connection or an\nuploaded file rather than a single hand-defined area.\n"
      },
      "PrimitiveDataType": {
        "type": "string",
        "description": "The data type of a column in table, or of a trait. Types are expressed using a subset of\n[Avro](https://avro.apache.org/docs/current/spec.html). Possible values include:\n\n- boolean: A Boolean value.\n- long: A 64-bit integer.\n- double: A 64-bit float.\n- string: A Unicode string, possibly representing categorical data.\n- date: A date with no reference to time of day.\n",
        "example": "string",
        "enum": [
          "boolean",
          "long",
          "double",
          "string",
          "date"
        ]
      },
      "Recency": {
        "type": "object",
        "required": [
          "occurrence"
        ],
        "properties": {
          "max_days": {
            "type": "integer",
            "description": "Event must have occurred no more than N days ago"
          },
          "min_days": {
            "type": "integer",
            "description": "Event must have occurred at least N days ago"
          },
          "occurrence": {
            "$ref": "#/components/schemas/RecencyOccurrence"
          }
        },
        "additionalProperties": false,
        "description": "Basing cohort on recency of event\n"
      },
      "RecencyMergePatch": {
        "type": "object",
        "properties": {
          "max_days": {
            "oneOf": [
              {
                "type": "integer",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Event must have occurred no more than N days ago"
          },
          "min_days": {
            "oneOf": [
              {
                "type": "integer",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Event must have occurred at least N days ago"
          },
          "occurrence": {
            "$ref": "#/components/schemas/RecencyOccurrence"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Recency` type.)\n\nBasing cohort on recency of event\n"
      },
      "RecencyOccurrence": {
        "type": "string",
        "description": "What event to pay attention to",
        "enum": [
          "first",
          "last"
        ]
      },
      "RecencyPost": {
        "type": "object",
        "required": [
          "occurrence"
        ],
        "properties": {
          "max_days": {
            "type": "integer",
            "description": "Event must have occurred no more than N days ago"
          },
          "min_days": {
            "type": "integer",
            "description": "Event must have occurred at least N days ago"
          },
          "occurrence": {
            "$ref": "#/components/schemas/RecencyOccurrence"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Recency` type.)\n\nBasing cohort on recency of event\n"
      },
      "RecencyPut": {
        "type": "object",
        "required": [
          "occurrence"
        ],
        "properties": {
          "max_days": {
            "type": "integer",
            "description": "Event must have occurred no more than N days ago"
          },
          "min_days": {
            "type": "integer",
            "description": "Event must have occurred at least N days ago"
          },
          "occurrence": {
            "$ref": "#/components/schemas/RecencyOccurrence"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Recency` type.)\n\nBasing cohort on recency of event\n"
      },
      "RecodeConfig": {
        "type": "object",
        "properties": {
          "map": {
            "type": "object",
            "description": "A mapping of source values to target values",
            "example": {
              "a": 1,
              "b": 2
            }
          },
          "sql": {
            "type": "string",
            "description": "SQL expression for transformation",
            "example": "SELECT * FROM table"
          }
        },
        "additionalProperties": false,
        "description": "Configuration for recode transformations."
      },
      "Recommender": {
        "type": "object",
        "required": [
          "created_at",
          "id",
          "name",
          "resource_type",
          "status",
          "stream_name",
          "stream_property_name",
          "updated_at"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this recommender. Each recommender must have a unique name.",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "predictors": {
            "$ref": "#/components/schemas/RecommenderPredictors"
          },
          "preview": {
            "type": "boolean",
            "description": "A recommender in preview mode will not build until preview is turned off.\n",
            "example": true
          },
          "report_url": {
            "type": "string",
            "description": "URL of an HTML report containing information such as the objective of the model, performance, and important features."
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource."
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "stream_name": {
            "type": "string",
            "description": "Name of the stream to use for recommendations",
            "example": "orders"
          },
          "stream_property_name": {
            "type": "string",
            "description": "Name of the stream property",
            "example": "product"
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Recommender resources are used to predict future associations (e.g. future purchase). They are based on an event stream containing all previous associations such as an order event stream or a product rating event stream\n\nThis feature is experimental and subject to change. To enable this feature, contact your account manager.\n"
      },
      "RecommenderAnalysis": {
        "type": "object",
        "properties": {
          "overall_features": {
            "type": "object",
            "properties": {
              "new_and_recognized_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RecommenderFeatureData"
                }
              },
              "new_and_unrecognized_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RecommenderFeatureData"
                }
              },
              "repeat_and_recognized_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RecommenderFeatureData"
                }
              },
              "repeat_and_unrecognized_individuals": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RecommenderFeatureData"
                }
              }
            }
          },
          "performance": {
            "type": "object",
            "required": [
              "meta_model"
            ],
            "properties": {
              "meta_model": {
                "type": "object",
                "required": [
                  "overall"
                ],
                "properties": {
                  "new_and_recognized_individuals": {
                    "$ref": "#/components/schemas/RecommenderPerformanceModel"
                  },
                  "new_and_unrecognized_individuals": {
                    "$ref": "#/components/schemas/RecommenderPerformanceModel"
                  },
                  "overall": {
                    "$ref": "#/components/schemas/RecommenderPerformanceModel"
                  },
                  "repeat_and_recognized_individuals": {
                    "$ref": "#/components/schemas/RecommenderPerformanceModel"
                  },
                  "repeat_and_unrecognized_individuals": {
                    "$ref": "#/components/schemas/RecommenderPerformanceModel"
                  }
                }
              }
            }
          }
        }
      },
      "RecommenderAnalysisAccuracyThreshold": {
        "type": "object",
        "required": [
          "accuracy",
          "threshold"
        ],
        "properties": {
          "accuracy": {
            "type": "number",
            "description": "The cumulative accuracy of the model at the given threshold.",
            "example": 0.35
          },
          "threshold": {
            "type": "number",
            "description": "The threshold (i.e. top N recommendations to consider) to evaluate the model's accuracy.\n\nFor example, if the threshold is 10, the model's accuracy is calculated by considering the top 10 recommendations.\nThat is what proportion of the top 10 recommendations for each identity contains the true label.\n\nNote: the threshold is an integer value ranging from 1 to the number of properties.\n"
          }
        }
      },
      "RecommenderAnalysisPropertyDistribution": {
        "type": "object",
        "required": [
          "avg_rank",
          "property",
          "proportion"
        ],
        "properties": {
          "avg_rank": {
            "type": "number",
            "description": "Average rank of a given property in the cross-validation dataset.",
            "example": 1.23
          },
          "avg_rank_true_label": {
            "type": "number",
            "description": "Average rank of the true label in the cross-validation dataset for a given property.",
            "example": 1.23
          },
          "property": {
            "type": "string",
            "description": "Name of a property."
          },
          "proportion": {
            "type": "number",
            "description": "Fraction of the cross-validation identities assigned a given property as top property.",
            "example": 0.17
          }
        }
      },
      "RecommenderAnalysisRocCurvePoint": {
        "type": "object",
        "required": [
          "x",
          "y"
        ],
        "properties": {
          "x": {
            "type": "number",
            "description": "A given false positive rate.",
            "example": 0.5
          },
          "y": {
            "type": "number",
            "description": "The estimated true positive rate corresponding to `x`.",
            "example": 0.75
          }
        },
        "description": "Data to construct a ROC curve. Each point consists of a false positive rate `x`, an estimated true positive rate `y` corresponding to `x`. Note that y is the mean value of the true positive rate across all cross-validation folds."
      },
      "RecommenderFeatureData": {
        "type": "object",
        "required": [
          "name",
          "type",
          "category",
          "literate",
          "importance",
          "directionality"
        ],
        "properties": {
          "category": {
            "type": "string",
            "description": "The category of the feature."
          },
          "directionality": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisFeatureDirectionality"
            }
          },
          "importance": {
            "type": "number",
            "description": "The importance of the feature"
          },
          "literate": {
            "type": "string",
            "description": "The human-readable description of the feature."
          },
          "name": {
            "type": "string",
            "description": "The identifier for the feature."
          },
          "type": {
            "type": "string",
            "description": "The human-readable name of the feature."
          }
        }
      },
      "RecommenderMergePatch": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable label for this recommender. Each recommender must have a unique name.",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "predictors": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/RecommenderPredictorsMergePatch"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "preview": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A recommender in preview mode will not build until preview is turned off.\n"
          },
          "stream_name": {
            "type": "string",
            "description": "Name of the stream to use for recommendations",
            "example": "orders"
          },
          "stream_property_name": {
            "type": "string",
            "description": "Name of the stream property",
            "example": "product"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Recommender` type.)\n\nRecommender resources are used to predict future associations (e.g. future purchase). They are based on an event stream containing all previous associations such as an order event stream or a product rating event stream\n\nThis feature is experimental and subject to change. To enable this feature, contact your account manager.\n"
      },
      "RecommenderPerformanceModel": {
        "type": "object",
        "required": [
          "roc_auc",
          "roc_curve",
          "property_distribution",
          "accuracy_per_threshold"
        ],
        "properties": {
          "accuracy_per_threshold": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecommenderAnalysisAccuracyThreshold"
            }
          },
          "avg_rank_true_label": {
            "type": "number",
            "description": "Average rank of the true label in the cross-validation dataset for a given property.",
            "example": 1.23
          },
          "property_distribution": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecommenderAnalysisPropertyDistribution"
            }
          },
          "roc_auc": {
            "type": "number",
            "description": "The area under the receiver operating characteristic curve.",
            "example": 0.75,
            "maximum": 1,
            "minimum": 0
          },
          "roc_curve": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisRocCurvePoint"
            }
          }
        }
      },
      "RecommenderPost": {
        "type": "object",
        "required": [
          "name",
          "stream_name",
          "stream_property_name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable label for this recommender. Each recommender must have a unique name.",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "predictors": {
            "$ref": "#/components/schemas/RecommenderPredictorsPost"
          },
          "preview": {
            "type": "boolean",
            "description": "A recommender in preview mode will not build until preview is turned off.\n",
            "example": true
          },
          "stream_name": {
            "type": "string",
            "description": "Name of the stream to use for recommendations",
            "example": "orders"
          },
          "stream_property_name": {
            "type": "string",
            "description": "Name of the stream property",
            "example": "product"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Recommender` type.)\n\nRecommender resources are used to predict future associations (e.g. future purchase). They are based on an event stream containing all previous associations such as an order event stream or a product rating event stream\n\nThis feature is experimental and subject to change. To enable this feature, contact your account manager.\n"
      },
      "RecommenderPredictors": {
        "type": "object",
        "properties": {
          "max_observation_date": {
            "type": "string",
            "description": "The maximum date for FIG attribute observations used during modeling. When set, only attribute data observed on or before this date will be used. If not set, the freshest available data is used.\n",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "description": "Provides control over the features used during modeling for a recommender.\n"
      },
      "RecommenderPredictorsMergePatch": {
        "type": "object",
        "properties": {
          "max_observation_date": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "date"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The maximum date for FIG attribute observations used during modeling. When set, only attribute data observed on or before this date will be used. If not set, the freshest available data is used.\n"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `RecommenderPredictors` type.)\n\nProvides control over the features used during modeling for a recommender.\n"
      },
      "RecommenderPredictorsPost": {
        "type": "object",
        "properties": {
          "max_observation_date": {
            "type": "string",
            "description": "The maximum date for FIG attribute observations used during modeling. When set, only attribute data observed on or before this date will be used. If not set, the freshest available data is used.\n",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `RecommenderPredictors` type.)\n\nProvides control over the features used during modeling for a recommender.\n"
      },
      "RecommenderPredictorsPut": {
        "type": "object",
        "properties": {
          "max_observation_date": {
            "type": "string",
            "description": "The maximum date for FIG attribute observations used during modeling. When set, only attribute data observed on or before this date will be used. If not set, the freshest available data is used.\n",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `RecommenderPredictors` type.)\n\nProvides control over the features used during modeling for a recommender.\n"
      },
      "RecommenderPut": {
        "type": "object",
        "required": [
          "name",
          "stream_name",
          "stream_property_name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable label for this recommender. Each recommender must have a unique name.",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "predictors": {
            "$ref": "#/components/schemas/RecommenderPredictorsPut"
          },
          "preview": {
            "type": "boolean",
            "description": "A recommender in preview mode will not build until preview is turned off.\n",
            "example": true
          },
          "stream_name": {
            "type": "string",
            "description": "Name of the stream to use for recommendations",
            "example": "orders"
          },
          "stream_property_name": {
            "type": "string",
            "description": "Name of the stream property",
            "example": "product"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Recommender` type.)\n\nRecommender resources are used to predict future associations (e.g. future purchase). They are based on an event stream containing all previous associations such as an order event stream or a product rating event stream\n\nThis feature is experimental and subject to change. To enable this feature, contact your account manager.\n"
      },
      "Resource": {
        "type": "object",
        "required": [
          "created_at",
          "id",
          "resource_type",
          "status",
          "updated_at"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource."
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Fields shared between all resource types."
      },
      "ResourceStatus": {
        "type": "string",
        "description": "The current state of this resource and any updates.",
        "example": "pending",
        "enum": [
          "new",
          "starting",
          "running",
          "ready",
          "error"
        ]
      },
      "ResourceType": {
        "type": "string",
        "description": "The type of a resource which is available via the REST SDK.",
        "example": "scopes",
        "enum": [
          "accounts",
          "atlases",
          "attributes",
          "cohorts",
          "connections",
          "datasets",
          "feature_stores",
          "market_opportunity_analyses",
          "migrations",
          "outcomes",
          "persona_sets",
          "places",
          "recommenders",
          "scopes",
          "streams",
          "targets",
          "traits"
        ]
      },
      "RotateCredentialsRequest": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/SnowflakeRotateCredentialsRequest"
          },
          {
            "$ref": "#/components/schemas/ClickHouseRotateCredentialsRequest"
          }
        ],
        "description": "Request to rotate credentials for a connection. Uses a type discriminator to support\ndifferent credential rotation options for different connection types.\n",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "clickhouse": "#/components/schemas/ClickHouseRotateCredentialsRequest",
            "snowflake": "#/components/schemas/SnowflakeRotateCredentialsRequest"
          }
        }
      },
      "Scope": {
        "type": "object",
        "required": [
          "created_at",
          "id",
          "name",
          "payload",
          "population",
          "preview",
          "resource_type",
          "status",
          "updated_at"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "columns": {
            "$ref": "#/components/schemas/ScopeColumns"
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "example": "8e63467d-9478-4fba-b05a-d5e98fd06d12",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "Human-readable label for this scope. Each scope must have a unique name.",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "payload": {
            "$ref": "#/components/schemas/ScopePayload"
          },
          "population": {
            "$ref": "#/components/schemas/ScopePopulation"
          },
          "population_count": {
            "type": "integer",
            "description": "Count of the population. If a person appears in multiple cohorts, they are only counted once."
          },
          "population_residence_count": {
            "type": "integer",
            "description": "Residence count of the population. If a residence appears in multiple cohorts, it is only counted once."
          },
          "preview": {
            "type": "boolean",
            "description": "A preview scope provides only a limited number of output records, but\nit is not billed.\n",
            "example": true
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource.",
            "example": "scopes"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Instructions on how to produce output data."
      },
      "ScopeAnalysis": {
        "type": "object",
        "properties": {
          "outcomes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScopeAnalysisPayloadResource"
            }
          },
          "recommenders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScopeAnalysisPayloadResource"
            }
          }
        }
      },
      "ScopeAnalysisPayloadResource": {
        "type": "object",
        "required": [
          "id",
          "probability_distribution"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "probability_distribution": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScopeAnalysisProbabilityDistributionDatum"
            }
          }
        }
      },
      "ScopeAnalysisProbabilityDistributionDatum": {
        "type": "object",
        "required": [
          "scope",
          "eligible",
          "bin_index",
          "bin_mid_point"
        ],
        "properties": {
          "bin_index": {
            "type": "integer",
            "maximum": 100,
            "minimum": 1
          },
          "bin_mid_point": {
            "type": "number"
          },
          "eligible": {
            "type": "number",
            "description": "Individual-level proportion of the eligible population in this bin."
          },
          "eligible_individuals_count": {
            "type": "integer",
            "description": "Count of distinct individuals from the eligible population in this bin."
          },
          "eligible_residences": {
            "type": "number",
            "description": "Residence-level proportion of the eligible population in this bin. Absent when residence-level eligible data is not available for the outcome (a real eligible-residence count is never 0, so absence — not 0 — signals \"no data\")."
          },
          "eligible_residences_count": {
            "type": "integer",
            "description": "Count of distinct residences from the eligible population in this bin. Absent when residence-level eligible data is not available for the outcome."
          },
          "scope": {
            "type": "number",
            "description": "Individual-level proportion of the scope population in this bin."
          },
          "scope_individuals_count": {
            "type": "integer",
            "description": "Count of distinct individuals from the scope in this bin."
          },
          "scope_residences": {
            "type": "number",
            "description": "Residence-level proportion of the scope population in this bin. Absent on analyses produced before residence-level data was introduced."
          },
          "scope_residences_count": {
            "type": "integer",
            "description": "Count of distinct residences from the scope in this bin."
          }
        },
        "description": "One bin of a 100-element probability distribution."
      },
      "ScopeColumns": {
        "type": "object",
        "required": [
          "identity_columns",
          "payload_columns",
          "columns_for_mode"
        ],
        "properties": {
          "columns_for_mode": {
            "type": "object",
            "properties": {
              "aggregated": {
                "$ref": "#/components/schemas/ScopeColumnsForMode"
              },
              "hashed": {
                "$ref": "#/components/schemas/ScopeColumnsForMode"
              },
              "identified": {
                "$ref": "#/components/schemas/ScopeColumnsForMode"
              },
              "referenced": {
                "$ref": "#/components/schemas/ScopeColumnsForMode"
              }
            },
            "additionalProperties": false,
            "description": "Available columns for different modes of target export."
          },
          "identity_columns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "First party identifiers from all dataset `identity_sets` populating this scope."
          },
          "payload_columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScopePayloadColumn"
            },
            "description": "Payload columns. The shape is a 1:1 mapping of machine-readable payload column names to human-readable column names."
          }
        },
        "additionalProperties": false,
        "description": "Metadata about the columns in this scope. Useful for advanced target configuration."
      },
      "ScopeColumnsForMode": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/TargetStructureTransformation"
        },
        "description": "Available columns for a given mode of target export."
      },
      "ScopeEfficacy": {
        "type": "object",
        "properties": {
          "outcomes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScopeEfficacyOutcome"
            }
          }
        },
        "description": "\nThe efficacy report allows you to measure the performance of Faraday’s predictions in comparison with real conversions. This report can help you assess whether our predictions are performing as expected, and if not, can indicate that something should be looked into.\n\nIn order for an efficacy report to be effective, the pipeline and objective you select should be built using data from an active connection to your data source. Without an active connection, Faraday will be unable to communicate with your data to verify outcome attainment or recommender events over time, which will result in an incomplete report.\n\nThis endpoint’s data is available only for scopes with payload outcomes that include date-based eligible and attainment cohorts. The data is generated monthly, starting from the first month after the scope is created, and is rebuilt on the first day of each month.\n"
      },
      "ScopeEfficacyOutcome": {
        "type": "object",
        "required": [
          "id",
          "months"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID of the outcome in the scope payload.",
            "format": "uuid"
          },
          "months": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScopeEfficacyOutcomeMonth"
            }
          }
        },
        "description": "The report breaks down the outcome’s attainment by month and limited to the most recent 12 month window.\n"
      },
      "ScopeEfficacyOutcomeMonth": {
        "type": "object",
        "required": [
          "month",
          "year",
          "attainment_window",
          "performed",
          "gross_attainments",
          "net_attainments",
          "net_attainments_by_decile"
        ],
        "properties": {
          "attainment_window": {
            "type": "integer",
            "description": "Calculated attainment window for a new outcome. This is only possible for outcomes which have a dated attainment & eligible cohort. The attainment window is the 80th percentile of the weighted time between when a person becomes eligible and when they attain. We weight scores by (1 / <num quarters ago attainment occurred>) so that more recent attainments are more heavily weighted.\n"
          },
          "gross_attainments": {
            "type": "integer"
          },
          "month": {
            "type": "integer"
          },
          "net_attainments": {
            "type": "integer"
          },
          "net_attainments_by_decile": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Breaks down the outcome’s net attainment by decile which represent groups of individuals based on their predicted scores, for example, the top decile are the scorers that fall in the top 10% of scores."
          },
          "performed": {
            "type": "string",
            "description": "How the distribution performed against the outcome's performance reporting.",
            "enum": [
              "equal",
              "greater_than",
              "less_than"
            ]
          },
          "year": {
            "type": "integer"
          }
        }
      },
      "ScopeGeography": {
        "type": "object",
        "properties": {
          "postcodes": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ScopeGeographyArea"
            },
            "description": "Per-postcode breakdown, keyed by postcode. Omitted when the scope spans more than 250 distinct postcodes."
          },
          "states": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ScopeGeographyArea"
            },
            "description": "Per-state breakdown, keyed by state."
          }
        },
        "description": "Geographic breakdown of the scope population by state and postcode. Both fields are absent until the analysis has run for the scope, in which case the response is `{}`."
      },
      "ScopeGeographyArea": {
        "type": "object",
        "required": [
          "individuals",
          "residences",
          "cohorts"
        ],
        "properties": {
          "cohorts": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ScopeGeographyCohort"
            }
          },
          "individuals": {
            "type": "integer"
          },
          "residences": {
            "type": "integer"
          }
        },
        "description": "Counts for one geographic bucket (a postcode or state), including a per-payload-cohort breakdown."
      },
      "ScopeGeographyCohort": {
        "type": "object",
        "required": [
          "individuals",
          "residences"
        ],
        "properties": {
          "individuals": {
            "type": "integer"
          },
          "residences": {
            "type": "integer"
          }
        },
        "description": "Per-cohort counts within a geographic bucket."
      },
      "ScopeMergePatch": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable label for this scope. Each scope must have a unique name.",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "payload": {
            "$ref": "#/components/schemas/ScopePayloadMergePatch"
          },
          "population": {
            "$ref": "#/components/schemas/ScopePopulationMergePatch"
          },
          "preview": {
            "type": "boolean",
            "description": "A preview scope provides only a limited number of output records, but\nit is not billed.\n",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Scope` type.)\n\nInstructions on how to produce output data."
      },
      "ScopePayload": {
        "type": "object",
        "properties": {
          "attributes": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "fig/age",
              "pattern": "^(fig/)?[a-z][a-z0-9_]+$"
            },
            "description": "Include additional traits.\n\nFor traits created through `output_to_traits` via `/datasets`, specify the trait name.\n\nFor traits from Faraday's Internal Graph (FIG), specify the name prefixed by `fig/` ex. `fig/age`.\n"
          },
          "cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
              "format": "uuid"
            },
            "description": "Specify a list of cohort membership(s) to include. The list can include any cohort, not just those in `population.cohort_ids`."
          },
          "explainability": {
            "type": "boolean",
            "description": "Opt-in to include prediction explainability."
          },
          "location": {
            "$ref": "#/components/schemas/ScopePayloadLocation",
            "description": "Include each person's proximity to the locations of one or more atlases.\n\nDistances are measured to the nearest edge of a location's geometry and published in the unit set by `distance_output_units`. The distance bounds in `conditions` are always in meters.\n"
          },
          "max_attribute_observation_date": {
            "type": "string",
            "description": "The maximum date for FIG attribute observations used in the scope payload. When set, only attribute data observed on or before this date will be included. If not set, the freshest available data is used.\n",
            "format": "date"
          },
          "outcome_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
              "format": "uuid"
            },
            "description": "Include the propensity score(s) from the specified outcome(s)."
          },
          "persona_set_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "4b3f42dd-b6c3-4f0f-ac18-9e6e47321f83",
              "format": "uuid"
            },
            "description": "Include the persona assignment(s) from the specified persona set(s). Personas are assigned to everyone in the population matched at the individual or address level, including address-level people who were not used to build the persona set."
          },
          "recommender_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "b4f9c92c-b0e5-4626-9674-e8f88e5adb62",
              "format": "uuid"
            },
            "description": "Include the recommendation(s) from the specified recommender(s).\n\nThis feature is experimental and subject to change. To enable this feature, contact your account manager.\n"
          }
        },
        "additionalProperties": false,
        "description": "The data to include for each person in this scope."
      },
      "ScopePayloadColumn": {
        "type": "object",
        "required": [
          "name",
          "human_name"
        ],
        "properties": {
          "human_name": {
            "type": "string",
            "description": "Human-readable column name"
          },
          "name": {
            "type": "string",
            "description": "Machine-readable column name"
          }
        },
        "description": "Scope payload column metadata"
      },
      "ScopePayloadLocation": {
        "type": "object",
        "properties": {
          "conditions": {
            "$ref": "#/components/schemas/ScopePayloadLocationConditions",
            "description": "Which atlas locations each person is matched against, and the distance bounds for a match. If absent, each person is matched against every location in the account's atlases at any distance.\n"
          },
          "distance_output_units": {
            "type": "string",
            "description": "The unit `fdy_location_distance` is published in. Defaults to `meters`. `max_distance` and `min_distance` are always given in meters, whatever this is set to.\n\nChanging the unit on a scope that already feeds a target changes that column's values on the target's next build.\n",
            "example": "miles",
            "default": "meters",
            "enum": [
              "meters",
              "miles"
            ]
          },
          "select": {
            "type": "string",
            "description": "Whether to include only the nearest matching location for each person, or every matching location. `all` requires `max_distance`.\n\nThe choice sets the shape of the three location columns in the scope payload — `fdy_location_name`, `fdy_location_reference_key` and `fdy_location_distance`. Under `nearest` each column holds a single scalar describing that one location. Under `all` each column holds a JSON array ordered nearest first, and the three arrays are index-aligned: the i-th element of each describes the same location. `fdy_location_distance` is therefore a number under `nearest` and text under `all`, so any target already receiving these columns must be rebuilt after the choice changes. A person matching no location has no location data: all three columns are empty under either choice, rather than holding an empty array.\n",
            "example": "nearest",
            "enum": [
              "nearest",
              "all"
            ]
          }
        },
        "additionalProperties": false,
        "description": "Include each person's proximity to the locations of one or more atlases.\n\nDistances are measured to the nearest edge of a location's geometry and published in the unit set by `distance_output_units`. The distance bounds in `conditions` are always in meters.\n"
      },
      "ScopePayloadLocationConditions": {
        "type": "object",
        "properties": {
          "atlas_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "4c6c0f1e-0a58-4f1a-9c8a-52a1a1a3f5b7",
              "format": "uuid"
            },
            "description": "The atlases whose locations each person is matched against.\n\nIf this is empty or absent, every atlas in the account is used.\n"
          },
          "location_reference_keys": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "store-042"
            },
            "description": "Match each person only against the locations carrying these reference keys.\n\nA reference key is unique only within one atlas, so these keys are matched in every atlas each person is matched against. Select a single atlas to restrict them to that atlas' keys.\n"
          },
          "max_distance": {
            "type": "integer",
            "description": "A person only matches a location if they are no further than this many meters from it.",
            "example": 8000,
            "minimum": 0
          },
          "min_distance": {
            "type": "integer",
            "description": "A person only matches a location if they are at least this many meters from it.",
            "example": 100,
            "minimum": 0
          },
          "property_conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LocationPropertyCondition"
            },
            "description": "Match each person only against the locations whose properties satisfy these conditions."
          }
        },
        "additionalProperties": false,
        "description": "Which atlas locations each person is matched against, and the distance bounds for a match. If absent, each person is matched against every location in the account's atlases at any distance.\n"
      },
      "ScopePayloadLocationConditionsMergePatch": {
        "type": "object",
        "properties": {
          "atlas_ids": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "4c6c0f1e-0a58-4f1a-9c8a-52a1a1a3f5b7",
                  "format": "uuid"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The atlases whose locations each person is matched against.\n\nIf this is empty or absent, every atlas in the account is used.\n"
          },
          "location_reference_keys": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "store-042"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Match each person only against the locations carrying these reference keys.\n\nA reference key is unique only within one atlas, so these keys are matched in every atlas each person is matched against. Select a single atlas to restrict them to that atlas' keys.\n"
          },
          "max_distance": {
            "oneOf": [
              {
                "type": "integer",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": 8000,
                "minimum": 0
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A person only matches a location if they are no further than this many meters from it."
          },
          "min_distance": {
            "oneOf": [
              {
                "type": "integer",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": 100,
                "minimum": 0
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A person only matches a location if they are at least this many meters from it."
          },
          "property_conditions": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LocationPropertyCondition"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Match each person only against the locations whose properties satisfy these conditions."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ScopePayloadLocationConditions` type.)\n\nWhich atlas locations each person is matched against, and the distance bounds for a match. If absent, each person is matched against every location in the account's atlases at any distance.\n"
      },
      "ScopePayloadLocationConditionsPost": {
        "type": "object",
        "properties": {
          "atlas_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "4c6c0f1e-0a58-4f1a-9c8a-52a1a1a3f5b7",
              "format": "uuid"
            },
            "description": "The atlases whose locations each person is matched against.\n\nIf this is empty or absent, every atlas in the account is used.\n"
          },
          "location_reference_keys": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "store-042"
            },
            "description": "Match each person only against the locations carrying these reference keys.\n\nA reference key is unique only within one atlas, so these keys are matched in every atlas each person is matched against. Select a single atlas to restrict them to that atlas' keys.\n"
          },
          "max_distance": {
            "type": "integer",
            "description": "A person only matches a location if they are no further than this many meters from it.",
            "example": 8000,
            "minimum": 0
          },
          "min_distance": {
            "type": "integer",
            "description": "A person only matches a location if they are at least this many meters from it.",
            "example": 100,
            "minimum": 0
          },
          "property_conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LocationPropertyCondition"
            },
            "description": "Match each person only against the locations whose properties satisfy these conditions."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ScopePayloadLocationConditions` type.)\n\nWhich atlas locations each person is matched against, and the distance bounds for a match. If absent, each person is matched against every location in the account's atlases at any distance.\n"
      },
      "ScopePayloadLocationConditionsPut": {
        "type": "object",
        "properties": {
          "atlas_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "4c6c0f1e-0a58-4f1a-9c8a-52a1a1a3f5b7",
              "format": "uuid"
            },
            "description": "The atlases whose locations each person is matched against.\n\nIf this is empty or absent, every atlas in the account is used.\n"
          },
          "location_reference_keys": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "store-042"
            },
            "description": "Match each person only against the locations carrying these reference keys.\n\nA reference key is unique only within one atlas, so these keys are matched in every atlas each person is matched against. Select a single atlas to restrict them to that atlas' keys.\n"
          },
          "max_distance": {
            "type": "integer",
            "description": "A person only matches a location if they are no further than this many meters from it.",
            "example": 8000,
            "minimum": 0
          },
          "min_distance": {
            "type": "integer",
            "description": "A person only matches a location if they are at least this many meters from it.",
            "example": 100,
            "minimum": 0
          },
          "property_conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LocationPropertyCondition"
            },
            "description": "Match each person only against the locations whose properties satisfy these conditions."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ScopePayloadLocationConditions` type.)\n\nWhich atlas locations each person is matched against, and the distance bounds for a match. If absent, each person is matched against every location in the account's atlases at any distance.\n"
      },
      "ScopePayloadLocationMergePatch": {
        "type": "object",
        "properties": {
          "conditions": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ScopePayloadLocationConditionsMergePatch",
                "description": "Which atlas locations each person is matched against, and the distance bounds for a match. If absent, each person is matched against every location in the account's atlases at any distance.\n"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "distance_output_units": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "miles",
                "default": "meters",
                "enum": [
                  "meters",
                  "miles"
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The unit `fdy_location_distance` is published in. Defaults to `meters`. `max_distance` and `min_distance` are always given in meters, whatever this is set to.\n\nChanging the unit on a scope that already feeds a target changes that column's values on the target's next build.\n"
          },
          "select": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "nearest",
                "enum": [
                  "nearest",
                  "all"
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether to include only the nearest matching location for each person, or every matching location. `all` requires `max_distance`.\n\nThe choice sets the shape of the three location columns in the scope payload — `fdy_location_name`, `fdy_location_reference_key` and `fdy_location_distance`. Under `nearest` each column holds a single scalar describing that one location. Under `all` each column holds a JSON array ordered nearest first, and the three arrays are index-aligned: the i-th element of each describes the same location. `fdy_location_distance` is therefore a number under `nearest` and text under `all`, so any target already receiving these columns must be rebuilt after the choice changes. A person matching no location has no location data: all three columns are empty under either choice, rather than holding an empty array.\n"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ScopePayloadLocation` type.)\n\nInclude each person's proximity to the locations of one or more atlases.\n\nDistances are measured to the nearest edge of a location's geometry and published in the unit set by `distance_output_units`. The distance bounds in `conditions` are always in meters.\n"
      },
      "ScopePayloadLocationPost": {
        "type": "object",
        "properties": {
          "conditions": {
            "$ref": "#/components/schemas/ScopePayloadLocationConditionsPost",
            "description": "Which atlas locations each person is matched against, and the distance bounds for a match. If absent, each person is matched against every location in the account's atlases at any distance.\n"
          },
          "distance_output_units": {
            "type": "string",
            "description": "The unit `fdy_location_distance` is published in. Defaults to `meters`. `max_distance` and `min_distance` are always given in meters, whatever this is set to.\n\nChanging the unit on a scope that already feeds a target changes that column's values on the target's next build.\n",
            "example": "miles",
            "default": "meters",
            "enum": [
              "meters",
              "miles"
            ]
          },
          "select": {
            "type": "string",
            "description": "Whether to include only the nearest matching location for each person, or every matching location. `all` requires `max_distance`.\n\nThe choice sets the shape of the three location columns in the scope payload — `fdy_location_name`, `fdy_location_reference_key` and `fdy_location_distance`. Under `nearest` each column holds a single scalar describing that one location. Under `all` each column holds a JSON array ordered nearest first, and the three arrays are index-aligned: the i-th element of each describes the same location. `fdy_location_distance` is therefore a number under `nearest` and text under `all`, so any target already receiving these columns must be rebuilt after the choice changes. A person matching no location has no location data: all three columns are empty under either choice, rather than holding an empty array.\n",
            "example": "nearest",
            "enum": [
              "nearest",
              "all"
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ScopePayloadLocation` type.)\n\nInclude each person's proximity to the locations of one or more atlases.\n\nDistances are measured to the nearest edge of a location's geometry and published in the unit set by `distance_output_units`. The distance bounds in `conditions` are always in meters.\n"
      },
      "ScopePayloadLocationPut": {
        "type": "object",
        "properties": {
          "conditions": {
            "$ref": "#/components/schemas/ScopePayloadLocationConditionsPut",
            "description": "Which atlas locations each person is matched against, and the distance bounds for a match. If absent, each person is matched against every location in the account's atlases at any distance.\n"
          },
          "distance_output_units": {
            "type": "string",
            "description": "The unit `fdy_location_distance` is published in. Defaults to `meters`. `max_distance` and `min_distance` are always given in meters, whatever this is set to.\n\nChanging the unit on a scope that already feeds a target changes that column's values on the target's next build.\n",
            "example": "miles",
            "default": "meters",
            "enum": [
              "meters",
              "miles"
            ]
          },
          "select": {
            "type": "string",
            "description": "Whether to include only the nearest matching location for each person, or every matching location. `all` requires `max_distance`.\n\nThe choice sets the shape of the three location columns in the scope payload — `fdy_location_name`, `fdy_location_reference_key` and `fdy_location_distance`. Under `nearest` each column holds a single scalar describing that one location. Under `all` each column holds a JSON array ordered nearest first, and the three arrays are index-aligned: the i-th element of each describes the same location. `fdy_location_distance` is therefore a number under `nearest` and text under `all`, so any target already receiving these columns must be rebuilt after the choice changes. A person matching no location has no location data: all three columns are empty under either choice, rather than holding an empty array.\n",
            "example": "nearest",
            "enum": [
              "nearest",
              "all"
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ScopePayloadLocation` type.)\n\nInclude each person's proximity to the locations of one or more atlases.\n\nDistances are measured to the nearest edge of a location's geometry and published in the unit set by `distance_output_units`. The distance bounds in `conditions` are always in meters.\n"
      },
      "ScopePayloadMergePatch": {
        "type": "object",
        "properties": {
          "attributes": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "fig/age",
                  "pattern": "^(fig/)?[a-z][a-z0-9_]+$"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Include additional traits.\n\nFor traits created through `output_to_traits` via `/datasets`, specify the trait name.\n\nFor traits from Faraday's Internal Graph (FIG), specify the name prefixed by `fig/` ex. `fig/age`.\n"
          },
          "cohort_ids": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
                  "format": "uuid"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Specify a list of cohort membership(s) to include. The list can include any cohort, not just those in `population.cohort_ids`."
          },
          "explainability": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Opt-in to include prediction explainability."
          },
          "location": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ScopePayloadLocationMergePatch",
                "description": "Include each person's proximity to the locations of one or more atlases.\n\nDistances are measured to the nearest edge of a location's geometry and published in the unit set by `distance_output_units`. The distance bounds in `conditions` are always in meters.\n"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "max_attribute_observation_date": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "date"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The maximum date for FIG attribute observations used in the scope payload. When set, only attribute data observed on or before this date will be included. If not set, the freshest available data is used.\n"
          },
          "outcome_ids": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
                  "format": "uuid"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Include the propensity score(s) from the specified outcome(s)."
          },
          "persona_set_ids": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "4b3f42dd-b6c3-4f0f-ac18-9e6e47321f83",
                  "format": "uuid"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Include the persona assignment(s) from the specified persona set(s). Personas are assigned to everyone in the population matched at the individual or address level, including address-level people who were not used to build the persona set."
          },
          "recommender_ids": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "b4f9c92c-b0e5-4626-9674-e8f88e5adb62",
                  "format": "uuid"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Include the recommendation(s) from the specified recommender(s).\n\nThis feature is experimental and subject to change. To enable this feature, contact your account manager.\n"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ScopePayload` type.)\n\nThe data to include for each person in this scope."
      },
      "ScopePayloadPost": {
        "type": "object",
        "properties": {
          "attributes": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "fig/age",
              "pattern": "^(fig/)?[a-z][a-z0-9_]+$"
            },
            "description": "Include additional traits.\n\nFor traits created through `output_to_traits` via `/datasets`, specify the trait name.\n\nFor traits from Faraday's Internal Graph (FIG), specify the name prefixed by `fig/` ex. `fig/age`.\n"
          },
          "cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
              "format": "uuid"
            },
            "description": "Specify a list of cohort membership(s) to include. The list can include any cohort, not just those in `population.cohort_ids`."
          },
          "explainability": {
            "type": "boolean",
            "description": "Opt-in to include prediction explainability."
          },
          "location": {
            "$ref": "#/components/schemas/ScopePayloadLocationPost",
            "description": "Include each person's proximity to the locations of one or more atlases.\n\nDistances are measured to the nearest edge of a location's geometry and published in the unit set by `distance_output_units`. The distance bounds in `conditions` are always in meters.\n"
          },
          "max_attribute_observation_date": {
            "type": "string",
            "description": "The maximum date for FIG attribute observations used in the scope payload. When set, only attribute data observed on or before this date will be included. If not set, the freshest available data is used.\n",
            "format": "date"
          },
          "outcome_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
              "format": "uuid"
            },
            "description": "Include the propensity score(s) from the specified outcome(s)."
          },
          "persona_set_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "4b3f42dd-b6c3-4f0f-ac18-9e6e47321f83",
              "format": "uuid"
            },
            "description": "Include the persona assignment(s) from the specified persona set(s). Personas are assigned to everyone in the population matched at the individual or address level, including address-level people who were not used to build the persona set."
          },
          "recommender_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "b4f9c92c-b0e5-4626-9674-e8f88e5adb62",
              "format": "uuid"
            },
            "description": "Include the recommendation(s) from the specified recommender(s).\n\nThis feature is experimental and subject to change. To enable this feature, contact your account manager.\n"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ScopePayload` type.)\n\nThe data to include for each person in this scope."
      },
      "ScopePayloadPut": {
        "type": "object",
        "properties": {
          "attributes": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "fig/age",
              "pattern": "^(fig/)?[a-z][a-z0-9_]+$"
            },
            "description": "Include additional traits.\n\nFor traits created through `output_to_traits` via `/datasets`, specify the trait name.\n\nFor traits from Faraday's Internal Graph (FIG), specify the name prefixed by `fig/` ex. `fig/age`.\n"
          },
          "cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
              "format": "uuid"
            },
            "description": "Specify a list of cohort membership(s) to include. The list can include any cohort, not just those in `population.cohort_ids`."
          },
          "explainability": {
            "type": "boolean",
            "description": "Opt-in to include prediction explainability."
          },
          "location": {
            "$ref": "#/components/schemas/ScopePayloadLocationPut",
            "description": "Include each person's proximity to the locations of one or more atlases.\n\nDistances are measured to the nearest edge of a location's geometry and published in the unit set by `distance_output_units`. The distance bounds in `conditions` are always in meters.\n"
          },
          "max_attribute_observation_date": {
            "type": "string",
            "description": "The maximum date for FIG attribute observations used in the scope payload. When set, only attribute data observed on or before this date will be included. If not set, the freshest available data is used.\n",
            "format": "date"
          },
          "outcome_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
              "format": "uuid"
            },
            "description": "Include the propensity score(s) from the specified outcome(s)."
          },
          "persona_set_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "4b3f42dd-b6c3-4f0f-ac18-9e6e47321f83",
              "format": "uuid"
            },
            "description": "Include the persona assignment(s) from the specified persona set(s). Personas are assigned to everyone in the population matched at the individual or address level, including address-level people who were not used to build the persona set."
          },
          "recommender_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "b4f9c92c-b0e5-4626-9674-e8f88e5adb62",
              "format": "uuid"
            },
            "description": "Include the recommendation(s) from the specified recommender(s).\n\nThis feature is experimental and subject to change. To enable this feature, contact your account manager.\n"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ScopePayload` type.)\n\nThe data to include for each person in this scope."
      },
      "ScopePopulation": {
        "type": "object",
        "required": [
          "cohort_ids"
        ],
        "properties": {
          "cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
              "format": "uuid"
            },
            "description": "Include people from the specified cohorts in this scope."
          },
          "exclusion_address_level_cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "54270059-c9b5-42c6-a728-36b69a1cf3d8",
              "format": "uuid"
            },
            "description": "Exclude every individual who shares an address with any individual in the specified cohorts."
          },
          "exclusion_cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "54270059-c9b5-42c6-a728-36b69a1cf3d8",
              "format": "uuid"
            },
            "description": "Exclude people from the specified cohorts in this scope."
          }
        },
        "additionalProperties": false,
        "description": "The people to include in a scope. Leave `cohort_ids` empty to include the entire US population."
      },
      "ScopePopulationMergePatch": {
        "type": "object",
        "properties": {
          "cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
              "format": "uuid"
            },
            "description": "Include people from the specified cohorts in this scope."
          },
          "exclusion_address_level_cohort_ids": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "54270059-c9b5-42c6-a728-36b69a1cf3d8",
                  "format": "uuid"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Exclude every individual who shares an address with any individual in the specified cohorts."
          },
          "exclusion_cohort_ids": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "54270059-c9b5-42c6-a728-36b69a1cf3d8",
                  "format": "uuid"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Exclude people from the specified cohorts in this scope."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `ScopePopulation` type.)\n\nThe people to include in a scope. Leave `cohort_ids` empty to include the entire US population."
      },
      "ScopePopulationPost": {
        "type": "object",
        "required": [
          "cohort_ids"
        ],
        "properties": {
          "cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
              "format": "uuid"
            },
            "description": "Include people from the specified cohorts in this scope."
          },
          "exclusion_address_level_cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "54270059-c9b5-42c6-a728-36b69a1cf3d8",
              "format": "uuid"
            },
            "description": "Exclude every individual who shares an address with any individual in the specified cohorts."
          },
          "exclusion_cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "54270059-c9b5-42c6-a728-36b69a1cf3d8",
              "format": "uuid"
            },
            "description": "Exclude people from the specified cohorts in this scope."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `ScopePopulation` type.)\n\nThe people to include in a scope. Leave `cohort_ids` empty to include the entire US population."
      },
      "ScopePopulationPut": {
        "type": "object",
        "required": [
          "cohort_ids"
        ],
        "properties": {
          "cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "5bf9aa70-7bf1-4ef1-a131-8c84441be231",
              "format": "uuid"
            },
            "description": "Include people from the specified cohorts in this scope."
          },
          "exclusion_address_level_cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "54270059-c9b5-42c6-a728-36b69a1cf3d8",
              "format": "uuid"
            },
            "description": "Exclude every individual who shares an address with any individual in the specified cohorts."
          },
          "exclusion_cohort_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "54270059-c9b5-42c6-a728-36b69a1cf3d8",
              "format": "uuid"
            },
            "description": "Exclude people from the specified cohorts in this scope."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `ScopePopulation` type.)\n\nThe people to include in a scope. Leave `cohort_ids` empty to include the entire US population."
      },
      "ScopePost": {
        "type": "object",
        "required": [
          "name",
          "payload",
          "population",
          "preview"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable label for this scope. Each scope must have a unique name.",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "payload": {
            "$ref": "#/components/schemas/ScopePayloadPost"
          },
          "population": {
            "$ref": "#/components/schemas/ScopePopulationPost"
          },
          "preview": {
            "type": "boolean",
            "description": "A preview scope provides only a limited number of output records, but\nit is not billed.\n",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Scope` type.)\n\nInstructions on how to produce output data."
      },
      "ScopePut": {
        "type": "object",
        "required": [
          "name",
          "payload",
          "population",
          "preview"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable label for this scope. Each scope must have a unique name.",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "payload": {
            "$ref": "#/components/schemas/ScopePayloadPut"
          },
          "population": {
            "$ref": "#/components/schemas/ScopePopulationPut"
          },
          "preview": {
            "type": "boolean",
            "description": "A preview scope provides only a limited number of output records, but\nit is not billed.\n",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Scope` type.)\n\nInstructions on how to produce output data."
      },
      "SnowflakeRotateCredentialsRequest": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "example": "snowflake",
            "enum": [
              "snowflake"
            ]
          }
        },
        "additionalProperties": false,
        "description": "Request to rotate RSA keypair credentials for a Snowflake connection.\nCurrently no additional options are required beyond the type discriminator.\n"
      },
      "Stream": {
        "type": "object",
        "required": [
          "created_at",
          "id",
          "name",
          "resource_type",
          "status",
          "updated_at"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "category": {
            "$ref": "#/components/schemas/StreamPropertyCategory",
            "description": "A category describing the type of stream property."
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "deprecated": {
            "type": "boolean",
            "description": "Whether the stream is deprecated.",
            "default": false
          },
          "deprecation_notes": {
            "type": "string",
            "description": "Notes about the deprecation of the stream."
          },
          "description": {
            "type": "string",
            "description": "A description of the stream."
          },
          "event_contribution_by_dataset": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StreamEventContributionByDataset"
            },
            "description": "Details of events emitted by each dataset into the stream."
          },
          "event_count": {
            "type": "integer",
            "description": "Number of events in the stream.",
            "example": 1000
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "example": "eefb0735-6ad6-4611-a832-40bab2968353",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "literate": {
            "type": "string",
            "description": "A human-readable name for the stream."
          },
          "name": {
            "type": "string",
            "example": "orders",
            "maxLength": 64
          },
          "newest_date": {
            "type": "string",
            "description": "Date of the most recent event in the stream.",
            "example": "2022-10-05",
            "format": "date"
          },
          "oldest_date": {
            "type": "string",
            "description": "Date of the first event in the stream.",
            "example": "2022-10-05",
            "format": "date"
          },
          "properties": {
            "$ref": "#/components/schemas/StreamProperties"
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource.",
            "example": "streams"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "tier": {
            "$ref": "#/components/schemas/StreamPropertyTier",
            "description": "A billing tier for the stream property."
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A stream of events associated with the account."
      },
      "StreamAnalysis": {
        "type": "object",
        "properties": {
          "time_series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StreamAnalysisTimeSeriesDatum"
            }
          }
        }
      },
      "StreamAnalysisTimeSeriesDatum": {
        "type": "object",
        "required": [
          "date",
          "count"
        ],
        "properties": {
          "count": {
            "type": "number",
            "description": "The total events emitted within the stream for the given date."
          },
          "date": {
            "type": "string",
            "format": "date"
          }
        }
      },
      "StreamEventContributionByDataset": {
        "type": "object",
        "required": [
          "dataset_id",
          "event_count"
        ],
        "properties": {
          "dataset_id": {
            "type": "string",
            "description": "The dataset the column comes from",
            "format": "uuid"
          },
          "event_count": {
            "type": "integer"
          },
          "newest_date": {
            "type": "string",
            "description": "The most recent event this dataset contributed. Omitted when it contributed no events, and when\nthe stream has no dated data.\n",
            "format": "date"
          },
          "oldest_date": {
            "type": "string",
            "description": "The first event this dataset contributed. Omitted when it contributed no events, and when the\nstream has no dated data.\n",
            "format": "date"
          },
          "parsing": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StreamPropertyParsing"
            },
            "description": "How well this dataset's declared formats were read, one entry per column that declares one.\n\nOmitted when no column in this dataset declares a format for the stream, and for contributions\nmeasured before this was reported. Neither case means every value was read successfully.\n"
          }
        },
        "additionalProperties": false
      },
      "StreamMergePatch": {
        "type": "object",
        "properties": {
          "category": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/StreamPropertyCategory",
                "description": "A category describing the type of stream property."
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "deprecated": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "default": false
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether the stream is deprecated."
          },
          "deprecation_notes": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Notes about the deprecation of the stream."
          },
          "description": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A description of the stream."
          },
          "literate": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A human-readable name for the stream."
          },
          "properties": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/StreamPropertiesMergePatch"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "tier": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/StreamPropertyTier",
                "description": "A billing tier for the stream property."
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Stream` type.)\n\nA stream of events associated with the account."
      },
      "StreamPost": {
        "type": "object",
        "properties": {
          "category": {
            "$ref": "#/components/schemas/StreamPropertyCategory",
            "description": "A category describing the type of stream property."
          },
          "deprecated": {
            "type": "boolean",
            "description": "Whether the stream is deprecated.",
            "default": false
          },
          "deprecation_notes": {
            "type": "string",
            "description": "Notes about the deprecation of the stream."
          },
          "description": {
            "type": "string",
            "description": "A description of the stream."
          },
          "literate": {
            "type": "string",
            "description": "A human-readable name for the stream."
          },
          "properties": {
            "$ref": "#/components/schemas/StreamPropertiesPost"
          },
          "tier": {
            "$ref": "#/components/schemas/StreamPropertyTier",
            "description": "A billing tier for the stream property."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Stream` type.)\n\nA stream of events associated with the account."
      },
      "StreamProperties": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/StreamPropertyDetails",
          "description": "Columns in your data that you want to associate with this event.\n\nThe key is the name of the property, and the value is metadata about the property (breaks, categories, statistical type, etc).\n\nWhen you make a dataset, if you add `output_to_streams``, any column you add to the data map will become a property for that stream.\n"
        }
      },
      "StreamPropertiesMergePatch": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/StreamPropertyDetailsMergePatch"
        },
        "description": "(Parameters used to PATCH the `StreamProperties` type.)\n\nColumns in your data that you want to associate with this event."
      },
      "StreamPropertiesPost": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/StreamPropertyDetailsPost"
        },
        "description": "(Parameters used to POST the `StreamProperties` type.)\n\nColumns in your data that you want to associate with this event."
      },
      "StreamPropertiesPut": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/StreamPropertyDetailsPut"
        },
        "description": "(Parameters used to PUT the `StreamProperties` type.)\n\nColumns in your data that you want to associate with this event."
      },
      "StreamPropertyCategory": {
        "type": "string",
        "description": "A broad category describing the flavor of a stream property.",
        "enum": [
          "fig/demography",
          "fig/environment",
          "fig/geography",
          "fig/identity",
          "fig/lifestyle",
          "fig/life_event",
          "fig/property",
          "fig/reachability",
          "fig/society",
          "fig/financial",
          "fig/vehicles",
          "fig/civic",
          "fig/engagement",
          "user_defined"
        ]
      },
      "StreamPropertyConfig": {
        "type": "object",
        "properties": {
          "column_name": {
            "type": "string",
            "description": "The name of the column in the dataset to use for this property",
            "example": "age_in_years"
          },
          "decode": {
            "$ref": "#/components/schemas/DecodeConfig"
          },
          "recode": {
            "$ref": "#/components/schemas/RecodeConfig"
          },
          "value": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ],
            "description": "A static value for this property (alternative to column_name)",
            "example": "2025-10-01"
          }
        },
        "additionalProperties": false,
        "description": "Configuration for a stream property. Can either reference a column from the dataset with optional transformations, or provide a static value.\n\nEither `column_name` or `value` should be specified, but not both.\n"
      },
      "StreamPropertyDetails": {
        "type": "object",
        "properties": {
          "allowed_values": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "integer"
                },
                {
                  "type": "number"
                },
                {
                  "type": "string"
                }
              ]
            },
            "description": "If values are enumerable, explicitly list allowed values. Values should match the property's type.",
            "example": [
              "low",
              "medium",
              "high"
            ]
          },
          "breaks": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "For continuous data types, list of reasonable cutoff values.",
            "example": [
              1,
              5,
              10,
              15,
              20,
              25,
              30,
              35
            ]
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "For STRING type, list of allowed values.",
            "example": [
              "Large families",
              "Single suburbanites",
              "Single urbanites",
              "Small families",
              "Upper middle class small families"
            ]
          },
          "directionality_interpretation": {
            "type": "string",
            "description": "If applicable, describe the meaning of any directionality in the values.",
            "example": "Higher numbers mean more apparel shopping"
          },
          "distribution": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StreamPropertyDistribution"
            },
            "description": "Counts corresponding to the existing breaks property. Only available when the property is numerical, otherwise empty."
          },
          "emitted_by_datasets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StreamPropertyInputFromDatasets"
            }
          },
          "interpretation_map": {
            "type": "object",
            "description": "For enumerable values, a mapping from value to its interpretation. Key type matches the property type, value is always a string.",
            "example": {
              "1": "Low risk",
              "2": "Medium risk",
              "3": "High risk"
            }
          },
          "null_value_interpretation": {
            "type": "string",
            "description": "If a unary null replacement is not applicable or viable, describe how NULLs should be interpreted when encountered.",
            "example": "Unknown"
          },
          "null_value_replacement": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "If set, value should be coalesced with this replacement to avoid any NULLs.",
            "example": false
          },
          "statistical_type": {
            "$ref": "#/components/schemas/TraitStatisticalType",
            "description": "A string describing the nature of data represented by the trait.\n\ncategorical_nominal: the field contains one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: the field contains one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: the field contains one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: the field contains numeric values with a natural ordering. Example: \"lifetime_value\".\n\nDeprecated values (still accepted): categorical, multicategorical, ordinal, nominal. See the TraitStatisticalType schema for type compatibility constraints and deprecation equivalences.\n"
          },
          "type": {
            "$ref": "#/components/schemas/PrimitiveDataType",
            "description": "What type of data this field contains."
          },
          "unit": {
            "type": "string",
            "description": "For numeric types, in what units is the data stored.",
            "example": "dollars"
          },
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StreamPropertyValues"
            },
            "description": "Top 100 observed values of this property. Only available when the property is categorical or multicategorical, otherwise empty."
          }
        },
        "additionalProperties": false
      },
      "StreamPropertyDetailsMergePatch": {
        "type": "object",
        "properties": {
          "allowed_values": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "integer"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": [
                  "low",
                  "medium",
                  "high"
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "If values are enumerable, explicitly list allowed values. Values should match the property's type."
          },
          "directionality_interpretation": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "Higher numbers mean more apparel shopping"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "If applicable, describe the meaning of any directionality in the values."
          },
          "interpretation_map": {
            "oneOf": [
              {
                "type": "object",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": {
                  "1": "Low risk",
                  "2": "Medium risk",
                  "3": "High risk"
                }
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "For enumerable values, a mapping from value to its interpretation. Key type matches the property type, value is always a string."
          },
          "null_value_interpretation": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "Unknown"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "If a unary null replacement is not applicable or viable, describe how NULLs should be interpreted when encountered."
          },
          "null_value_replacement": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "If set, value should be coalesced with this replacement to avoid any NULLs.",
            "example": false
          },
          "statistical_type": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TraitStatisticalType",
                "description": "A string describing the nature of data represented by the trait.\n\ncategorical_nominal: the field contains one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: the field contains one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: the field contains one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: the field contains numeric values with a natural ordering. Example: \"lifetime_value\".\n\nDeprecated values (still accepted): categorical, multicategorical, ordinal, nominal. See the TraitStatisticalType schema for type compatibility constraints and deprecation equivalences.\n"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "type": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PrimitiveDataType",
                "description": "What type of data this field contains."
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "unit": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "dollars"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "For numeric types, in what units is the data stored."
          }
        },
        "additionalProperties": false
      },
      "StreamPropertyDetailsPost": {
        "type": "object",
        "properties": {
          "allowed_values": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "integer"
                },
                {
                  "type": "number"
                },
                {
                  "type": "string"
                }
              ]
            },
            "description": "If values are enumerable, explicitly list allowed values. Values should match the property's type.",
            "example": [
              "low",
              "medium",
              "high"
            ]
          },
          "directionality_interpretation": {
            "type": "string",
            "description": "If applicable, describe the meaning of any directionality in the values.",
            "example": "Higher numbers mean more apparel shopping"
          },
          "interpretation_map": {
            "type": "object",
            "description": "For enumerable values, a mapping from value to its interpretation. Key type matches the property type, value is always a string.",
            "example": {
              "1": "Low risk",
              "2": "Medium risk",
              "3": "High risk"
            }
          },
          "null_value_interpretation": {
            "type": "string",
            "description": "If a unary null replacement is not applicable or viable, describe how NULLs should be interpreted when encountered.",
            "example": "Unknown"
          },
          "null_value_replacement": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "If set, value should be coalesced with this replacement to avoid any NULLs.",
            "example": false
          },
          "statistical_type": {
            "$ref": "#/components/schemas/TraitStatisticalType",
            "description": "A string describing the nature of data represented by the trait.\n\ncategorical_nominal: the field contains one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: the field contains one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: the field contains one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: the field contains numeric values with a natural ordering. Example: \"lifetime_value\".\n\nDeprecated values (still accepted): categorical, multicategorical, ordinal, nominal. See the TraitStatisticalType schema for type compatibility constraints and deprecation equivalences.\n"
          },
          "type": {
            "$ref": "#/components/schemas/PrimitiveDataType",
            "description": "What type of data this field contains."
          },
          "unit": {
            "type": "string",
            "description": "For numeric types, in what units is the data stored.",
            "example": "dollars"
          }
        },
        "additionalProperties": false
      },
      "StreamPropertyDetailsPut": {
        "type": "object",
        "properties": {
          "allowed_values": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "integer"
                },
                {
                  "type": "number"
                },
                {
                  "type": "string"
                }
              ]
            },
            "description": "If values are enumerable, explicitly list allowed values. Values should match the property's type.",
            "example": [
              "low",
              "medium",
              "high"
            ]
          },
          "directionality_interpretation": {
            "type": "string",
            "description": "If applicable, describe the meaning of any directionality in the values.",
            "example": "Higher numbers mean more apparel shopping"
          },
          "interpretation_map": {
            "type": "object",
            "description": "For enumerable values, a mapping from value to its interpretation. Key type matches the property type, value is always a string.",
            "example": {
              "1": "Low risk",
              "2": "Medium risk",
              "3": "High risk"
            }
          },
          "null_value_interpretation": {
            "type": "string",
            "description": "If a unary null replacement is not applicable or viable, describe how NULLs should be interpreted when encountered.",
            "example": "Unknown"
          },
          "null_value_replacement": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "If set, value should be coalesced with this replacement to avoid any NULLs.",
            "example": false
          },
          "statistical_type": {
            "$ref": "#/components/schemas/TraitStatisticalType",
            "description": "A string describing the nature of data represented by the trait.\n\ncategorical_nominal: the field contains one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: the field contains one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: the field contains one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: the field contains numeric values with a natural ordering. Example: \"lifetime_value\".\n\nDeprecated values (still accepted): categorical, multicategorical, ordinal, nominal. See the TraitStatisticalType schema for type compatibility constraints and deprecation equivalences.\n"
          },
          "type": {
            "$ref": "#/components/schemas/PrimitiveDataType",
            "description": "What type of data this field contains."
          },
          "unit": {
            "type": "string",
            "description": "For numeric types, in what units is the data stored.",
            "example": "dollars"
          }
        },
        "additionalProperties": false
      },
      "StreamPropertyDistribution": {
        "type": "object",
        "required": [
          "count",
          "min"
        ],
        "properties": {
          "count": {
            "type": "integer"
          },
          "max": {
            "type": "number",
            "description": "Upper range of the bin (exclusive). May be null for the last bin."
          },
          "min": {
            "type": "number",
            "description": "Lower range of the bin (inclusive)."
          }
        },
        "additionalProperties": false
      },
      "StreamPropertyInputFromDatasets": {
        "type": "object",
        "required": [
          "dataset_id"
        ],
        "properties": {
          "column_name": {
            "type": "string",
            "description": "the column used to populate this property on the event stream"
          },
          "dataset_id": {
            "type": "string",
            "description": "the dataset the column comes from",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "StreamPropertyParsing": {
        "type": "object",
        "required": [
          "candidate_row_count",
          "column_name",
          "format",
          "parsed_row_count",
          "populated_row_count",
          "stale_row_count",
          "stream_property"
        ],
        "properties": {
          "candidate_row_count": {
            "type": "integer",
            "description": "Rows of the dataset available to this stream."
          },
          "column_name": {
            "type": "string",
            "description": "The dataset column the values are read from.",
            "example": "purchase_date"
          },
          "examples": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A sample of the values that could not be read, to compare against the declared format.\n",
            "example": [
              "12/31/2024",
              "31-12-2024"
            ]
          },
          "format": {
            "type": "string",
            "description": "The format declared for this column, which says how its values should be read.",
            "example": "mm_dd_yyyy_slash"
          },
          "parsed_row_count": {
            "type": "integer",
            "description": "Populated rows whose value could be read as the declared format. Divided by `populated_row_count`\nthis is the read rate, which should be 100%; any shortfall means the values and the declared\nformat disagree.\n"
          },
          "populated_row_count": {
            "type": "integer",
            "description": "Candidate rows where the column held a value. An empty column is not a failure to read one.\n"
          },
          "stale_before": {
            "type": "string",
            "description": "The date those rows were judged against: anything earlier was treated as implausible. The bound\nis relative to when the stream was built, so it is reported rather than left to be recalculated\nagainst a different day. Present only when rows were actually excluded.\n",
            "example": "1896-08-31",
            "format": "date"
          },
          "stale_examples": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A sample of the values that were read successfully but resolved to an implausible date. These\nnever appear in `examples`, because nothing went wrong when reading them — seeing them is the\nonly way to tell that, say, `01/02/03` read as `mm_dd_yyyy_slash` became the year 3.\n",
            "example": [
              "01/02/03",
              "12/31/01"
            ]
          },
          "stale_row_count": {
            "type": "integer",
            "description": "Rows whose value was read successfully but produced a date too far in the past to be plausible,\nwhich usually means the format is being misread rather than that the data is old. These rows are\nexcluded from the stream.\n"
          },
          "stream_property": {
            "type": "string",
            "description": "The stream property these values populate.",
            "example": "datetime"
          }
        },
        "additionalProperties": false
      },
      "StreamPropertyTier": {
        "type": "string",
        "description": "A billing tier for a stream property.",
        "enum": [
          "standard",
          "premium",
          "prohibited"
        ]
      },
      "StreamPropertyValues": {
        "type": "object",
        "required": [
          "count",
          "value"
        ],
        "properties": {
          "count": {
            "type": "integer"
          },
          "value": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "StreamPut": {
        "type": "object",
        "properties": {
          "category": {
            "$ref": "#/components/schemas/StreamPropertyCategory",
            "description": "A category describing the type of stream property."
          },
          "deprecated": {
            "type": "boolean",
            "description": "Whether the stream is deprecated.",
            "default": false
          },
          "deprecation_notes": {
            "type": "string",
            "description": "Notes about the deprecation of the stream."
          },
          "description": {
            "type": "string",
            "description": "A description of the stream."
          },
          "literate": {
            "type": "string",
            "description": "A human-readable name for the stream."
          },
          "properties": {
            "$ref": "#/components/schemas/StreamPropertiesPut"
          },
          "tier": {
            "$ref": "#/components/schemas/StreamPropertyTier",
            "description": "A billing tier for the stream property."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Stream` type.)\n\nA stream of events associated with the account."
      },
      "TabularData": {
        "type": "object",
        "required": [
          "headers",
          "rows"
        ],
        "properties": {
          "headers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The headers of the table. Similar to a CSV header row."
          },
          "rows": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "The rows of the table. Similar to a CSV data row. Each row must have the same number of columns as the `headers` array. The order of the columns must match the order of the headers."
          }
        },
        "description": "A table of arbitrary data. Purposefully untyped to allow for flexibility in the data."
      },
      "Target": {
        "type": "object",
        "required": [
          "created_at",
          "id",
          "name",
          "options",
          "representation",
          "resource_type",
          "scope_id",
          "status",
          "updated_at"
        ],
        "properties": {
          "analysis_config": {
            "type": "object",
            "properties": {
              "attributes": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "fig/age",
                  "pattern": "^fig/[a-z][a-z0-9_]+$"
                },
                "description": "Configuration for the analysis of attributes.\n\nYour account must have an identity graph feature store set. Faraday provided attributes must be prefixed with `fig/` ex. `fig/age`.\n"
              },
              "geographies": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "postcode",
                    "state"
                  ]
                },
                "description": "Configuration for the analysis of geographic dimensions\n"
              },
              "traits": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "fig/age",
                  "pattern": "^(fig/)?[a-z][a-z0-9_]+$"
                },
                "description": "Configuration for the analysis of traits. For traits created through `output_to_traits` via `/datasets`, specify the trait name. For traits from Faraday's Internal Graph (FIG), specify the name prefixed by `fig/` ex. `fig/age`.\n"
              }
            },
            "description": "Configuration for the analysis of the target.\n"
          },
          "archived_at": {
            "type": "string",
            "description": "If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "connection_id": {
            "type": "string",
            "description": "If this is a replication (externally-hosted) target, the UUID of a connection - see <a href=\"https://faraday.ai/developers/reference/createconnection\">/connections</a> for more detail. \n\nIf this is not a replication target, omit this parameter.\n",
            "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
            "format": "uuid"
          },
          "count": {
            "type": "integer",
            "description": "The number of records in the target. This is only included in the response if the target is built."
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "custom_structure": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetStructureTransformation"
            },
            "description": "By default, targets include all columns in <a href=\"https://faraday.ai/developers/reference/createtargetpreview\">the target preview</a>, with no name changes.\n\nUsers may use this parameter to specify their own set of \"structure transformations\" to override the default selection, order, and name of exported columns.\n\nThe shape of this parameter is an array of objects where the order of the columns to export is given by the order of the array. Each item represents a 1:1 mapping of scope input column to target output column. Only those columns specified here are emitted in the target output.\n"
          },
          "filter": {
            "$ref": "#/components/schemas/TargetFilter"
          },
          "final_structure": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetStructureTransformation"
            },
            "description": "Final structure of the target export. This is only included in the response if the target is built."
          },
          "human_readable": {
            "type": "boolean",
            "description": "By default, column names are exported in a machine-readable format with underscored uuids. \n\nSetting this to `true` replaces ids with literates in the exported column names.\n"
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "example": "ba647bc4-55f1-49f9-b0da-fccff5b51bfe",
            "format": "uuid"
          },
          "last_read_input_at": {
            "type": "string",
            "description": "The last time this resource's input was read.",
            "format": "date-time"
          },
          "last_updated_config_at": {
            "type": "string",
            "description": "The last time this resource's configuration was updated. If this is more recent than last_updated_output_at, the resource will be rebuilt.",
            "format": "date-time"
          },
          "last_updated_output_at": {
            "type": "string",
            "description": "The last time this resource successfully built.",
            "format": "date-time"
          },
          "limit": {
            "$ref": "#/components/schemas/TargetLimit"
          },
          "managed": {
            "type": "boolean",
            "description": "A managed target requires special configuration from a Faraday admin, and is read-only.",
            "example": true
          },
          "name": {
            "type": "string",
            "description": "A user-friendly name of the target.",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "options": {
            "$ref": "#/components/schemas/TargetOptions"
          },
          "payload_map": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "**Deprecated: use `custom_structure`.**\n\nBy default, targets include all columns in <a href=\"https://faraday.ai/developers/reference/createtargetpreview\">the target preview</a>, with no name changes.\nThis parameter is an override of the default that enables an explicit mapping of columns that should be included in the target export, along with the exported column name.\nEach key is the name the column originally had, and each value is the desired name.\nExample:\n```\n{\n  \"person_first_name\": \"first_name\",\n  \"person_last_name\": \"last_name\",\n  \"city\": \"city\"\n}\n```\nIn the example above, the target will only include the \"first_name\", \"last_name\", and \"city\" columns.\n"
          },
          "representation": {
            "$ref": "#/components/schemas/TargetModes"
          },
          "resource_type": {
            "type": "string",
            "description": "The type of this resource.",
            "example": "targets"
          },
          "scope_id": {
            "type": "string",
            "description": "The UUID of a scope - see <a href=\"https://faraday.ai/developers/reference/createscope\">/scopes</a> for more detail.",
            "example": "8e63467d-9478-4fba-b05a-d5e98fd06d12",
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "status_changed_at": {
            "type": "string",
            "description": "When the status of this resource was last updated.",
            "format": "date-time"
          },
          "status_error": {
            "type": "string",
            "description": "If this resource has `status == \"error\"`, this will contain an error message."
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Instructions on how to export output data defined by a scope.\n\nThere are three types of targets:\n<table>\n<thead>\n<tr><th>Target type</th><th>Description</th><th>API requirement</th></tr>\n</thead>\n<tbody>\n<tr><td><strong>Publication</strong></td><td>Faraday <em>hosts</em> your predictions for convenient retrieval as needed.</td><td>Specify a <code>type</code> of <code>hosted_csv</code> in <code>options</code>. Omit <code>connection_id</code>.</td></tr>\n<tr><td><strong>Replication</strong></td><td>Faraday copies your predictions to systems <em>you</em> control. You may then push them to third parties like Facebook, Google Ads, etc.</td><td>Specify a valid <code>connection_id</code> and the corresponding <code>type</code> of the connection in <code>options</code>.</td></tr>\n<tr><td><strong>Managed</strong></td><td>Faraday manages a push to third parties like Facebook, Google Ads, and more.</td><td>Must be on an enterprise plan. Contact Customer Success to set up.</td></tr>\n</tbody>\n</table>\n"
      },
      "TargetAggregateGeographic": {
        "type": "string",
        "description": "Available aggregation levels for data exported in `aggregated` targets.",
        "enum": [
          "carrier_route",
          "census_block_group",
          "census_tract",
          "county",
          "dma",
          "metro",
          "postcode",
          "state"
        ]
      },
      "TargetAggregateIdentified": {
        "type": "string",
        "description": "Available aggregation levels for data exported in `identified` targets. Only `person` is supported for targets with options.type = `lookup_api`.",
        "enum": [
          "person",
          "residence"
        ]
      },
      "TargetAnalysis": {
        "type": "object",
        "properties": {
          "attributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetAnalysisAttribute"
            }
          },
          "geographies": {
            "type": "object",
            "properties": {
              "postcode": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetAnalysisGeography"
                }
              },
              "state": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetAnalysisGeography"
                }
              }
            }
          },
          "traits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetAnalysisTrait"
            }
          }
        }
      },
      "TargetAnalysisAttribute": {
        "type": "object",
        "required": [
          "attribute_name",
          "bins"
        ],
        "properties": {
          "attribute_name": {
            "type": "string",
            "description": "The name of the attribute used to calculate this dimension.",
            "example": "fig/age",
            "pattern": "^fig/[a-z][a-z0-9_]+$"
          },
          "bins": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisDimensionsTraitBin"
            },
            "description": "The list of bins calculated for this target analysis dimension."
          }
        }
      },
      "TargetAnalysisGeography": {
        "type": "object",
        "required": [
          "count",
          "id"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "The number of individuals in this geography."
          },
          "id": {
            "type": "string",
            "description": "The ID of the geography, so if postcode, then 05156."
          }
        }
      },
      "TargetAnalysisTrait": {
        "type": "object",
        "required": [
          "trait_name",
          "bins"
        ],
        "properties": {
          "bins": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnalysisDimensionsTraitBin"
            },
            "description": "The list of bins calculated for this target analysis dimension."
          },
          "trait_name": {
            "type": "string",
            "description": "The machine name of the trait used to calculate this dimension.",
            "example": "fig/age",
            "pattern": "^(fig/)?[a-z][a-z0-9_]+$"
          }
        }
      },
      "TargetFilter": {
        "type": "object",
        "properties": {
          "attribute": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterAttributeConditions"
            },
            "description": "List of conditions to filter attributes. Your account must have an identity graph set."
          },
          "cohort_membership": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterCohortMembershipConditions"
            },
            "description": "List of conditions to filter cohort membership on."
          },
          "outcome_percentile": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterOutcomePercentileConditions"
            },
            "description": "List of conditions to filter outcome percentile on."
          },
          "outcome_probability": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterOutcomeProbabilityConditions"
            },
            "description": "List of conditions to filter outcome probability on."
          },
          "outcome_score": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterOutcomeScoreConditions"
            },
            "description": "**Deprecated:** List of conditions to filter outcome score on.\n"
          },
          "persona": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterPersonaSetPersonaIdConditions"
            },
            "description": "List of conditions to filter persona set personid on."
          },
          "recommender_rank": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterRecommenderRankConditions"
            },
            "description": "List of conditions to filter recommender rank on."
          },
          "recommender_uncalibrated_probability": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterRecommenderUncalibratedProbabilityConditions"
            },
            "description": "List of conditions to filter recommender uncalibrated probability on."
          },
          "trait": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterTraitConditions"
            },
            "description": "List of conditions to filter traits."
          }
        },
        "additionalProperties": false,
        "description": "Filter the rows exported in a target using the scope payload elements.\n- **Deprecated:** To filter by outcome scores, use `outcome_score`.\n- To filter by outcome probability, use `outcome_probability`.\n- To filter by outcome percentile, use `outcome_percentile`.\n- To filter by persona set persona id, use `persona`.\n- To filter by cohort membership, use `cohort_membership`. The cohort does not need to be in the scope payload.\n- To filter by trait, use `trait`.\n- To filter by attribute, use `attribute`.\n- To filter by recommender uncalibrated probability, use `recommender_uncalibrated_probability`.\n- To filter by recommender rank, use `recommender_rank`.\n\nConditions are AND-ed together (like SQL) - each condition applies an additional constraint.\n\nNulls are excluded unless explicitly requested with `_null: true`.\n\nTarget filters are not supported for targets with options.type = \"lookup_api\".\n"
      },
      "TargetFilterAttributeConditions": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "_eq": {
            "type": "string",
            "description": "Equal to"
          },
          "_gt": {
            "type": "number",
            "description": "Greater than"
          },
          "_gte": {
            "type": "number",
            "description": "Greater than or equal to"
          },
          "_in": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is one of"
          },
          "_lt": {
            "type": "number",
            "description": "Less than"
          },
          "_lte": {
            "type": "number",
            "description": "Less than or equal to"
          },
          "_matches": {
            "type": "string",
            "description": "Value contains a match to the regex (re2) expression provided. For an exact regex match, use the ^ and $ characters as specified by the (re2 documentation)[https://github.com/google/re2/wiki/Syntax]."
          },
          "_neq": {
            "type": "string",
            "description": "Not equal to"
          },
          "_nin": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is not one of"
          },
          "_nnull": {
            "type": "boolean",
            "description": "Value is not null"
          },
          "_null": {
            "type": "boolean",
            "description": "Value is null (nulls are otherwise excluded)"
          },
          "name": {
            "type": "string",
            "description": "The name of the attribute.",
            "maxLength": 64
          }
        },
        "additionalProperties": false
      },
      "TargetFilterCohortMembershipConditions": {
        "type": "object",
        "required": [
          "cohort_id",
          "_eq"
        ],
        "properties": {
          "_eq": {
            "type": "boolean",
            "description": "Equal to"
          },
          "cohort_id": {
            "type": "string",
            "description": "Cohort id to filter on.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TargetFilterMergePatch": {
        "type": "object",
        "properties": {
          "attribute": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetFilterAttributeConditions"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of conditions to filter attributes. Your account must have an identity graph set."
          },
          "cohort_membership": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetFilterCohortMembershipConditions"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of conditions to filter cohort membership on."
          },
          "outcome_percentile": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetFilterOutcomePercentileConditions"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of conditions to filter outcome percentile on."
          },
          "outcome_probability": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetFilterOutcomeProbabilityConditions"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of conditions to filter outcome probability on."
          },
          "outcome_score": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetFilterOutcomeScoreConditions"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "**Deprecated:** List of conditions to filter outcome score on.\n"
          },
          "persona": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetFilterPersonaSetPersonaIdConditions"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of conditions to filter persona set personid on."
          },
          "recommender_rank": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetFilterRecommenderRankConditions"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of conditions to filter recommender rank on."
          },
          "recommender_uncalibrated_probability": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetFilterRecommenderUncalibratedProbabilityConditions"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of conditions to filter recommender uncalibrated probability on."
          },
          "trait": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetFilterTraitConditions"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "List of conditions to filter traits."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetFilter` type.)\n\nFilter the rows exported in a target using the scope payload elements.\n- **Deprecated:** To filter by outcome scores, use `outcome_score`.\n- To filter by outcome probability, use `outcome_probability`.\n- To filter by outcome percentile, use `outcome_percentile`.\n- To filter by persona set persona id, use `persona`.\n- To filter by cohort membership, use `cohort_membership`. The cohort does not need to be in the scope payload.\n- To filter by trait, use `trait`.\n- To filter by attribute, use `attribute`.\n- To filter by recommender uncalibrated probability, use `recommender_uncalibrated_probability`.\n- To filter by recommender rank, use `recommender_rank`.\n\nConditions are AND-ed together (like SQL) - each condition applies an additional constraint.\n\nNulls are excluded unless explicitly requested with `_null: true`.\n\nTarget filters are not supported for targets with options.type = \"lookup_api\".\n"
      },
      "TargetFilterOutcomePercentileConditions": {
        "type": "object",
        "required": [
          "outcome_id"
        ],
        "properties": {
          "_eq": {
            "type": "number",
            "description": "Equal to",
            "maximum": 100,
            "minimum": 1
          },
          "_gt": {
            "type": "number",
            "description": "Greater than",
            "maximum": 100,
            "minimum": 1
          },
          "_gte": {
            "type": "number",
            "description": "Greater than or equal to",
            "maximum": 100,
            "minimum": 1
          },
          "_lt": {
            "type": "number",
            "description": "Less than",
            "maximum": 100,
            "minimum": 1
          },
          "_lte": {
            "type": "number",
            "description": "Less than or equal to",
            "maximum": 100,
            "minimum": 1
          },
          "_nnull": {
            "type": "boolean",
            "description": "Value is not null"
          },
          "_null": {
            "type": "boolean",
            "description": "Value is null"
          },
          "outcome_id": {
            "type": "string",
            "description": "Outcome id to filter on.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TargetFilterOutcomeProbabilityConditions": {
        "type": "object",
        "required": [
          "outcome_id"
        ],
        "properties": {
          "_eq": {
            "type": "number",
            "description": "Equal to",
            "format": "float",
            "maximum": 1,
            "minimum": 0
          },
          "_gt": {
            "type": "number",
            "description": "Greater than",
            "format": "float",
            "maximum": 1,
            "minimum": 0
          },
          "_gte": {
            "type": "number",
            "description": "Greater than or equal to",
            "format": "float",
            "maximum": 1,
            "minimum": 0
          },
          "_lt": {
            "type": "number",
            "description": "Less than",
            "format": "float",
            "maximum": 1,
            "minimum": 0
          },
          "_lte": {
            "type": "number",
            "description": "Less than or equal to",
            "format": "float",
            "maximum": 1,
            "minimum": 0
          },
          "_nnull": {
            "type": "boolean",
            "description": "Value is not null"
          },
          "_null": {
            "type": "boolean",
            "description": "Value is null"
          },
          "outcome_id": {
            "type": "string",
            "description": "Outcome id to filter on.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TargetFilterOutcomeScoreConditions": {
        "type": "object",
        "required": [
          "outcome_id"
        ],
        "properties": {
          "_eq": {
            "type": "number",
            "description": "Equal to"
          },
          "_gt": {
            "type": "number",
            "description": "Greater than"
          },
          "_gte": {
            "type": "number",
            "description": "Greater than or equal to"
          },
          "_lt": {
            "type": "number",
            "description": "Less than"
          },
          "_lte": {
            "type": "number",
            "description": "Less than or equal to"
          },
          "_nnull": {
            "type": "boolean",
            "description": "Value is not null"
          },
          "_null": {
            "type": "boolean",
            "description": "Value is null"
          },
          "outcome_id": {
            "type": "string",
            "description": "Outcome id to filter on.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TargetFilterPersonaSetPersonaIdConditions": {
        "type": "object",
        "required": [
          "persona_set_id",
          "persona_id",
          "_eq"
        ],
        "properties": {
          "_eq": {
            "type": "boolean",
            "description": "Equal to"
          },
          "persona_id": {
            "type": "string",
            "description": "Individual persona id to filter on.",
            "example": "7a19cdb4-cf4b-4cbd-95ec-aa60b8fda90b",
            "format": "uuid"
          },
          "persona_set_id": {
            "type": "string",
            "description": "Persona set id to filter on.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TargetFilterPost": {
        "type": "object",
        "properties": {
          "attribute": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterAttributeConditions"
            },
            "description": "List of conditions to filter attributes. Your account must have an identity graph set."
          },
          "cohort_membership": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterCohortMembershipConditions"
            },
            "description": "List of conditions to filter cohort membership on."
          },
          "outcome_percentile": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterOutcomePercentileConditions"
            },
            "description": "List of conditions to filter outcome percentile on."
          },
          "outcome_probability": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterOutcomeProbabilityConditions"
            },
            "description": "List of conditions to filter outcome probability on."
          },
          "outcome_score": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterOutcomeScoreConditions"
            },
            "description": "**Deprecated:** List of conditions to filter outcome score on.\n"
          },
          "persona": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterPersonaSetPersonaIdConditions"
            },
            "description": "List of conditions to filter persona set personid on."
          },
          "recommender_rank": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterRecommenderRankConditions"
            },
            "description": "List of conditions to filter recommender rank on."
          },
          "recommender_uncalibrated_probability": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterRecommenderUncalibratedProbabilityConditions"
            },
            "description": "List of conditions to filter recommender uncalibrated probability on."
          },
          "trait": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterTraitConditions"
            },
            "description": "List of conditions to filter traits."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetFilter` type.)\n\nFilter the rows exported in a target using the scope payload elements.\n- **Deprecated:** To filter by outcome scores, use `outcome_score`.\n- To filter by outcome probability, use `outcome_probability`.\n- To filter by outcome percentile, use `outcome_percentile`.\n- To filter by persona set persona id, use `persona`.\n- To filter by cohort membership, use `cohort_membership`. The cohort does not need to be in the scope payload.\n- To filter by trait, use `trait`.\n- To filter by attribute, use `attribute`.\n- To filter by recommender uncalibrated probability, use `recommender_uncalibrated_probability`.\n- To filter by recommender rank, use `recommender_rank`.\n\nConditions are AND-ed together (like SQL) - each condition applies an additional constraint.\n\nNulls are excluded unless explicitly requested with `_null: true`.\n\nTarget filters are not supported for targets with options.type = \"lookup_api\".\n"
      },
      "TargetFilterPut": {
        "type": "object",
        "properties": {
          "attribute": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterAttributeConditions"
            },
            "description": "List of conditions to filter attributes. Your account must have an identity graph set."
          },
          "cohort_membership": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterCohortMembershipConditions"
            },
            "description": "List of conditions to filter cohort membership on."
          },
          "outcome_percentile": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterOutcomePercentileConditions"
            },
            "description": "List of conditions to filter outcome percentile on."
          },
          "outcome_probability": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterOutcomeProbabilityConditions"
            },
            "description": "List of conditions to filter outcome probability on."
          },
          "outcome_score": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterOutcomeScoreConditions"
            },
            "description": "**Deprecated:** List of conditions to filter outcome score on.\n"
          },
          "persona": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterPersonaSetPersonaIdConditions"
            },
            "description": "List of conditions to filter persona set personid on."
          },
          "recommender_rank": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterRecommenderRankConditions"
            },
            "description": "List of conditions to filter recommender rank on."
          },
          "recommender_uncalibrated_probability": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterRecommenderUncalibratedProbabilityConditions"
            },
            "description": "List of conditions to filter recommender uncalibrated probability on."
          },
          "trait": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetFilterTraitConditions"
            },
            "description": "List of conditions to filter traits."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetFilter` type.)\n\nFilter the rows exported in a target using the scope payload elements.\n- **Deprecated:** To filter by outcome scores, use `outcome_score`.\n- To filter by outcome probability, use `outcome_probability`.\n- To filter by outcome percentile, use `outcome_percentile`.\n- To filter by persona set persona id, use `persona`.\n- To filter by cohort membership, use `cohort_membership`. The cohort does not need to be in the scope payload.\n- To filter by trait, use `trait`.\n- To filter by attribute, use `attribute`.\n- To filter by recommender uncalibrated probability, use `recommender_uncalibrated_probability`.\n- To filter by recommender rank, use `recommender_rank`.\n\nConditions are AND-ed together (like SQL) - each condition applies an additional constraint.\n\nNulls are excluded unless explicitly requested with `_null: true`.\n\nTarget filters are not supported for targets with options.type = \"lookup_api\".\n"
      },
      "TargetFilterRecommenderRankConditions": {
        "type": "object",
        "required": [
          "recommender_id"
        ],
        "properties": {
          "_eq": {
            "type": "number",
            "description": "Equal to",
            "minimum": 1
          },
          "_gt": {
            "type": "number",
            "description": "Greater than",
            "minimum": 1
          },
          "_gte": {
            "type": "number",
            "description": "Greater than or equal to",
            "minimum": 1
          },
          "_lt": {
            "type": "number",
            "description": "Less than",
            "minimum": 1
          },
          "_lte": {
            "type": "number",
            "description": "Less than or equal to",
            "minimum": 1
          },
          "_nnull": {
            "type": "boolean",
            "description": "Value is not null"
          },
          "_null": {
            "type": "boolean",
            "description": "Value is null"
          },
          "recommender_id": {
            "type": "string",
            "description": "Recommender id to filter on.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TargetFilterRecommenderUncalibratedProbabilityConditions": {
        "type": "object",
        "required": [
          "recommender_id"
        ],
        "properties": {
          "_eq": {
            "type": "number",
            "description": "Equal to",
            "format": "float",
            "maximum": 1,
            "minimum": 0
          },
          "_gt": {
            "type": "number",
            "description": "Greater than",
            "format": "float",
            "maximum": 1,
            "minimum": 0
          },
          "_gte": {
            "type": "number",
            "description": "Greater than or equal to",
            "format": "float",
            "maximum": 1,
            "minimum": 0
          },
          "_lt": {
            "type": "number",
            "description": "Less than",
            "format": "float",
            "maximum": 1,
            "minimum": 0
          },
          "_lte": {
            "type": "number",
            "description": "Less than or equal to",
            "format": "float",
            "maximum": 1,
            "minimum": 0
          },
          "_nnull": {
            "type": "boolean",
            "description": "Value is not null"
          },
          "_null": {
            "type": "boolean",
            "description": "Value is null"
          },
          "recommender_id": {
            "type": "string",
            "description": "Recommender id to filter on.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TargetFilterTraitConditions": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "_eq": {
            "type": "string",
            "description": "Equal to"
          },
          "_gt": {
            "type": "number",
            "description": "Greater than"
          },
          "_gte": {
            "type": "number",
            "description": "Greater than or equal to"
          },
          "_in": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is one of"
          },
          "_lt": {
            "type": "number",
            "description": "Less than"
          },
          "_lte": {
            "type": "number",
            "description": "Less than or equal to"
          },
          "_matches": {
            "type": "string",
            "description": "Value contains a match to the regex (re2) expression provided. For an exact regex match, use the ^ and $ characters as specified by the (re2 documentation)[https://github.com/google/re2/wiki/Syntax]."
          },
          "_neq": {
            "type": "string",
            "description": "Not equal to"
          },
          "_nin": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value is not one of"
          },
          "_nnull": {
            "type": "boolean",
            "description": "Value is not null"
          },
          "_null": {
            "type": "boolean",
            "description": "Value is null (nulls are otherwise excluded)"
          },
          "name": {
            "type": "string",
            "description": "The name of the trait.",
            "maxLength": 64
          }
        },
        "additionalProperties": false
      },
      "TargetImputePayload": {
        "type": "array",
        "items": {
          "type": "string",
          "enum": [
            "attributes"
          ]
        },
        "description": "Which payload elements to include imputed values for.\nImputation uses cohabitants and neighbors to estimate missing\nvalues. Empty array means no imputed values appear in the\ntarget's payload.\n"
      },
      "TargetLimit": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetLimitRowCount"
          },
          {
            "$ref": "#/components/schemas/TargetLimitPercentile"
          }
        ],
        "description": "Restrict the number of rows exported in a target.\n- To apply an absolute row limit, use `row_count`.\n- **Deprecated:** To filter by percentile scores, use `percentile` (use `filter outcome_percentile` instead).\nTarget limits are not supported for targets with options.type = \"lookup_api\"\n",
        "discriminator": {
          "propertyName": "method",
          "mapping": {
            "percentile": "#/components/schemas/TargetLimitPercentile",
            "row_count": "#/components/schemas/TargetLimitRowCount"
          }
        }
      },
      "TargetLimitMergePatch": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetLimitRowCountMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetLimitPercentileMergePatch"
          }
        ],
        "description": "Restrict the number of rows exported in a target.\n- To apply an absolute row limit, use `row_count`.\n- **Deprecated:** To filter by percentile scores, use `percentile` (use `filter outcome_percentile` instead).\nTarget limits are not supported for targets with options.type = \"lookup_api\"\n",
        "discriminator": {
          "propertyName": "method",
          "mapping": {
            "percentile": "#/components/schemas/TargetLimitPercentileMergePatch",
            "row_count": "#/components/schemas/TargetLimitRowCountMergePatch"
          }
        }
      },
      "TargetLimitPercentile": {
        "type": "object",
        "required": [
          "method",
          "outcome_id",
          "percentile_max",
          "percentile_min"
        ],
        "properties": {
          "method": {
            "type": "string",
            "description": "The limit method",
            "const": "percentile"
          },
          "outcome_id": {
            "type": "string",
            "description": "Use the ranking suggested by the outcome's scores.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          },
          "percentile_max": {
            "type": "integer",
            "description": "Specify a whole number to restrict the target to a maximum percentile score (inclusive).",
            "example": 100,
            "maximum": 100,
            "minimum": 1
          },
          "percentile_min": {
            "type": "integer",
            "description": "Specify a whole number to restrict the target to a minimum percentile score (inclusive).",
            "example": 80,
            "maximum": 100,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "description": "**Deprecated: use `filter.outcome_percentile` instead.**\n\nRestrict the number of rows exported in a target by specifying a score percentile range.\n",
        "title": "Outcome percentile"
      },
      "TargetLimitPercentileMergePatch": {
        "type": "object",
        "required": [
          "method"
        ],
        "properties": {
          "method": {
            "type": "string",
            "description": "The limit method",
            "const": "percentile"
          },
          "outcome_id": {
            "type": "string",
            "description": "Use the ranking suggested by the outcome's scores.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          },
          "percentile_max": {
            "type": "integer",
            "description": "Specify a whole number to restrict the target to a maximum percentile score (inclusive).",
            "example": 100,
            "maximum": 100,
            "minimum": 1
          },
          "percentile_min": {
            "type": "integer",
            "description": "Specify a whole number to restrict the target to a minimum percentile score (inclusive).",
            "example": 80,
            "maximum": 100,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetLimitPercentile` type.)\n\n**Deprecated: use `filter.outcome_percentile` instead.**\n\nRestrict the number of rows exported in a target by specifying a score percentile range.\n",
        "title": "Outcome percentile"
      },
      "TargetLimitPercentilePost": {
        "type": "object",
        "required": [
          "method",
          "outcome_id",
          "percentile_max",
          "percentile_min"
        ],
        "properties": {
          "method": {
            "type": "string",
            "description": "The limit method",
            "const": "percentile"
          },
          "outcome_id": {
            "type": "string",
            "description": "Use the ranking suggested by the outcome's scores.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          },
          "percentile_max": {
            "type": "integer",
            "description": "Specify a whole number to restrict the target to a maximum percentile score (inclusive).",
            "example": 100,
            "maximum": 100,
            "minimum": 1
          },
          "percentile_min": {
            "type": "integer",
            "description": "Specify a whole number to restrict the target to a minimum percentile score (inclusive).",
            "example": 80,
            "maximum": 100,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetLimitPercentile` type.)\n\n**Deprecated: use `filter.outcome_percentile` instead.**\n\nRestrict the number of rows exported in a target by specifying a score percentile range.\n",
        "title": "Outcome percentile"
      },
      "TargetLimitPercentilePut": {
        "type": "object",
        "required": [
          "method",
          "outcome_id",
          "percentile_max",
          "percentile_min"
        ],
        "properties": {
          "method": {
            "type": "string",
            "description": "The limit method",
            "const": "percentile"
          },
          "outcome_id": {
            "type": "string",
            "description": "Use the ranking suggested by the outcome's scores.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          },
          "percentile_max": {
            "type": "integer",
            "description": "Specify a whole number to restrict the target to a maximum percentile score (inclusive).",
            "example": 100,
            "maximum": 100,
            "minimum": 1
          },
          "percentile_min": {
            "type": "integer",
            "description": "Specify a whole number to restrict the target to a minimum percentile score (inclusive).",
            "example": 80,
            "maximum": 100,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetLimitPercentile` type.)\n\n**Deprecated: use `filter.outcome_percentile` instead.**\n\nRestrict the number of rows exported in a target by specifying a score percentile range.\n",
        "title": "Outcome percentile"
      },
      "TargetLimitPost": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetLimitRowCountPost"
          },
          {
            "$ref": "#/components/schemas/TargetLimitPercentilePost"
          }
        ],
        "description": "Restrict the number of rows exported in a target.\n- To apply an absolute row limit, use `row_count`.\n- **Deprecated:** To filter by percentile scores, use `percentile` (use `filter outcome_percentile` instead).\nTarget limits are not supported for targets with options.type = \"lookup_api\"\n",
        "discriminator": {
          "propertyName": "method",
          "mapping": {
            "percentile": "#/components/schemas/TargetLimitPercentilePost",
            "row_count": "#/components/schemas/TargetLimitRowCountPost"
          }
        }
      },
      "TargetLimitPut": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetLimitRowCountPut"
          },
          {
            "$ref": "#/components/schemas/TargetLimitPercentilePut"
          }
        ],
        "description": "Restrict the number of rows exported in a target.\n- To apply an absolute row limit, use `row_count`.\n- **Deprecated:** To filter by percentile scores, use `percentile` (use `filter outcome_percentile` instead).\nTarget limits are not supported for targets with options.type = \"lookup_api\"\n",
        "discriminator": {
          "propertyName": "method",
          "mapping": {
            "percentile": "#/components/schemas/TargetLimitPercentilePut",
            "row_count": "#/components/schemas/TargetLimitRowCountPut"
          }
        }
      },
      "TargetLimitRowCount": {
        "type": "object",
        "required": [
          "method",
          "threshold"
        ],
        "properties": {
          "direction": {
            "type": "string",
            "description": "When an `outcome_id` is given, this parameter sets the sort direction: for the \"top\" scores, specify `descending`. For the \"bottom\" scores, specify `ascending`.\n\nIf not specified, defaults to `descending`.\n",
            "enum": [
              "ascending",
              "descending"
            ]
          },
          "method": {
            "type": "string",
            "description": "The limit method",
            "const": "row_count"
          },
          "outcome_id": {
            "type": "string",
            "description": "Use the ranking suggested by the outcome's scores.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          },
          "threshold": {
            "type": "integer",
            "description": "Specify a whole number to restrict the target to a specific number of records.",
            "example": 1000,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "description": "Restrict the number of rows exported in a target by specifying an absolute row limit. Equivalent to `LIMIT` in SQL.\n\nIf an outcome is specified, the results are sorted by score before taking the limit. Otherwise the ordering is random.\n",
        "title": "Row count"
      },
      "TargetLimitRowCountMergePatch": {
        "type": "object",
        "required": [
          "method"
        ],
        "properties": {
          "direction": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "enum": [
                  "ascending",
                  "descending"
                ]
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "When an `outcome_id` is given, this parameter sets the sort direction: for the \"top\" scores, specify `descending`. For the \"bottom\" scores, specify `ascending`.\n\nIf not specified, defaults to `descending`.\n"
          },
          "method": {
            "type": "string",
            "description": "The limit method",
            "const": "row_count"
          },
          "outcome_id": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
                "format": "uuid"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Use the ranking suggested by the outcome's scores."
          },
          "threshold": {
            "type": "integer",
            "description": "Specify a whole number to restrict the target to a specific number of records.",
            "example": 1000,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetLimitRowCount` type.)\n\nRestrict the number of rows exported in a target by specifying an absolute row limit. Equivalent to `LIMIT` in SQL.\n\nIf an outcome is specified, the results are sorted by score before taking the limit. Otherwise the ordering is random.\n",
        "title": "Row count"
      },
      "TargetLimitRowCountPost": {
        "type": "object",
        "required": [
          "method",
          "threshold"
        ],
        "properties": {
          "direction": {
            "type": "string",
            "description": "When an `outcome_id` is given, this parameter sets the sort direction: for the \"top\" scores, specify `descending`. For the \"bottom\" scores, specify `ascending`.\n\nIf not specified, defaults to `descending`.\n",
            "enum": [
              "ascending",
              "descending"
            ]
          },
          "method": {
            "type": "string",
            "description": "The limit method",
            "const": "row_count"
          },
          "outcome_id": {
            "type": "string",
            "description": "Use the ranking suggested by the outcome's scores.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          },
          "threshold": {
            "type": "integer",
            "description": "Specify a whole number to restrict the target to a specific number of records.",
            "example": 1000,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetLimitRowCount` type.)\n\nRestrict the number of rows exported in a target by specifying an absolute row limit. Equivalent to `LIMIT` in SQL.\n\nIf an outcome is specified, the results are sorted by score before taking the limit. Otherwise the ordering is random.\n",
        "title": "Row count"
      },
      "TargetLimitRowCountPut": {
        "type": "object",
        "required": [
          "method",
          "threshold"
        ],
        "properties": {
          "direction": {
            "type": "string",
            "description": "When an `outcome_id` is given, this parameter sets the sort direction: for the \"top\" scores, specify `descending`. For the \"bottom\" scores, specify `ascending`.\n\nIf not specified, defaults to `descending`.\n",
            "enum": [
              "ascending",
              "descending"
            ]
          },
          "method": {
            "type": "string",
            "description": "The limit method",
            "const": "row_count"
          },
          "outcome_id": {
            "type": "string",
            "description": "Use the ranking suggested by the outcome's scores.",
            "example": "b80217ae-7628-4c66-8a19-5bf452495c39",
            "format": "uuid"
          },
          "threshold": {
            "type": "integer",
            "description": "Specify a whole number to restrict the target to a specific number of records.",
            "example": 1000,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetLimitRowCount` type.)\n\nRestrict the number of rows exported in a target by specifying an absolute row limit. Equivalent to `LIMIT` in SQL.\n\nIf an outcome is specified, the results are sorted by score before taking the limit. Otherwise the ordering is random.\n",
        "title": "Row count"
      },
      "TargetLookupMode": {
        "type": "string",
        "description": "The mode of the target. This determines the structure of the lookup request and response.\n",
        "enum": [
          "identified",
          "aggregated"
        ]
      },
      "TargetLookupRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/LookupApiIdentifiers"
          }
        ],
        "description": "The structure of a lookup request depends on the \"mode\" of the target. \n\nFor an identified target, the payload will contain the Personal Identifying Information (PII) of an individual for whom Faraday should attempt to retrieve a score. The following identifiers are supported:\n  - person_first_name\n  - person_last_name\n  - house_number_and_street\n  - city\n  - state\n  - postcode\n  - email\n  - email_hash (must be a standard SHA256 hash)\n  - phone\n\nIn order to properly match, certain combinations of PII are required. See [the Lookup API specification](https://faraday.ai/docs/features/lookup-api#constructing-a-request). We encourage the use of the new `identity_sets` field which allows for one or more PII combinations for the same person to be sent in a single request. Providing PII at the top level in the request object is still supported but deprecated. For example, if there are multiple known email or physical addresses for a person, you can send them all in a single request using `identity_sets`.\n\nFor an aggregated target, the payload should contain a single key, which will be the same as the aggregate used in the target configuration. For example, if your target has an aggregate of `county`, \nthen the target will only accept payloads with the key `county`. You must use standard US Census FIPS codes to lookup results.\n",
        "properties": {
          "identity_sets": {
            "items": {
              "$ref": "#/components/schemas/LookupApiIdentitySets"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "TargetLookupResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/LookupApiIdentifiers"
          }
        ],
        "description": "The structure of a lookup response depends on the target and the scope it is attached to. \n\nIn general, we return all personal identifying information (PII) which was sent to us. If the PII was matched, then Faraday will also return all of the Scope's defined payload components for the matched person, e.g. outcome percentiles & probability, persona membership, etc.\n\nIf the PII was not matched, then the response will contain an `error` key, with the message \"Could not match an identity with the provided information\". See [the Lookup API specification](https://faraday.ai/docs/features/lookup-api#response) for more information on what response payloads are available and what their shape is.\n",
        "properties": {
          "cohabitants": {
            "description": "An array of shared residents of the matched location which were used in aggregation.\n",
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "error": {
            "example": "Could not match an identity with the provided information",
            "type": "string"
          },
          "identity_provider": {
            "$ref": "#/components/schemas/LookupIdentityProvider"
          },
          "identity_set": {
            "$ref": "#/components/schemas/LookupApiIdentitySets"
          },
          "match_type": {
            "$ref": "#/components/schemas/LookupMatchType"
          }
        },
        "type": "object"
      },
      "TargetMergePatch": {
        "type": "object",
        "properties": {
          "analysis_config": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "attributes": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "fig/age",
                      "pattern": "^fig/[a-z][a-z0-9_]+$"
                    },
                    "description": "Configuration for the analysis of attributes.\n\nYour account must have an identity graph feature store set. Faraday provided attributes must be prefixed with `fig/` ex. `fig/age`.\n"
                  },
                  "geographies": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "postcode",
                        "state"
                      ]
                    },
                    "description": "Configuration for the analysis of geographic dimensions\n"
                  },
                  "traits": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "fig/age",
                      "pattern": "^(fig/)?[a-z][a-z0-9_]+$"
                    },
                    "description": "Configuration for the analysis of traits. For traits created through `output_to_traits` via `/datasets`, specify the trait name. For traits from Faraday's Internal Graph (FIG), specify the name prefixed by `fig/` ex. `fig/age`.\n"
                  }
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Configuration for the analysis of the target.\n"
          },
          "connection_id": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
                "format": "uuid"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "If this is a replication (externally-hosted) target, the UUID of a connection - see <a href=\"https://faraday.ai/developers/reference/createconnection\">/connections</a> for more detail. \n\nIf this is not a replication target, omit this parameter.\n"
          },
          "custom_structure": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetStructureTransformation"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "By default, targets include all columns in <a href=\"https://faraday.ai/developers/reference/createtargetpreview\">the target preview</a>, with no name changes.\n\nUsers may use this parameter to specify their own set of \"structure transformations\" to override the default selection, order, and name of exported columns.\n\nThe shape of this parameter is an array of objects where the order of the columns to export is given by the order of the array. Each item represents a 1:1 mapping of scope input column to target output column. Only those columns specified here are emitted in the target output.\n"
          },
          "filter": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TargetFilterMergePatch"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "human_readable": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "By default, column names are exported in a machine-readable format with underscored uuids. \n\nSetting this to `true` replaces ids with literates in the exported column names.\n"
          },
          "limit": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TargetLimitMergePatch"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "name": {
            "type": "string",
            "description": "A user-friendly name of the target.",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "options": {
            "$ref": "#/components/schemas/TargetOptionsMergePatch"
          },
          "payload_map": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "**Deprecated: use `custom_structure`.**\n\nBy default, targets include all columns in <a href=\"https://faraday.ai/developers/reference/createtargetpreview\">the target preview</a>, with no name changes.\nThis parameter is an override of the default that enables an explicit mapping of columns that should be included in the target export, along with the exported column name.\nEach key is the name the column originally had, and each value is the desired name.\nExample:\n```\n{\n  \"person_first_name\": \"first_name\",\n  \"person_last_name\": \"last_name\",\n  \"city\": \"city\"\n}\n```\nIn the example above, the target will only include the \"first_name\", \"last_name\", and \"city\" columns.\n"
          },
          "representation": {
            "$ref": "#/components/schemas/TargetModesMergePatch"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Target` type.)\n\nInstructions on how to export output data defined by a scope.\n\nThere are three types of targets:\n<table>\n<thead>\n<tr><th>Target type</th><th>Description</th><th>API requirement</th></tr>\n</thead>\n<tbody>\n<tr><td><strong>Publication</strong></td><td>Faraday <em>hosts</em> your predictions for convenient retrieval as needed.</td><td>Specify a <code>type</code> of <code>hosted_csv</code> in <code>options</code>. Omit <code>connection_id</code>.</td></tr>\n<tr><td><strong>Replication</strong></td><td>Faraday copies your predictions to systems <em>you</em> control. You may then push them to third parties like Facebook, Google Ads, etc.</td><td>Specify a valid <code>connection_id</code> and the corresponding <code>type</code> of the connection in <code>options</code>.</td></tr>\n<tr><td><strong>Managed</strong></td><td>Faraday manages a push to third parties like Facebook, Google Ads, and more.</td><td>Must be on an enterprise plan. Contact Customer Success to set up.</td></tr>\n</tbody>\n</table>\n"
      },
      "TargetModes": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetModesHashed"
          },
          {
            "$ref": "#/components/schemas/TargetModesReferenced"
          },
          {
            "$ref": "#/components/schemas/TargetModesIdentified"
          },
          {
            "$ref": "#/components/schemas/TargetModesAggregated"
          }
        ],
        "description": "Choose how the scopes's output should be formatted for this target. The following **modes** are available:\n\n**`aggregated`**\n  * This option will produce one row per geographical area.\n  * This option is best for geo-targeted ad campaigns.\n\n**`hashed`**\n  * Faraday's name, physical address, and email is emitted in hashed form. Data is randomly ordered to prevent re-identification. All payload columns are emitted except raw propensity scores and attributes. \n  * This option facilitates digital acquisition use cases.\n\n**`identified`**\n  * All identifiable information specified by `identity_sets` in source data is emitted in cleartext - see <a href=\"https://faraday.ai/developers/reference/createdataset\">/datasets</a> for more detail. All payload columns are emitted. Your account may have a limit on how many rows can be returned.\n  * This option is best for direct mail and canvassing campaigns.\n\n**`referenced`**\n  * This option will produce one row per person based on the identifier column of a dataset of your choice. To protect privacy, this will not include identifying information other than the key you select.\n  * This option is best for merging data back into your stack.\n",
        "discriminator": {
          "propertyName": "mode",
          "mapping": {
            "aggregated": "#/components/schemas/TargetModesAggregated",
            "hashed": "#/components/schemas/TargetModesHashed",
            "identified": "#/components/schemas/TargetModesIdentified",
            "referenced": "#/components/schemas/TargetModesReferenced"
          }
        }
      },
      "TargetModesAggregated": {
        "type": "object",
        "required": [
          "aggregate",
          "mode"
        ],
        "properties": {
          "aggregate": {
            "$ref": "#/components/schemas/TargetAggregateGeographic"
          },
          "include_geometry": {
            "type": "boolean",
            "description": "Include the geometry of the geographic area in the target output.\n"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "aggregated"
          },
          "transform_preset": {
            "$ref": "#/components/schemas/TargetTransformPresetAggregated"
          }
        },
        "additionalProperties": false,
        "description": "Suitable for geo-targeted ad campaigns. Not supported by options.type = \"lookup_api\".",
        "title": "Aggregated representation (geographic)"
      },
      "TargetModesAggregatedMergePatch": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "aggregate": {
            "$ref": "#/components/schemas/TargetAggregateGeographic"
          },
          "include_geometry": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Include the geometry of the geographic area in the target output.\n"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "aggregated"
          },
          "transform_preset": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TargetTransformPresetAggregated"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetModesAggregated` type.)\n\nSuitable for geo-targeted ad campaigns. Not supported by options.type = \"lookup_api\".",
        "title": "Aggregated representation (geographic)"
      },
      "TargetModesAggregatedPost": {
        "type": "object",
        "required": [
          "aggregate",
          "mode"
        ],
        "properties": {
          "aggregate": {
            "$ref": "#/components/schemas/TargetAggregateGeographic"
          },
          "include_geometry": {
            "type": "boolean",
            "description": "Include the geometry of the geographic area in the target output.\n"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "aggregated"
          },
          "transform_preset": {
            "$ref": "#/components/schemas/TargetTransformPresetAggregated"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetModesAggregated` type.)\n\nSuitable for geo-targeted ad campaigns. Not supported by options.type = \"lookup_api\".",
        "title": "Aggregated representation (geographic)"
      },
      "TargetModesAggregatedPut": {
        "type": "object",
        "required": [
          "aggregate",
          "mode"
        ],
        "properties": {
          "aggregate": {
            "$ref": "#/components/schemas/TargetAggregateGeographic"
          },
          "include_geometry": {
            "type": "boolean",
            "description": "Include the geometry of the geographic area in the target output.\n"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "aggregated"
          },
          "transform_preset": {
            "$ref": "#/components/schemas/TargetTransformPresetAggregated"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetModesAggregated` type.)\n\nSuitable for geo-targeted ad campaigns. Not supported by options.type = \"lookup_api\".",
        "title": "Aggregated representation (geographic)"
      },
      "TargetModesHashed": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "impute_payload": {
            "$ref": "#/components/schemas/TargetImputePayload"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "hashed"
          },
          "transform_preset": {
            "$ref": "#/components/schemas/TargetTransformPresetHashed"
          }
        },
        "additionalProperties": false,
        "description": "Suitable for digital acquisition use cases. Not supported by options.type = \"lookup_api\"",
        "title": "Hashed representation"
      },
      "TargetModesHashedMergePatch": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "impute_payload": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TargetImputePayload"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "hashed"
          },
          "transform_preset": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TargetTransformPresetHashed"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetModesHashed` type.)\n\nSuitable for digital acquisition use cases. Not supported by options.type = \"lookup_api\"",
        "title": "Hashed representation"
      },
      "TargetModesHashedPost": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "impute_payload": {
            "$ref": "#/components/schemas/TargetImputePayload"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "hashed"
          },
          "transform_preset": {
            "$ref": "#/components/schemas/TargetTransformPresetHashed"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetModesHashed` type.)\n\nSuitable for digital acquisition use cases. Not supported by options.type = \"lookup_api\"",
        "title": "Hashed representation"
      },
      "TargetModesHashedPut": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "impute_payload": {
            "$ref": "#/components/schemas/TargetImputePayload"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "hashed"
          },
          "transform_preset": {
            "$ref": "#/components/schemas/TargetTransformPresetHashed"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetModesHashed` type.)\n\nSuitable for digital acquisition use cases. Not supported by options.type = \"lookup_api\"",
        "title": "Hashed representation"
      },
      "TargetModesIdentified": {
        "type": "object",
        "required": [
          "aggregate",
          "mode"
        ],
        "properties": {
          "aggregate": {
            "$ref": "#/components/schemas/TargetAggregateIdentified"
          },
          "impute_payload": {
            "$ref": "#/components/schemas/TargetImputePayload"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "identified"
          },
          "output_multiple_identities": {
            "type": "boolean",
            "description": "Allows additional historical address, email, and phone per row in json array format. A special plan feature is required for this to work, please contact support.\n",
            "default": false
          },
          "transform_preset": {
            "$ref": "#/components/schemas/TargetTransformPresetIdentified"
          }
        },
        "additionalProperties": false,
        "description": "Suitable for direct mail and canvassing.",
        "title": "Identified Identified representation"
      },
      "TargetModesIdentifiedMergePatch": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "aggregate": {
            "$ref": "#/components/schemas/TargetAggregateIdentified"
          },
          "impute_payload": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TargetImputePayload"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "identified"
          },
          "output_multiple_identities": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "default": false
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Allows additional historical address, email, and phone per row in json array format. A special plan feature is required for this to work, please contact support.\n"
          },
          "transform_preset": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TargetTransformPresetIdentified"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetModesIdentified` type.)\n\nSuitable for direct mail and canvassing.",
        "title": "Identified Identified representation"
      },
      "TargetModesIdentifiedPost": {
        "type": "object",
        "required": [
          "aggregate",
          "mode"
        ],
        "properties": {
          "aggregate": {
            "$ref": "#/components/schemas/TargetAggregateIdentified"
          },
          "impute_payload": {
            "$ref": "#/components/schemas/TargetImputePayload"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "identified"
          },
          "output_multiple_identities": {
            "type": "boolean",
            "description": "Allows additional historical address, email, and phone per row in json array format. A special plan feature is required for this to work, please contact support.\n",
            "default": false
          },
          "transform_preset": {
            "$ref": "#/components/schemas/TargetTransformPresetIdentified"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetModesIdentified` type.)\n\nSuitable for direct mail and canvassing.",
        "title": "Identified Identified representation"
      },
      "TargetModesIdentifiedPut": {
        "type": "object",
        "required": [
          "aggregate",
          "mode"
        ],
        "properties": {
          "aggregate": {
            "$ref": "#/components/schemas/TargetAggregateIdentified"
          },
          "impute_payload": {
            "$ref": "#/components/schemas/TargetImputePayload"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "identified"
          },
          "output_multiple_identities": {
            "type": "boolean",
            "description": "Allows additional historical address, email, and phone per row in json array format. A special plan feature is required for this to work, please contact support.\n",
            "default": false
          },
          "transform_preset": {
            "$ref": "#/components/schemas/TargetTransformPresetIdentified"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetModesIdentified` type.)\n\nSuitable for direct mail and canvassing.",
        "title": "Identified Identified representation"
      },
      "TargetModesMergePatch": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetModesHashedMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetModesReferencedMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetModesIdentifiedMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetModesAggregatedMergePatch"
          }
        ],
        "description": "Choose how the scopes's output should be formatted for this target. The following **modes** are available:\n\n**`aggregated`**\n  * This option will produce one row per geographical area.\n  * This option is best for geo-targeted ad campaigns.\n\n**`hashed`**\n  * Faraday's name, physical address, and email is emitted in hashed form. Data is randomly ordered to prevent re-identification. All payload columns are emitted except raw propensity scores and attributes. \n  * This option facilitates digital acquisition use cases.\n\n**`identified`**\n  * All identifiable information specified by `identity_sets` in source data is emitted in cleartext - see <a href=\"https://faraday.ai/developers/reference/createdataset\">/datasets</a> for more detail. All payload columns are emitted. Your account may have a limit on how many rows can be returned.\n  * This option is best for direct mail and canvassing campaigns.\n\n**`referenced`**\n  * This option will produce one row per person based on the identifier column of a dataset of your choice. To protect privacy, this will not include identifying information other than the key you select.\n  * This option is best for merging data back into your stack.\n",
        "discriminator": {
          "propertyName": "mode",
          "mapping": {
            "aggregated": "#/components/schemas/TargetModesAggregatedMergePatch",
            "hashed": "#/components/schemas/TargetModesHashedMergePatch",
            "identified": "#/components/schemas/TargetModesIdentifiedMergePatch",
            "referenced": "#/components/schemas/TargetModesReferencedMergePatch"
          }
        }
      },
      "TargetModesPost": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetModesHashedPost"
          },
          {
            "$ref": "#/components/schemas/TargetModesReferencedPost"
          },
          {
            "$ref": "#/components/schemas/TargetModesIdentifiedPost"
          },
          {
            "$ref": "#/components/schemas/TargetModesAggregatedPost"
          }
        ],
        "description": "Choose how the scopes's output should be formatted for this target. The following **modes** are available:\n\n**`aggregated`**\n  * This option will produce one row per geographical area.\n  * This option is best for geo-targeted ad campaigns.\n\n**`hashed`**\n  * Faraday's name, physical address, and email is emitted in hashed form. Data is randomly ordered to prevent re-identification. All payload columns are emitted except raw propensity scores and attributes. \n  * This option facilitates digital acquisition use cases.\n\n**`identified`**\n  * All identifiable information specified by `identity_sets` in source data is emitted in cleartext - see <a href=\"https://faraday.ai/developers/reference/createdataset\">/datasets</a> for more detail. All payload columns are emitted. Your account may have a limit on how many rows can be returned.\n  * This option is best for direct mail and canvassing campaigns.\n\n**`referenced`**\n  * This option will produce one row per person based on the identifier column of a dataset of your choice. To protect privacy, this will not include identifying information other than the key you select.\n  * This option is best for merging data back into your stack.\n",
        "discriminator": {
          "propertyName": "mode",
          "mapping": {
            "aggregated": "#/components/schemas/TargetModesAggregatedPost",
            "hashed": "#/components/schemas/TargetModesHashedPost",
            "identified": "#/components/schemas/TargetModesIdentifiedPost",
            "referenced": "#/components/schemas/TargetModesReferencedPost"
          }
        }
      },
      "TargetModesPut": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetModesHashedPut"
          },
          {
            "$ref": "#/components/schemas/TargetModesReferencedPut"
          },
          {
            "$ref": "#/components/schemas/TargetModesIdentifiedPut"
          },
          {
            "$ref": "#/components/schemas/TargetModesAggregatedPut"
          }
        ],
        "description": "Choose how the scopes's output should be formatted for this target. The following **modes** are available:\n\n**`aggregated`**\n  * This option will produce one row per geographical area.\n  * This option is best for geo-targeted ad campaigns.\n\n**`hashed`**\n  * Faraday's name, physical address, and email is emitted in hashed form. Data is randomly ordered to prevent re-identification. All payload columns are emitted except raw propensity scores and attributes. \n  * This option facilitates digital acquisition use cases.\n\n**`identified`**\n  * All identifiable information specified by `identity_sets` in source data is emitted in cleartext - see <a href=\"https://faraday.ai/developers/reference/createdataset\">/datasets</a> for more detail. All payload columns are emitted. Your account may have a limit on how many rows can be returned.\n  * This option is best for direct mail and canvassing campaigns.\n\n**`referenced`**\n  * This option will produce one row per person based on the identifier column of a dataset of your choice. To protect privacy, this will not include identifying information other than the key you select.\n  * This option is best for merging data back into your stack.\n",
        "discriminator": {
          "propertyName": "mode",
          "mapping": {
            "aggregated": "#/components/schemas/TargetModesAggregatedPut",
            "hashed": "#/components/schemas/TargetModesHashedPut",
            "identified": "#/components/schemas/TargetModesIdentifiedPut",
            "referenced": "#/components/schemas/TargetModesReferencedPut"
          }
        }
      },
      "TargetModesReferenced": {
        "type": "object",
        "required": [
          "mode",
          "reference"
        ],
        "properties": {
          "impute_payload": {
            "$ref": "#/components/schemas/TargetImputePayload"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "referenced"
          },
          "output_multiple_identities": {
            "type": "boolean",
            "description": "Allows additional historical address, email, and phone per row in json array format. A special plan feature is required for this to work, please contact support.\n",
            "default": false
          },
          "reference": {
            "$ref": "#/components/schemas/TargetReferencedReference"
          },
          "reference_dataset_id": {
            "type": "string",
            "description": "**Deprecated:** use reference instead\nThe referenced dataset ID. This dataset must have a `reference_key_column`.\n",
            "format": "uuid"
          },
          "transform_preset": {
            "$ref": "#/components/schemas/TargetTransformPresetReferenced"
          }
        },
        "additionalProperties": false,
        "description": "Suitable for data warehouse integrations. Not supported by options.type = \"lookup_api\"",
        "title": "Referenced representation"
      },
      "TargetModesReferencedMergePatch": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "impute_payload": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TargetImputePayload"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "referenced"
          },
          "output_multiple_identities": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "default": false
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Allows additional historical address, email, and phone per row in json array format. A special plan feature is required for this to work, please contact support.\n"
          },
          "reference": {
            "$ref": "#/components/schemas/TargetReferencedReference"
          },
          "reference_dataset_id": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "format": "uuid"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "**Deprecated:** use reference instead\nThe referenced dataset ID. This dataset must have a `reference_key_column`.\n"
          },
          "transform_preset": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TargetTransformPresetReferenced"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetModesReferenced` type.)\n\nSuitable for data warehouse integrations. Not supported by options.type = \"lookup_api\"",
        "title": "Referenced representation"
      },
      "TargetModesReferencedPost": {
        "type": "object",
        "required": [
          "mode",
          "reference"
        ],
        "properties": {
          "impute_payload": {
            "$ref": "#/components/schemas/TargetImputePayload"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "referenced"
          },
          "output_multiple_identities": {
            "type": "boolean",
            "description": "Allows additional historical address, email, and phone per row in json array format. A special plan feature is required for this to work, please contact support.\n",
            "default": false
          },
          "reference": {
            "$ref": "#/components/schemas/TargetReferencedReference"
          },
          "reference_dataset_id": {
            "type": "string",
            "description": "**Deprecated:** use reference instead\nThe referenced dataset ID. This dataset must have a `reference_key_column`.\n",
            "format": "uuid"
          },
          "transform_preset": {
            "$ref": "#/components/schemas/TargetTransformPresetReferenced"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetModesReferenced` type.)\n\nSuitable for data warehouse integrations. Not supported by options.type = \"lookup_api\"",
        "title": "Referenced representation"
      },
      "TargetModesReferencedPut": {
        "type": "object",
        "required": [
          "mode",
          "reference"
        ],
        "properties": {
          "impute_payload": {
            "$ref": "#/components/schemas/TargetImputePayload"
          },
          "mode": {
            "type": "string",
            "description": "The replication mode",
            "const": "referenced"
          },
          "output_multiple_identities": {
            "type": "boolean",
            "description": "Allows additional historical address, email, and phone per row in json array format. A special plan feature is required for this to work, please contact support.\n",
            "default": false
          },
          "reference": {
            "$ref": "#/components/schemas/TargetReferencedReference"
          },
          "reference_dataset_id": {
            "type": "string",
            "description": "**Deprecated:** use reference instead\nThe referenced dataset ID. This dataset must have a `reference_key_column`.\n",
            "format": "uuid"
          },
          "transform_preset": {
            "$ref": "#/components/schemas/TargetTransformPresetReferenced"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetModesReferenced` type.)\n\nSuitable for data warehouse integrations. Not supported by options.type = \"lookup_api\"",
        "title": "Referenced representation"
      },
      "TargetOptions": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetOptionsAthena"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsAuroraMysql"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsAuroraPostgres"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRdsMysql"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRdsPostgres"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRdsSqlServer"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRedshiftServerless"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAzureSqlServer"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsBigQuery"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsClickhouse"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsDatabricks"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsFacebookCustomAudiences"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpCloudSqlMysql"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpCloudSqlPostgres"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpCloudSqlSqlServer"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpGcsCsv"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGoogleAds"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsHostedCsv"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsHubspot"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsIterable"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsKlaviyo"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsLinkedinAds"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsLookupApi"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsMotherduck"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsMysql"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsPinterestAds"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsPoplar"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsPostgres"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsRedshift"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsS3Csv"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSalesforce"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSalesforceMarketingCloud"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSegment"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSftp"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSnowflake"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSqlServer"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsTheTradeDesk"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsTiktok"
          }
        ],
        "description": "The export target configuration options. These vary by connection type.\n",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/TargetOptionsAthena",
            "aws_aurora_mysql": "#/components/schemas/TargetOptionsAwsAuroraMysql",
            "aws_aurora_postgres": "#/components/schemas/TargetOptionsAwsAuroraPostgres",
            "aws_rds_mysql": "#/components/schemas/TargetOptionsAwsRdsMysql",
            "aws_rds_postgres": "#/components/schemas/TargetOptionsAwsRdsPostgres",
            "aws_rds_sql_server": "#/components/schemas/TargetOptionsAwsRdsSqlServer",
            "aws_redshift_serverless": "#/components/schemas/TargetOptionsAwsRedshiftServerless",
            "azure_sql_server": "#/components/schemas/TargetOptionsAzureSqlServer",
            "bigquery": "#/components/schemas/TargetOptionsBigQuery",
            "clickhouse": "#/components/schemas/TargetOptionsClickhouse",
            "databricks": "#/components/schemas/TargetOptionsDatabricks",
            "facebook_custom_audiences": "#/components/schemas/TargetOptionsFacebookCustomAudiences",
            "gcp_cloud_sql_mysql": "#/components/schemas/TargetOptionsGcpCloudSqlMysql",
            "gcp_cloud_sql_postgres": "#/components/schemas/TargetOptionsGcpCloudSqlPostgres",
            "gcp_cloud_sql_sql_server": "#/components/schemas/TargetOptionsGcpCloudSqlSqlServer",
            "gcp_gcs_csv": "#/components/schemas/TargetOptionsGcpGcsCsv",
            "google_ads": "#/components/schemas/TargetOptionsGoogleAds",
            "hosted_csv": "#/components/schemas/TargetOptionsHostedCsv",
            "hubspot": "#/components/schemas/TargetOptionsHubspot",
            "iterable": "#/components/schemas/TargetOptionsIterable",
            "klaviyo": "#/components/schemas/TargetOptionsKlaviyo",
            "linkedin_ads": "#/components/schemas/TargetOptionsLinkedinAds",
            "lookup_api": "#/components/schemas/TargetOptionsLookupApi",
            "motherduck": "#/components/schemas/TargetOptionsMotherduck",
            "mysql": "#/components/schemas/TargetOptionsMysql",
            "pinterest_ads": "#/components/schemas/TargetOptionsPinterestAds",
            "poplar": "#/components/schemas/TargetOptionsPoplar",
            "postgres": "#/components/schemas/TargetOptionsPostgres",
            "redshift": "#/components/schemas/TargetOptionsRedshift",
            "s3_csv": "#/components/schemas/TargetOptionsS3Csv",
            "salesforce": "#/components/schemas/TargetOptionsSalesforce",
            "salesforce_marketing_cloud": "#/components/schemas/TargetOptionsSalesforceMarketingCloud",
            "segment": "#/components/schemas/TargetOptionsSegment",
            "sftp": "#/components/schemas/TargetOptionsSftp",
            "snowflake": "#/components/schemas/TargetOptionsSnowflake",
            "sql_server": "#/components/schemas/TargetOptionsSqlServer",
            "the_trade_desk": "#/components/schemas/TargetOptionsTheTradeDesk",
            "tiktok": "#/components/schemas/TargetOptionsTiktok"
          }
        }
      },
      "TargetOptionsAthena": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "athena"
          }
        },
        "additionalProperties": false,
        "description": "Athena options",
        "title": "Athena"
      },
      "TargetOptionsAthenaMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "athena"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsAthena` type.)\n\nAthena options",
        "title": "Athena"
      },
      "TargetOptionsAthenaPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "athena"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsAthena` type.)\n\nAthena options",
        "title": "Athena"
      },
      "TargetOptionsAthenaPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "athena"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsAthena` type.)\n\nAthena options",
        "title": "Athena"
      },
      "TargetOptionsAwsAuroraMysql": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_mysql"
          }
        },
        "additionalProperties": false,
        "description": "Aurora (MySQL) options",
        "title": "Aurora (MySQL)"
      },
      "TargetOptionsAwsAuroraMysqlMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsAwsAuroraMysql` type.)\n\nAurora (MySQL) options",
        "title": "Aurora (MySQL)"
      },
      "TargetOptionsAwsAuroraMysqlPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsAwsAuroraMysql` type.)\n\nAurora (MySQL) options",
        "title": "Aurora (MySQL)"
      },
      "TargetOptionsAwsAuroraMysqlPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsAwsAuroraMysql` type.)\n\nAurora (MySQL) options",
        "title": "Aurora (MySQL)"
      },
      "TargetOptionsAwsAuroraPostgres": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_postgres"
          }
        },
        "additionalProperties": false,
        "description": "AWS Aurora Postgres options",
        "title": "AWS Aurora Postgres"
      },
      "TargetOptionsAwsAuroraPostgresMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsAwsAuroraPostgres` type.)\n\nAWS Aurora Postgres options",
        "title": "AWS Aurora Postgres"
      },
      "TargetOptionsAwsAuroraPostgresPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsAwsAuroraPostgres` type.)\n\nAWS Aurora Postgres options",
        "title": "AWS Aurora Postgres"
      },
      "TargetOptionsAwsAuroraPostgresPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_aurora_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsAwsAuroraPostgres` type.)\n\nAWS Aurora Postgres options",
        "title": "AWS Aurora Postgres"
      },
      "TargetOptionsAwsRdsMysql": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_mysql"
          }
        },
        "additionalProperties": false,
        "description": "RDS (MySQL) options",
        "title": "RDS (MySQL)"
      },
      "TargetOptionsAwsRdsMysqlMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsAwsRdsMysql` type.)\n\nRDS (MySQL) options",
        "title": "RDS (MySQL)"
      },
      "TargetOptionsAwsRdsMysqlPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsAwsRdsMysql` type.)\n\nRDS (MySQL) options",
        "title": "RDS (MySQL)"
      },
      "TargetOptionsAwsRdsMysqlPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsAwsRdsMysql` type.)\n\nRDS (MySQL) options",
        "title": "RDS (MySQL)"
      },
      "TargetOptionsAwsRdsPostgres": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_postgres"
          }
        },
        "additionalProperties": false,
        "description": "RDS (Postgres) options",
        "title": "RDS (Postgres)"
      },
      "TargetOptionsAwsRdsPostgresMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsAwsRdsPostgres` type.)\n\nRDS (Postgres) options",
        "title": "RDS (Postgres)"
      },
      "TargetOptionsAwsRdsPostgresPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsAwsRdsPostgres` type.)\n\nRDS (Postgres) options",
        "title": "RDS (Postgres)"
      },
      "TargetOptionsAwsRdsPostgresPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsAwsRdsPostgres` type.)\n\nRDS (Postgres) options",
        "title": "RDS (Postgres)"
      },
      "TargetOptionsAwsRdsSqlServer": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "RDS (SQL Server) options",
        "title": "RDS (SQL Server)"
      },
      "TargetOptionsAwsRdsSqlServerMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsAwsRdsSqlServer` type.)\n\nRDS (SQL Server) options",
        "title": "RDS (SQL Server)"
      },
      "TargetOptionsAwsRdsSqlServerPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsAwsRdsSqlServer` type.)\n\nRDS (SQL Server) options",
        "title": "RDS (SQL Server)"
      },
      "TargetOptionsAwsRdsSqlServerPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_rds_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsAwsRdsSqlServer` type.)\n\nRDS (SQL Server) options",
        "title": "RDS (SQL Server)"
      },
      "TargetOptionsAwsRedshiftServerless": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_redshift_serverless"
          }
        },
        "additionalProperties": false,
        "description": "Redshift Serverless options",
        "title": "Redshift Serverless"
      },
      "TargetOptionsAwsRedshiftServerlessMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_redshift_serverless"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsAwsRedshiftServerless` type.)\n\nRedshift Serverless options",
        "title": "Redshift Serverless"
      },
      "TargetOptionsAwsRedshiftServerlessPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_redshift_serverless"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsAwsRedshiftServerless` type.)\n\nRedshift Serverless options",
        "title": "Redshift Serverless"
      },
      "TargetOptionsAwsRedshiftServerlessPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "aws_redshift_serverless"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsAwsRedshiftServerless` type.)\n\nRedshift Serverless options",
        "title": "Redshift Serverless"
      },
      "TargetOptionsAzureSqlServer": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "azure_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "Azure SQL options",
        "title": "Azure SQL"
      },
      "TargetOptionsAzureSqlServerMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "azure_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsAzureSqlServer` type.)\n\nAzure SQL options",
        "title": "Azure SQL"
      },
      "TargetOptionsAzureSqlServerPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "azure_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsAzureSqlServer` type.)\n\nAzure SQL options",
        "title": "Azure SQL"
      },
      "TargetOptionsAzureSqlServerPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "azure_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsAzureSqlServer` type.)\n\nAzure SQL options",
        "title": "Azure SQL"
      },
      "TargetOptionsBigQuery": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "day_partitioned": {
            "type": "boolean",
            "description": "Date-based partitioning allows the data to be <a href =\"https://cloud.google.com/bigquery/docs/partitioned-tables#date_timestamp_partitioned_tables\">partitioned by date</a>. This will appear as a `fdy_batch_date` column."
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "bigquery"
          },
          "upsert": {
            "type": "boolean",
            "description": "Currently only supported on Referenced targets on GCP BigQuery and Snowflake, upsert allows Faraday to write multiple times to the same table from different Targets. It will use the reference_key_column on the referenced Dataset."
          }
        },
        "additionalProperties": false,
        "description": "BigQuery options",
        "title": "BigQuery"
      },
      "TargetOptionsBigQueryMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "day_partitioned": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Date-based partitioning allows the data to be <a href =\"https://cloud.google.com/bigquery/docs/partitioned-tables#date_timestamp_partitioned_tables\">partitioned by date</a>. This will appear as a `fdy_batch_date` column."
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "bigquery"
          },
          "upsert": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Currently only supported on Referenced targets on GCP BigQuery and Snowflake, upsert allows Faraday to write multiple times to the same table from different Targets. It will use the reference_key_column on the referenced Dataset."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsBigQuery` type.)\n\nBigQuery options",
        "title": "BigQuery"
      },
      "TargetOptionsBigQueryPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "day_partitioned": {
            "type": "boolean",
            "description": "Date-based partitioning allows the data to be <a href =\"https://cloud.google.com/bigquery/docs/partitioned-tables#date_timestamp_partitioned_tables\">partitioned by date</a>. This will appear as a `fdy_batch_date` column."
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "bigquery"
          },
          "upsert": {
            "type": "boolean",
            "description": "Currently only supported on Referenced targets on GCP BigQuery and Snowflake, upsert allows Faraday to write multiple times to the same table from different Targets. It will use the reference_key_column on the referenced Dataset."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsBigQuery` type.)\n\nBigQuery options",
        "title": "BigQuery"
      },
      "TargetOptionsBigQueryPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "day_partitioned": {
            "type": "boolean",
            "description": "Date-based partitioning allows the data to be <a href =\"https://cloud.google.com/bigquery/docs/partitioned-tables#date_timestamp_partitioned_tables\">partitioned by date</a>. This will appear as a `fdy_batch_date` column."
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "bigquery"
          },
          "upsert": {
            "type": "boolean",
            "description": "Currently only supported on Referenced targets on GCP BigQuery and Snowflake, upsert allows Faraday to write multiple times to the same table from different Targets. It will use the reference_key_column on the referenced Dataset."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsBigQuery` type.)\n\nBigQuery options",
        "title": "BigQuery"
      },
      "TargetOptionsClickhouse": {
        "type": "object",
        "required": [
          "order_by",
          "table_name",
          "type"
        ],
        "properties": {
          "order_by": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A ClickHouse column name included in ENGINE = MergeTree ORDER BY (...)",
              "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
            },
            "description": "Column names for ENGINE = MergeTree ORDER BY (...). Required for ClickHouse targets. Full replacement only; append and upsert are not supported.",
            "minItems": 1
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "clickhouse"
          }
        },
        "additionalProperties": false,
        "description": "ClickHouse options",
        "title": "ClickHouse"
      },
      "TargetOptionsClickhouseMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "order_by": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A ClickHouse column name included in ENGINE = MergeTree ORDER BY (...)",
              "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
            },
            "description": "Column names for ENGINE = MergeTree ORDER BY (...). Required for ClickHouse targets. Full replacement only; append and upsert are not supported.",
            "minItems": 1
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "clickhouse"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsClickhouse` type.)\n\nClickHouse options",
        "title": "ClickHouse"
      },
      "TargetOptionsClickhousePost": {
        "type": "object",
        "required": [
          "order_by",
          "table_name",
          "type"
        ],
        "properties": {
          "order_by": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A ClickHouse column name included in ENGINE = MergeTree ORDER BY (...)",
              "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
            },
            "description": "Column names for ENGINE = MergeTree ORDER BY (...). Required for ClickHouse targets. Full replacement only; append and upsert are not supported.",
            "minItems": 1
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "clickhouse"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsClickhouse` type.)\n\nClickHouse options",
        "title": "ClickHouse"
      },
      "TargetOptionsClickhousePut": {
        "type": "object",
        "required": [
          "order_by",
          "table_name",
          "type"
        ],
        "properties": {
          "order_by": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A ClickHouse column name included in ENGINE = MergeTree ORDER BY (...)",
              "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
            },
            "description": "Column names for ENGINE = MergeTree ORDER BY (...). Required for ClickHouse targets. Full replacement only; append and upsert are not supported.",
            "minItems": 1
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "clickhouse"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsClickhouse` type.)\n\nClickHouse options",
        "title": "ClickHouse"
      },
      "TargetOptionsDatabricks": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks"
          },
          "upsert": {
            "type": "boolean",
            "description": "Currently only supported on referenced targets. Faraday merges into the existing table using the reference_key_column from the referenced dataset. Without upsert, each run replaces the destination table."
          }
        },
        "additionalProperties": false,
        "description": "Databricks options",
        "title": "Databricks"
      },
      "TargetOptionsDatabricksMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks"
          },
          "upsert": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Currently only supported on referenced targets. Faraday merges into the existing table using the reference_key_column from the referenced dataset. Without upsert, each run replaces the destination table."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsDatabricks` type.)\n\nDatabricks options",
        "title": "Databricks"
      },
      "TargetOptionsDatabricksPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks"
          },
          "upsert": {
            "type": "boolean",
            "description": "Currently only supported on referenced targets. Faraday merges into the existing table using the reference_key_column from the referenced dataset. Without upsert, each run replaces the destination table."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsDatabricks` type.)\n\nDatabricks options",
        "title": "Databricks"
      },
      "TargetOptionsDatabricksPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]*$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "databricks"
          },
          "upsert": {
            "type": "boolean",
            "description": "Currently only supported on referenced targets. Faraday merges into the existing table using the reference_key_column from the referenced dataset. Without upsert, each run replaces the destination table."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsDatabricks` type.)\n\nDatabricks options",
        "title": "Databricks"
      },
      "TargetOptionsFacebookCustomAudiences": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "facebook_custom_audiences"
          }
        },
        "additionalProperties": false,
        "description": "Facebook Custom Audiences options",
        "title": "Facebook Custom Audiences"
      },
      "TargetOptionsFacebookCustomAudiencesMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "facebook_custom_audiences"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsFacebookCustomAudiences` type.)\n\nFacebook Custom Audiences options",
        "title": "Facebook Custom Audiences"
      },
      "TargetOptionsFacebookCustomAudiencesPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "facebook_custom_audiences"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsFacebookCustomAudiences` type.)\n\nFacebook Custom Audiences options",
        "title": "Facebook Custom Audiences"
      },
      "TargetOptionsFacebookCustomAudiencesPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "facebook_custom_audiences"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsFacebookCustomAudiences` type.)\n\nFacebook Custom Audiences options",
        "title": "Facebook Custom Audiences"
      },
      "TargetOptionsGcpCloudSqlMysql": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_mysql"
          }
        },
        "additionalProperties": false,
        "description": "Google Cloud SQL (MySQL) options",
        "title": "Google Cloud SQL (MySQL)"
      },
      "TargetOptionsGcpCloudSqlMysqlMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsGcpCloudSqlMysql` type.)\n\nGoogle Cloud SQL (MySQL) options",
        "title": "Google Cloud SQL (MySQL)"
      },
      "TargetOptionsGcpCloudSqlMysqlPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsGcpCloudSqlMysql` type.)\n\nGoogle Cloud SQL (MySQL) options",
        "title": "Google Cloud SQL (MySQL)"
      },
      "TargetOptionsGcpCloudSqlMysqlPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsGcpCloudSqlMysql` type.)\n\nGoogle Cloud SQL (MySQL) options",
        "title": "Google Cloud SQL (MySQL)"
      },
      "TargetOptionsGcpCloudSqlPostgres": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_postgres"
          }
        },
        "additionalProperties": false,
        "description": "Google Cloud SQL (Postgres) options",
        "title": "Google Cloud SQL (Postgres)"
      },
      "TargetOptionsGcpCloudSqlPostgresMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsGcpCloudSqlPostgres` type.)\n\nGoogle Cloud SQL (Postgres) options",
        "title": "Google Cloud SQL (Postgres)"
      },
      "TargetOptionsGcpCloudSqlPostgresPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsGcpCloudSqlPostgres` type.)\n\nGoogle Cloud SQL (Postgres) options",
        "title": "Google Cloud SQL (Postgres)"
      },
      "TargetOptionsGcpCloudSqlPostgresPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsGcpCloudSqlPostgres` type.)\n\nGoogle Cloud SQL (Postgres) options",
        "title": "Google Cloud SQL (Postgres)"
      },
      "TargetOptionsGcpCloudSqlSqlServer": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "Google Cloud SQL (SQL Server) options",
        "title": "Google Cloud SQL (SQL Server)"
      },
      "TargetOptionsGcpCloudSqlSqlServerMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsGcpCloudSqlSqlServer` type.)\n\nGoogle Cloud SQL (SQL Server) options",
        "title": "Google Cloud SQL (SQL Server)"
      },
      "TargetOptionsGcpCloudSqlSqlServerPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsGcpCloudSqlSqlServer` type.)\n\nGoogle Cloud SQL (SQL Server) options",
        "title": "Google Cloud SQL (SQL Server)"
      },
      "TargetOptionsGcpCloudSqlSqlServerPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_cloud_sql_sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsGcpCloudSqlSqlServer` type.)\n\nGoogle Cloud SQL (SQL Server) options",
        "title": "Google Cloud SQL (SQL Server)"
      },
      "TargetOptionsGcpGcsCsv": {
        "type": "object",
        "required": [
          "object_key",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "gzip": {
            "type": "boolean",
            "description": "Whether files are gzipped."
          },
          "object_key": {
            "type": "string",
            "description": "The object key inside of the bucket. For example, path/to/my/file.csv. If you enable gzip, best practice is to add .gz to the end. Note: strftime substitutions like %Y-%m-%d are supported.",
            "pattern": "^[a-z0-9][a-zA-Z0-9/_\\-%.]+$"
          },
          "quote_all": {
            "type": "boolean",
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_gcs_csv"
          }
        },
        "additionalProperties": false,
        "description": "GCS options",
        "title": "GCS"
      },
      "TargetOptionsGcpGcsCsvMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "delimiter": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^([,;|\\t]|\\\\t)$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`."
          },
          "gzip": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether files are gzipped."
          },
          "object_key": {
            "type": "string",
            "description": "The object key inside of the bucket. For example, path/to/my/file.csv. If you enable gzip, best practice is to add .gz to the end. Note: strftime substitutions like %Y-%m-%d are supported.",
            "pattern": "^[a-z0-9][a-zA-Z0-9/_\\-%.]+$"
          },
          "quote_all": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_gcs_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsGcpGcsCsv` type.)\n\nGCS options",
        "title": "GCS"
      },
      "TargetOptionsGcpGcsCsvPost": {
        "type": "object",
        "required": [
          "object_key",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "gzip": {
            "type": "boolean",
            "description": "Whether files are gzipped."
          },
          "object_key": {
            "type": "string",
            "description": "The object key inside of the bucket. For example, path/to/my/file.csv. If you enable gzip, best practice is to add .gz to the end. Note: strftime substitutions like %Y-%m-%d are supported.",
            "pattern": "^[a-z0-9][a-zA-Z0-9/_\\-%.]+$"
          },
          "quote_all": {
            "type": "boolean",
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_gcs_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsGcpGcsCsv` type.)\n\nGCS options",
        "title": "GCS"
      },
      "TargetOptionsGcpGcsCsvPut": {
        "type": "object",
        "required": [
          "object_key",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "gzip": {
            "type": "boolean",
            "description": "Whether files are gzipped."
          },
          "object_key": {
            "type": "string",
            "description": "The object key inside of the bucket. For example, path/to/my/file.csv. If you enable gzip, best practice is to add .gz to the end. Note: strftime substitutions like %Y-%m-%d are supported.",
            "pattern": "^[a-z0-9][a-zA-Z0-9/_\\-%.]+$"
          },
          "quote_all": {
            "type": "boolean",
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "gcp_gcs_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsGcpGcsCsv` type.)\n\nGCS options",
        "title": "GCS"
      },
      "TargetOptionsGoogleAds": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "google_ads"
          }
        },
        "additionalProperties": false,
        "description": "Google Ads options",
        "title": "Google Ads"
      },
      "TargetOptionsGoogleAdsMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "google_ads"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsGoogleAds` type.)\n\nGoogle Ads options",
        "title": "Google Ads"
      },
      "TargetOptionsGoogleAdsPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "google_ads"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsGoogleAds` type.)\n\nGoogle Ads options",
        "title": "Google Ads"
      },
      "TargetOptionsGoogleAdsPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "google_ads"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsGoogleAds` type.)\n\nGoogle Ads options",
        "title": "Google Ads"
      },
      "TargetOptionsHostedCsv": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "gzip": {
            "type": "boolean",
            "description": "Whether files are gzipped."
          },
          "output_url": {
            "type": "string",
            "description": "The Faraday-hosted URL of the target's csv output file.",
            "pattern": "^https?://.+"
          },
          "quote_all": {
            "type": "boolean",
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hosted_csv"
          }
        },
        "additionalProperties": false,
        "description": "CSV options",
        "title": "CSV"
      },
      "TargetOptionsHostedCsvMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "delimiter": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^([,;|\\t]|\\\\t)$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`."
          },
          "gzip": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether files are gzipped."
          },
          "quote_all": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hosted_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsHostedCsv` type.)\n\nCSV options",
        "title": "CSV"
      },
      "TargetOptionsHostedCsvPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "gzip": {
            "type": "boolean",
            "description": "Whether files are gzipped."
          },
          "quote_all": {
            "type": "boolean",
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hosted_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsHostedCsv` type.)\n\nCSV options",
        "title": "CSV"
      },
      "TargetOptionsHostedCsvPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "gzip": {
            "type": "boolean",
            "description": "Whether files are gzipped."
          },
          "quote_all": {
            "type": "boolean",
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hosted_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsHostedCsv` type.)\n\nCSV options",
        "title": "CSV"
      },
      "TargetOptionsHubspot": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hubspot"
          }
        },
        "additionalProperties": false,
        "description": "HubSpot options",
        "title": "HubSpot"
      },
      "TargetOptionsHubspotMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hubspot"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsHubspot` type.)\n\nHubSpot options",
        "title": "HubSpot"
      },
      "TargetOptionsHubspotPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hubspot"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsHubspot` type.)\n\nHubSpot options",
        "title": "HubSpot"
      },
      "TargetOptionsHubspotPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "hubspot"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsHubspot` type.)\n\nHubSpot options",
        "title": "HubSpot"
      },
      "TargetOptionsIterable": {
        "type": "object",
        "required": [
          "api_key",
          "project_identifier",
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "The API key must have server-side permissions. Refer to <a href=\"https://support.iterable.com/hc/en-us/articles/360043464871-API-Keys-#server-side-keys\">the Iterable docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "project_identifier": {
            "type": "string",
            "description": "The unique identifier of the Iterable project - email or user_id. Refer to <a href=\"https://support.iterable.com/hc/en-us/articles/9216719179796#checking-the-unique-identifier-for-a-project\">the Iterable docs</a>.",
            "pattern": "^\\S+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "iterable"
          }
        },
        "additionalProperties": false,
        "description": "Iterable options",
        "title": "Iterable"
      },
      "TargetOptionsIterableMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "The API key must have server-side permissions. Refer to <a href=\"https://support.iterable.com/hc/en-us/articles/360043464871-API-Keys-#server-side-keys\">the Iterable docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "project_identifier": {
            "type": "string",
            "description": "The unique identifier of the Iterable project - email or user_id. Refer to <a href=\"https://support.iterable.com/hc/en-us/articles/9216719179796#checking-the-unique-identifier-for-a-project\">the Iterable docs</a>.",
            "pattern": "^\\S+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "iterable"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsIterable` type.)\n\nIterable options",
        "title": "Iterable"
      },
      "TargetOptionsIterablePost": {
        "type": "object",
        "required": [
          "api_key",
          "project_identifier",
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "The API key must have server-side permissions. Refer to <a href=\"https://support.iterable.com/hc/en-us/articles/360043464871-API-Keys-#server-side-keys\">the Iterable docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "project_identifier": {
            "type": "string",
            "description": "The unique identifier of the Iterable project - email or user_id. Refer to <a href=\"https://support.iterable.com/hc/en-us/articles/9216719179796#checking-the-unique-identifier-for-a-project\">the Iterable docs</a>.",
            "pattern": "^\\S+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "iterable"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsIterable` type.)\n\nIterable options",
        "title": "Iterable"
      },
      "TargetOptionsIterablePut": {
        "type": "object",
        "required": [
          "api_key",
          "project_identifier",
          "type"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "The API key must have server-side permissions. Refer to <a href=\"https://support.iterable.com/hc/en-us/articles/360043464871-API-Keys-#server-side-keys\">the Iterable docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "project_identifier": {
            "type": "string",
            "description": "The unique identifier of the Iterable project - email or user_id. Refer to <a href=\"https://support.iterable.com/hc/en-us/articles/9216719179796#checking-the-unique-identifier-for-a-project\">the Iterable docs</a>.",
            "pattern": "^\\S+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "iterable"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsIterable` type.)\n\nIterable options",
        "title": "Iterable"
      },
      "TargetOptionsKlaviyo": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "klaviyo"
          }
        },
        "additionalProperties": false,
        "description": "Klaviyo options",
        "title": "Klaviyo"
      },
      "TargetOptionsKlaviyoMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "klaviyo"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsKlaviyo` type.)\n\nKlaviyo options",
        "title": "Klaviyo"
      },
      "TargetOptionsKlaviyoPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "klaviyo"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsKlaviyo` type.)\n\nKlaviyo options",
        "title": "Klaviyo"
      },
      "TargetOptionsKlaviyoPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "klaviyo"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsKlaviyo` type.)\n\nKlaviyo options",
        "title": "Klaviyo"
      },
      "TargetOptionsLinkedinAds": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "linkedin_ads"
          }
        },
        "additionalProperties": false,
        "description": "LinkedIn Ads options",
        "title": "LinkedIn Ads"
      },
      "TargetOptionsLinkedinAdsMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "linkedin_ads"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsLinkedinAds` type.)\n\nLinkedIn Ads options",
        "title": "LinkedIn Ads"
      },
      "TargetOptionsLinkedinAdsPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "linkedin_ads"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsLinkedinAds` type.)\n\nLinkedIn Ads options",
        "title": "LinkedIn Ads"
      },
      "TargetOptionsLinkedinAdsPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "linkedin_ads"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsLinkedinAds` type.)\n\nLinkedIn Ads options",
        "title": "LinkedIn Ads"
      },
      "TargetOptionsLookupApi": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "output_url": {
            "type": "string",
            "description": "The Faraday-hosted URL of the hosted API.",
            "pattern": "^https?://.+"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "lookup_api"
          }
        },
        "additionalProperties": false,
        "description": "Lookup API options",
        "title": "Lookup API"
      },
      "TargetOptionsLookupApiMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "lookup_api"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsLookupApi` type.)\n\nLookup API options",
        "title": "Lookup API"
      },
      "TargetOptionsLookupApiPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "lookup_api"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsLookupApi` type.)\n\nLookup API options",
        "title": "Lookup API"
      },
      "TargetOptionsLookupApiPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "lookup_api"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsLookupApi` type.)\n\nLookup API options",
        "title": "Lookup API"
      },
      "TargetOptionsMergePatch": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetOptionsAthenaMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsAuroraMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsAuroraPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRdsMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRdsPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRdsSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRedshiftServerlessMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAzureSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsBigQueryMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsClickhouseMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsDatabricksMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsFacebookCustomAudiencesMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpCloudSqlMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpCloudSqlPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpCloudSqlSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpGcsCsvMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGoogleAdsMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsHostedCsvMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsHubspotMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsIterableMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsKlaviyoMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsLinkedinAdsMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsLookupApiMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsMotherduckMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsMysqlMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsPinterestAdsMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsPoplarMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsPostgresMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsRedshiftMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsS3CsvMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSalesforceMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSalesforceMarketingCloudMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSegmentMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSftpMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSnowflakeMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSqlServerMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsTheTradeDeskMergePatch"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsTiktokMergePatch"
          }
        ],
        "description": "The export target configuration options. These vary by connection type.\n",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/TargetOptionsAthenaMergePatch",
            "aws_aurora_mysql": "#/components/schemas/TargetOptionsAwsAuroraMysqlMergePatch",
            "aws_aurora_postgres": "#/components/schemas/TargetOptionsAwsAuroraPostgresMergePatch",
            "aws_rds_mysql": "#/components/schemas/TargetOptionsAwsRdsMysqlMergePatch",
            "aws_rds_postgres": "#/components/schemas/TargetOptionsAwsRdsPostgresMergePatch",
            "aws_rds_sql_server": "#/components/schemas/TargetOptionsAwsRdsSqlServerMergePatch",
            "aws_redshift_serverless": "#/components/schemas/TargetOptionsAwsRedshiftServerlessMergePatch",
            "azure_sql_server": "#/components/schemas/TargetOptionsAzureSqlServerMergePatch",
            "bigquery": "#/components/schemas/TargetOptionsBigQueryMergePatch",
            "clickhouse": "#/components/schemas/TargetOptionsClickhouseMergePatch",
            "databricks": "#/components/schemas/TargetOptionsDatabricksMergePatch",
            "facebook_custom_audiences": "#/components/schemas/TargetOptionsFacebookCustomAudiencesMergePatch",
            "gcp_cloud_sql_mysql": "#/components/schemas/TargetOptionsGcpCloudSqlMysqlMergePatch",
            "gcp_cloud_sql_postgres": "#/components/schemas/TargetOptionsGcpCloudSqlPostgresMergePatch",
            "gcp_cloud_sql_sql_server": "#/components/schemas/TargetOptionsGcpCloudSqlSqlServerMergePatch",
            "gcp_gcs_csv": "#/components/schemas/TargetOptionsGcpGcsCsvMergePatch",
            "google_ads": "#/components/schemas/TargetOptionsGoogleAdsMergePatch",
            "hosted_csv": "#/components/schemas/TargetOptionsHostedCsvMergePatch",
            "hubspot": "#/components/schemas/TargetOptionsHubspotMergePatch",
            "iterable": "#/components/schemas/TargetOptionsIterableMergePatch",
            "klaviyo": "#/components/schemas/TargetOptionsKlaviyoMergePatch",
            "linkedin_ads": "#/components/schemas/TargetOptionsLinkedinAdsMergePatch",
            "lookup_api": "#/components/schemas/TargetOptionsLookupApiMergePatch",
            "motherduck": "#/components/schemas/TargetOptionsMotherduckMergePatch",
            "mysql": "#/components/schemas/TargetOptionsMysqlMergePatch",
            "pinterest_ads": "#/components/schemas/TargetOptionsPinterestAdsMergePatch",
            "poplar": "#/components/schemas/TargetOptionsPoplarMergePatch",
            "postgres": "#/components/schemas/TargetOptionsPostgresMergePatch",
            "redshift": "#/components/schemas/TargetOptionsRedshiftMergePatch",
            "s3_csv": "#/components/schemas/TargetOptionsS3CsvMergePatch",
            "salesforce": "#/components/schemas/TargetOptionsSalesforceMergePatch",
            "salesforce_marketing_cloud": "#/components/schemas/TargetOptionsSalesforceMarketingCloudMergePatch",
            "segment": "#/components/schemas/TargetOptionsSegmentMergePatch",
            "sftp": "#/components/schemas/TargetOptionsSftpMergePatch",
            "snowflake": "#/components/schemas/TargetOptionsSnowflakeMergePatch",
            "sql_server": "#/components/schemas/TargetOptionsSqlServerMergePatch",
            "the_trade_desk": "#/components/schemas/TargetOptionsTheTradeDeskMergePatch",
            "tiktok": "#/components/schemas/TargetOptionsTiktokMergePatch"
          }
        }
      },
      "TargetOptionsMotherduck": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "schema": {
            "type": "string",
            "description": "MotherDuck schema name. Defaults to 'main' if not provided.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "motherduck"
          }
        },
        "additionalProperties": false,
        "description": "MotherDuck options",
        "title": "MotherDuck"
      },
      "TargetOptionsMotherduckMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "schema": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "MotherDuck schema name. Defaults to 'main' if not provided."
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "motherduck"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsMotherduck` type.)\n\nMotherDuck options",
        "title": "MotherDuck"
      },
      "TargetOptionsMotherduckPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "schema": {
            "type": "string",
            "description": "MotherDuck schema name. Defaults to 'main' if not provided.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "motherduck"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsMotherduck` type.)\n\nMotherDuck options",
        "title": "MotherDuck"
      },
      "TargetOptionsMotherduckPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "schema": {
            "type": "string",
            "description": "MotherDuck schema name. Defaults to 'main' if not provided.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "motherduck"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsMotherduck` type.)\n\nMotherDuck options",
        "title": "MotherDuck"
      },
      "TargetOptionsMysql": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "mysql"
          }
        },
        "additionalProperties": false,
        "description": "MySQL options",
        "title": "MySQL"
      },
      "TargetOptionsMysqlMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsMysql` type.)\n\nMySQL options",
        "title": "MySQL"
      },
      "TargetOptionsMysqlPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsMysql` type.)\n\nMySQL options",
        "title": "MySQL"
      },
      "TargetOptionsMysqlPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "mysql"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsMysql` type.)\n\nMySQL options",
        "title": "MySQL"
      },
      "TargetOptionsPinterestAds": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "pinterest_ads"
          }
        },
        "additionalProperties": false,
        "description": "Pinterest Ads options",
        "title": "Pinterest Ads"
      },
      "TargetOptionsPinterestAdsMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "pinterest_ads"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsPinterestAds` type.)\n\nPinterest Ads options",
        "title": "Pinterest Ads"
      },
      "TargetOptionsPinterestAdsPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "pinterest_ads"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsPinterestAds` type.)\n\nPinterest Ads options",
        "title": "Pinterest Ads"
      },
      "TargetOptionsPinterestAdsPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "pinterest_ads"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsPinterestAds` type.)\n\nPinterest Ads options",
        "title": "Pinterest Ads"
      },
      "TargetOptionsPoplar": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "poplar"
          }
        },
        "additionalProperties": false,
        "description": "Poplar options",
        "title": "Poplar"
      },
      "TargetOptionsPoplarMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "poplar"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsPoplar` type.)\n\nPoplar options",
        "title": "Poplar"
      },
      "TargetOptionsPoplarPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "poplar"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsPoplar` type.)\n\nPoplar options",
        "title": "Poplar"
      },
      "TargetOptionsPoplarPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "poplar"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsPoplar` type.)\n\nPoplar options",
        "title": "Poplar"
      },
      "TargetOptionsPost": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetOptionsAthenaPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsAuroraMysqlPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsAuroraPostgresPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRdsMysqlPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRdsPostgresPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRdsSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRedshiftServerlessPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAzureSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsBigQueryPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsClickhousePost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsDatabricksPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsFacebookCustomAudiencesPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpCloudSqlMysqlPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpCloudSqlPostgresPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpCloudSqlSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpGcsCsvPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGoogleAdsPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsHostedCsvPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsHubspotPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsIterablePost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsKlaviyoPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsLinkedinAdsPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsLookupApiPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsMotherduckPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsMysqlPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsPinterestAdsPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsPoplarPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsPostgresPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsRedshiftPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsS3CsvPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSalesforcePost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSalesforceMarketingCloudPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSegmentPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSftpPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSnowflakePost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSqlServerPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsTheTradeDeskPost"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsTiktokPost"
          }
        ],
        "description": "The export target configuration options. These vary by connection type.\n",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/TargetOptionsAthenaPost",
            "aws_aurora_mysql": "#/components/schemas/TargetOptionsAwsAuroraMysqlPost",
            "aws_aurora_postgres": "#/components/schemas/TargetOptionsAwsAuroraPostgresPost",
            "aws_rds_mysql": "#/components/schemas/TargetOptionsAwsRdsMysqlPost",
            "aws_rds_postgres": "#/components/schemas/TargetOptionsAwsRdsPostgresPost",
            "aws_rds_sql_server": "#/components/schemas/TargetOptionsAwsRdsSqlServerPost",
            "aws_redshift_serverless": "#/components/schemas/TargetOptionsAwsRedshiftServerlessPost",
            "azure_sql_server": "#/components/schemas/TargetOptionsAzureSqlServerPost",
            "bigquery": "#/components/schemas/TargetOptionsBigQueryPost",
            "clickhouse": "#/components/schemas/TargetOptionsClickhousePost",
            "databricks": "#/components/schemas/TargetOptionsDatabricksPost",
            "facebook_custom_audiences": "#/components/schemas/TargetOptionsFacebookCustomAudiencesPost",
            "gcp_cloud_sql_mysql": "#/components/schemas/TargetOptionsGcpCloudSqlMysqlPost",
            "gcp_cloud_sql_postgres": "#/components/schemas/TargetOptionsGcpCloudSqlPostgresPost",
            "gcp_cloud_sql_sql_server": "#/components/schemas/TargetOptionsGcpCloudSqlSqlServerPost",
            "gcp_gcs_csv": "#/components/schemas/TargetOptionsGcpGcsCsvPost",
            "google_ads": "#/components/schemas/TargetOptionsGoogleAdsPost",
            "hosted_csv": "#/components/schemas/TargetOptionsHostedCsvPost",
            "hubspot": "#/components/schemas/TargetOptionsHubspotPost",
            "iterable": "#/components/schemas/TargetOptionsIterablePost",
            "klaviyo": "#/components/schemas/TargetOptionsKlaviyoPost",
            "linkedin_ads": "#/components/schemas/TargetOptionsLinkedinAdsPost",
            "lookup_api": "#/components/schemas/TargetOptionsLookupApiPost",
            "motherduck": "#/components/schemas/TargetOptionsMotherduckPost",
            "mysql": "#/components/schemas/TargetOptionsMysqlPost",
            "pinterest_ads": "#/components/schemas/TargetOptionsPinterestAdsPost",
            "poplar": "#/components/schemas/TargetOptionsPoplarPost",
            "postgres": "#/components/schemas/TargetOptionsPostgresPost",
            "redshift": "#/components/schemas/TargetOptionsRedshiftPost",
            "s3_csv": "#/components/schemas/TargetOptionsS3CsvPost",
            "salesforce": "#/components/schemas/TargetOptionsSalesforcePost",
            "salesforce_marketing_cloud": "#/components/schemas/TargetOptionsSalesforceMarketingCloudPost",
            "segment": "#/components/schemas/TargetOptionsSegmentPost",
            "sftp": "#/components/schemas/TargetOptionsSftpPost",
            "snowflake": "#/components/schemas/TargetOptionsSnowflakePost",
            "sql_server": "#/components/schemas/TargetOptionsSqlServerPost",
            "the_trade_desk": "#/components/schemas/TargetOptionsTheTradeDeskPost",
            "tiktok": "#/components/schemas/TargetOptionsTiktokPost"
          }
        }
      },
      "TargetOptionsPostgres": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "postgres"
          }
        },
        "additionalProperties": false,
        "description": "Postgres options",
        "title": "Postgres"
      },
      "TargetOptionsPostgresMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsPostgres` type.)\n\nPostgres options",
        "title": "Postgres"
      },
      "TargetOptionsPostgresPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsPostgres` type.)\n\nPostgres options",
        "title": "Postgres"
      },
      "TargetOptionsPostgresPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "postgres"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsPostgres` type.)\n\nPostgres options",
        "title": "Postgres"
      },
      "TargetOptionsPut": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetOptionsAthenaPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsAuroraMysqlPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsAuroraPostgresPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRdsMysqlPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRdsPostgresPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRdsSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAwsRedshiftServerlessPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsAzureSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsBigQueryPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsClickhousePut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsDatabricksPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsFacebookCustomAudiencesPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpCloudSqlMysqlPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpCloudSqlPostgresPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpCloudSqlSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGcpGcsCsvPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsGoogleAdsPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsHostedCsvPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsHubspotPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsIterablePut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsKlaviyoPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsLinkedinAdsPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsLookupApiPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsMotherduckPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsMysqlPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsPinterestAdsPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsPoplarPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsPostgresPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsRedshiftPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsS3CsvPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSalesforcePut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSalesforceMarketingCloudPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSegmentPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSftpPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSnowflakePut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsSqlServerPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsTheTradeDeskPut"
          },
          {
            "$ref": "#/components/schemas/TargetOptionsTiktokPut"
          }
        ],
        "description": "The export target configuration options. These vary by connection type.\n",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "athena": "#/components/schemas/TargetOptionsAthenaPut",
            "aws_aurora_mysql": "#/components/schemas/TargetOptionsAwsAuroraMysqlPut",
            "aws_aurora_postgres": "#/components/schemas/TargetOptionsAwsAuroraPostgresPut",
            "aws_rds_mysql": "#/components/schemas/TargetOptionsAwsRdsMysqlPut",
            "aws_rds_postgres": "#/components/schemas/TargetOptionsAwsRdsPostgresPut",
            "aws_rds_sql_server": "#/components/schemas/TargetOptionsAwsRdsSqlServerPut",
            "aws_redshift_serverless": "#/components/schemas/TargetOptionsAwsRedshiftServerlessPut",
            "azure_sql_server": "#/components/schemas/TargetOptionsAzureSqlServerPut",
            "bigquery": "#/components/schemas/TargetOptionsBigQueryPut",
            "clickhouse": "#/components/schemas/TargetOptionsClickhousePut",
            "databricks": "#/components/schemas/TargetOptionsDatabricksPut",
            "facebook_custom_audiences": "#/components/schemas/TargetOptionsFacebookCustomAudiencesPut",
            "gcp_cloud_sql_mysql": "#/components/schemas/TargetOptionsGcpCloudSqlMysqlPut",
            "gcp_cloud_sql_postgres": "#/components/schemas/TargetOptionsGcpCloudSqlPostgresPut",
            "gcp_cloud_sql_sql_server": "#/components/schemas/TargetOptionsGcpCloudSqlSqlServerPut",
            "gcp_gcs_csv": "#/components/schemas/TargetOptionsGcpGcsCsvPut",
            "google_ads": "#/components/schemas/TargetOptionsGoogleAdsPut",
            "hosted_csv": "#/components/schemas/TargetOptionsHostedCsvPut",
            "hubspot": "#/components/schemas/TargetOptionsHubspotPut",
            "iterable": "#/components/schemas/TargetOptionsIterablePut",
            "klaviyo": "#/components/schemas/TargetOptionsKlaviyoPut",
            "linkedin_ads": "#/components/schemas/TargetOptionsLinkedinAdsPut",
            "lookup_api": "#/components/schemas/TargetOptionsLookupApiPut",
            "motherduck": "#/components/schemas/TargetOptionsMotherduckPut",
            "mysql": "#/components/schemas/TargetOptionsMysqlPut",
            "pinterest_ads": "#/components/schemas/TargetOptionsPinterestAdsPut",
            "poplar": "#/components/schemas/TargetOptionsPoplarPut",
            "postgres": "#/components/schemas/TargetOptionsPostgresPut",
            "redshift": "#/components/schemas/TargetOptionsRedshiftPut",
            "s3_csv": "#/components/schemas/TargetOptionsS3CsvPut",
            "salesforce": "#/components/schemas/TargetOptionsSalesforcePut",
            "salesforce_marketing_cloud": "#/components/schemas/TargetOptionsSalesforceMarketingCloudPut",
            "segment": "#/components/schemas/TargetOptionsSegmentPut",
            "sftp": "#/components/schemas/TargetOptionsSftpPut",
            "snowflake": "#/components/schemas/TargetOptionsSnowflakePut",
            "sql_server": "#/components/schemas/TargetOptionsSqlServerPut",
            "the_trade_desk": "#/components/schemas/TargetOptionsTheTradeDeskPut",
            "tiktok": "#/components/schemas/TargetOptionsTiktokPut"
          }
        }
      },
      "TargetOptionsRedshift": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "redshift"
          }
        },
        "additionalProperties": false,
        "description": "Redshift options",
        "title": "Redshift"
      },
      "TargetOptionsRedshiftMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "redshift"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsRedshift` type.)\n\nRedshift options",
        "title": "Redshift"
      },
      "TargetOptionsRedshiftPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "redshift"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsRedshift` type.)\n\nRedshift options",
        "title": "Redshift"
      },
      "TargetOptionsRedshiftPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "redshift"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsRedshift` type.)\n\nRedshift options",
        "title": "Redshift"
      },
      "TargetOptionsS3Csv": {
        "type": "object",
        "required": [
          "object_key",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use \\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "gzip": {
            "type": "boolean",
            "description": "Whether files are gzipped."
          },
          "object_key": {
            "type": "string",
            "description": "The object key inside of the bucket. For example, path/to/my/file.csv. If you enable gzip, best practice is to add .gz to the end. Note: strftime substitutions like %Y-%m-%d are supported.",
            "pattern": "^[a-z0-9][a-zA-Z0-9/_\\-%.]+$"
          },
          "quote_all": {
            "type": "boolean",
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "s3_csv"
          }
        },
        "additionalProperties": false,
        "description": "S3 options",
        "title": "S3"
      },
      "TargetOptionsS3CsvMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "delimiter": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^([,;|\\t]|\\\\t)$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use \\t`."
          },
          "gzip": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether files are gzipped."
          },
          "object_key": {
            "type": "string",
            "description": "The object key inside of the bucket. For example, path/to/my/file.csv. If you enable gzip, best practice is to add .gz to the end. Note: strftime substitutions like %Y-%m-%d are supported.",
            "pattern": "^[a-z0-9][a-zA-Z0-9/_\\-%.]+$"
          },
          "quote_all": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "s3_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsS3Csv` type.)\n\nS3 options",
        "title": "S3"
      },
      "TargetOptionsS3CsvPost": {
        "type": "object",
        "required": [
          "object_key",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use \\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "gzip": {
            "type": "boolean",
            "description": "Whether files are gzipped."
          },
          "object_key": {
            "type": "string",
            "description": "The object key inside of the bucket. For example, path/to/my/file.csv. If you enable gzip, best practice is to add .gz to the end. Note: strftime substitutions like %Y-%m-%d are supported.",
            "pattern": "^[a-z0-9][a-zA-Z0-9/_\\-%.]+$"
          },
          "quote_all": {
            "type": "boolean",
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "s3_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsS3Csv` type.)\n\nS3 options",
        "title": "S3"
      },
      "TargetOptionsS3CsvPut": {
        "type": "object",
        "required": [
          "object_key",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use \\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "gzip": {
            "type": "boolean",
            "description": "Whether files are gzipped."
          },
          "object_key": {
            "type": "string",
            "description": "The object key inside of the bucket. For example, path/to/my/file.csv. If you enable gzip, best practice is to add .gz to the end. Note: strftime substitutions like %Y-%m-%d are supported.",
            "pattern": "^[a-z0-9][a-zA-Z0-9/_\\-%.]+$"
          },
          "quote_all": {
            "type": "boolean",
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "s3_csv"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsS3Csv` type.)\n\nS3 options",
        "title": "S3"
      },
      "TargetOptionsSalesforce": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce"
          }
        },
        "additionalProperties": false,
        "description": "Salesforce options",
        "title": "Salesforce"
      },
      "TargetOptionsSalesforceMarketingCloud": {
        "type": "object",
        "required": [
          "api_subdomain",
          "type"
        ],
        "properties": {
          "api_subdomain": {
            "type": "string",
            "description": "Subdomain of the API Integration within your installed package in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-server-to-server-package\">the HighTouch docs</a>.",
            "pattern": "^\\w[\\w.-]+$"
          },
          "ftp_private_key": {
            "type": "string",
            "description": "Private SSH key of the FTP user created in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-ftp-user\">the HighTouch docs</a>.",
            "pattern": "^-+.+-+$",
            "x-secret": true
          },
          "ftp_user_password": {
            "type": "string",
            "description": "Password of the FTP user created in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-ftp-user\">the HighTouch docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "ftp_username": {
            "type": "string",
            "description": "Username of the FTP user created in SFMC. Typically a numeric Marketing Cloud MID. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-ftp-user\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce_marketing_cloud"
          }
        },
        "additionalProperties": false,
        "description": "Salesforce Marketing Cloud options",
        "title": "Salesforce Marketing Cloud"
      },
      "TargetOptionsSalesforceMarketingCloudMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "api_subdomain": {
            "type": "string",
            "description": "Subdomain of the API Integration within your installed package in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-server-to-server-package\">the HighTouch docs</a>.",
            "pattern": "^\\w[\\w.-]+$"
          },
          "ftp_private_key": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^-+.+-+$",
                "x-secret": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Private SSH key of the FTP user created in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-ftp-user\">the HighTouch docs</a>."
          },
          "ftp_user_password": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$",
                "x-secret": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Password of the FTP user created in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-ftp-user\">the HighTouch docs</a>."
          },
          "ftp_username": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^\\S+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Username of the FTP user created in SFMC. Typically a numeric Marketing Cloud MID. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-ftp-user\">the HighTouch docs</a>."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce_marketing_cloud"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsSalesforceMarketingCloud` type.)\n\nSalesforce Marketing Cloud options",
        "title": "Salesforce Marketing Cloud"
      },
      "TargetOptionsSalesforceMarketingCloudPost": {
        "type": "object",
        "required": [
          "api_subdomain",
          "type"
        ],
        "properties": {
          "api_subdomain": {
            "type": "string",
            "description": "Subdomain of the API Integration within your installed package in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-server-to-server-package\">the HighTouch docs</a>.",
            "pattern": "^\\w[\\w.-]+$"
          },
          "ftp_private_key": {
            "type": "string",
            "description": "Private SSH key of the FTP user created in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-ftp-user\">the HighTouch docs</a>.",
            "pattern": "^-+.+-+$",
            "x-secret": true
          },
          "ftp_user_password": {
            "type": "string",
            "description": "Password of the FTP user created in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-ftp-user\">the HighTouch docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "ftp_username": {
            "type": "string",
            "description": "Username of the FTP user created in SFMC. Typically a numeric Marketing Cloud MID. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-ftp-user\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce_marketing_cloud"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsSalesforceMarketingCloud` type.)\n\nSalesforce Marketing Cloud options",
        "title": "Salesforce Marketing Cloud"
      },
      "TargetOptionsSalesforceMarketingCloudPut": {
        "type": "object",
        "required": [
          "api_subdomain",
          "type"
        ],
        "properties": {
          "api_subdomain": {
            "type": "string",
            "description": "Subdomain of the API Integration within your installed package in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-server-to-server-package\">the HighTouch docs</a>.",
            "pattern": "^\\w[\\w.-]+$"
          },
          "ftp_private_key": {
            "type": "string",
            "description": "Private SSH key of the FTP user created in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-ftp-user\">the HighTouch docs</a>.",
            "pattern": "^-+.+-+$",
            "x-secret": true
          },
          "ftp_user_password": {
            "type": "string",
            "description": "Password of the FTP user created in SFMC. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-ftp-user\">the HighTouch docs</a>.",
            "pattern": "^\\S+$",
            "x-secret": true
          },
          "ftp_username": {
            "type": "string",
            "description": "Username of the FTP user created in SFMC. Typically a numeric Marketing Cloud MID. Refer to <a href=\"https://hightouch.com/docs/destinations/sfmc#create-ftp-user\">the HighTouch docs</a>.",
            "pattern": "^\\S+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce_marketing_cloud"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsSalesforceMarketingCloud` type.)\n\nSalesforce Marketing Cloud options",
        "title": "Salesforce Marketing Cloud"
      },
      "TargetOptionsSalesforceMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsSalesforce` type.)\n\nSalesforce options",
        "title": "Salesforce"
      },
      "TargetOptionsSalesforcePost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsSalesforce` type.)\n\nSalesforce options",
        "title": "Salesforce"
      },
      "TargetOptionsSalesforcePut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "salesforce"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsSalesforce` type.)\n\nSalesforce options",
        "title": "Salesforce"
      },
      "TargetOptionsSegment": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "segment"
          }
        },
        "additionalProperties": false,
        "description": "Segment options",
        "title": "Segment"
      },
      "TargetOptionsSegmentMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "segment"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsSegment` type.)\n\nSegment options",
        "title": "Segment"
      },
      "TargetOptionsSegmentPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "segment"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsSegment` type.)\n\nSegment options",
        "title": "Segment"
      },
      "TargetOptionsSegmentPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "segment"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsSegment` type.)\n\nSegment options",
        "title": "Segment"
      },
      "TargetOptionsSftp": {
        "type": "object",
        "required": [
          "file_name",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "file_name": {
            "type": "string",
            "description": "What the file will be called after deploying to SFTP (e.g. output/file.csv). If you enable gzip, best practice is to add .gz to the end. Note: strftime substitutions like `%Y-%m-%d` are supported (e.g. output/repeat_customers_%Y-%m-%d.csv).",
            "pattern": "^[a-z][a-zA-Z0-9/_\\-%.]+$"
          },
          "gzip": {
            "type": "boolean",
            "description": "Whether files are gzipped."
          },
          "quote_all": {
            "type": "boolean",
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sftp"
          }
        },
        "additionalProperties": false,
        "description": "SFTP options",
        "title": "SFTP"
      },
      "TargetOptionsSftpMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "delimiter": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^([,;|\\t]|\\\\t)$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`."
          },
          "file_name": {
            "type": "string",
            "description": "What the file will be called after deploying to SFTP (e.g. output/file.csv). If you enable gzip, best practice is to add .gz to the end. Note: strftime substitutions like `%Y-%m-%d` are supported (e.g. output/repeat_customers_%Y-%m-%d.csv).",
            "pattern": "^[a-z][a-zA-Z0-9/_\\-%.]+$"
          },
          "gzip": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether files are gzipped."
          },
          "quote_all": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sftp"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsSftp` type.)\n\nSFTP options",
        "title": "SFTP"
      },
      "TargetOptionsSftpPost": {
        "type": "object",
        "required": [
          "file_name",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "file_name": {
            "type": "string",
            "description": "What the file will be called after deploying to SFTP (e.g. output/file.csv). If you enable gzip, best practice is to add .gz to the end. Note: strftime substitutions like `%Y-%m-%d` are supported (e.g. output/repeat_customers_%Y-%m-%d.csv).",
            "pattern": "^[a-z][a-zA-Z0-9/_\\-%.]+$"
          },
          "gzip": {
            "type": "boolean",
            "description": "Whether files are gzipped."
          },
          "quote_all": {
            "type": "boolean",
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sftp"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsSftp` type.)\n\nSFTP options",
        "title": "SFTP"
      },
      "TargetOptionsSftpPut": {
        "type": "object",
        "required": [
          "file_name",
          "type"
        ],
        "properties": {
          "delimiter": {
            "type": "string",
            "description": "Provide the delimiter character, such as `,` or `|`. Defaults to `,`. For tab-delimited files, paste a tab character or use `\\t`.",
            "pattern": "^([,;|\\t]|\\\\t)$"
          },
          "file_name": {
            "type": "string",
            "description": "What the file will be called after deploying to SFTP (e.g. output/file.csv). If you enable gzip, best practice is to add .gz to the end. Note: strftime substitutions like `%Y-%m-%d` are supported (e.g. output/repeat_customers_%Y-%m-%d.csv).",
            "pattern": "^[a-z][a-zA-Z0-9/_\\-%.]+$"
          },
          "gzip": {
            "type": "boolean",
            "description": "Whether files are gzipped."
          },
          "quote_all": {
            "type": "boolean",
            "description": "Whether to always quote all fields, even if they don't require it. Some systems require this."
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sftp"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsSftp` type.)\n\nSFTP options",
        "title": "SFTP"
      },
      "TargetOptionsSnowflake": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "schema": {
            "type": "string",
            "description": "Snowflake schema name. If not provided, it may be provided at the connection level, or omitted entirely.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "snowflake"
          },
          "upsert": {
            "type": "boolean",
            "description": "Currently only supported on Referenced targets on GCP BigQuery and Snowflake, upsert allows Faraday to write multiple times to the same table from different Targets. It will use the reference_key_column on the referenced Dataset."
          }
        },
        "additionalProperties": false,
        "description": "Snowflake options",
        "title": "Snowflake"
      },
      "TargetOptionsSnowflakeMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "schema": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Snowflake schema name. If not provided, it may be provided at the connection level, or omitted entirely."
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "snowflake"
          },
          "upsert": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Currently only supported on Referenced targets on GCP BigQuery and Snowflake, upsert allows Faraday to write multiple times to the same table from different Targets. It will use the reference_key_column on the referenced Dataset."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsSnowflake` type.)\n\nSnowflake options",
        "title": "Snowflake"
      },
      "TargetOptionsSnowflakePost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "schema": {
            "type": "string",
            "description": "Snowflake schema name. If not provided, it may be provided at the connection level, or omitted entirely.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "snowflake"
          },
          "upsert": {
            "type": "boolean",
            "description": "Currently only supported on Referenced targets on GCP BigQuery and Snowflake, upsert allows Faraday to write multiple times to the same table from different Targets. It will use the reference_key_column on the referenced Dataset."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsSnowflake` type.)\n\nSnowflake options",
        "title": "Snowflake"
      },
      "TargetOptionsSnowflakePut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "schema": {
            "type": "string",
            "description": "Snowflake schema name. If not provided, it may be provided at the connection level, or omitted entirely.",
            "pattern": "^[a-zA-Z][a-zA-Z0-9_]+$"
          },
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "snowflake"
          },
          "upsert": {
            "type": "boolean",
            "description": "Currently only supported on Referenced targets on GCP BigQuery and Snowflake, upsert allows Faraday to write multiple times to the same table from different Targets. It will use the reference_key_column on the referenced Dataset."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsSnowflake` type.)\n\nSnowflake options",
        "title": "Snowflake"
      },
      "TargetOptionsSqlServer": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sql_server"
          }
        },
        "additionalProperties": false,
        "description": "SQL Server options",
        "title": "SQL Server"
      },
      "TargetOptionsSqlServerMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsSqlServer` type.)\n\nSQL Server options",
        "title": "SQL Server"
      },
      "TargetOptionsSqlServerPost": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsSqlServer` type.)\n\nSQL Server options",
        "title": "SQL Server"
      },
      "TargetOptionsSqlServerPut": {
        "type": "object",
        "required": [
          "table_name",
          "type"
        ],
        "properties": {
          "table_name": {
            "type": "string",
            "description": "Table name",
            "pattern": "^[_a-zA-Z][a-zA-Z0-9_]+$"
          },
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "sql_server"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsSqlServer` type.)\n\nSQL Server options",
        "title": "SQL Server"
      },
      "TargetOptionsTheTradeDesk": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "the_trade_desk"
          }
        },
        "additionalProperties": false,
        "description": "The Trade Desk options",
        "title": "The Trade Desk"
      },
      "TargetOptionsTheTradeDeskMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "the_trade_desk"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsTheTradeDesk` type.)\n\nThe Trade Desk options",
        "title": "The Trade Desk"
      },
      "TargetOptionsTheTradeDeskPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "the_trade_desk"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsTheTradeDesk` type.)\n\nThe Trade Desk options",
        "title": "The Trade Desk"
      },
      "TargetOptionsTheTradeDeskPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "the_trade_desk"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsTheTradeDesk` type.)\n\nThe Trade Desk options",
        "title": "The Trade Desk"
      },
      "TargetOptionsTiktok": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "tiktok"
          }
        },
        "additionalProperties": false,
        "description": "TikTok options",
        "title": "TikTok"
      },
      "TargetOptionsTiktokMergePatch": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "tiktok"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `TargetOptionsTiktok` type.)\n\nTikTok options",
        "title": "TikTok"
      },
      "TargetOptionsTiktokPost": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "tiktok"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `TargetOptionsTiktok` type.)\n\nTikTok options",
        "title": "TikTok"
      },
      "TargetOptionsTiktokPut": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of connection",
            "const": "tiktok"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `TargetOptionsTiktok` type.)\n\nTikTok options",
        "title": "TikTok"
      },
      "TargetPost": {
        "type": "object",
        "required": [
          "name",
          "options",
          "representation",
          "scope_id"
        ],
        "properties": {
          "analysis_config": {
            "type": "object",
            "properties": {
              "attributes": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "fig/age",
                  "pattern": "^fig/[a-z][a-z0-9_]+$"
                },
                "description": "Configuration for the analysis of attributes.\n\nYour account must have an identity graph feature store set. Faraday provided attributes must be prefixed with `fig/` ex. `fig/age`.\n"
              },
              "geographies": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "postcode",
                    "state"
                  ]
                },
                "description": "Configuration for the analysis of geographic dimensions\n"
              },
              "traits": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "fig/age",
                  "pattern": "^(fig/)?[a-z][a-z0-9_]+$"
                },
                "description": "Configuration for the analysis of traits. For traits created through `output_to_traits` via `/datasets`, specify the trait name. For traits from Faraday's Internal Graph (FIG), specify the name prefixed by `fig/` ex. `fig/age`.\n"
              }
            },
            "description": "Configuration for the analysis of the target.\n"
          },
          "connection_id": {
            "type": "string",
            "description": "If this is a replication (externally-hosted) target, the UUID of a connection - see <a href=\"https://faraday.ai/developers/reference/createconnection\">/connections</a> for more detail. \n\nIf this is not a replication target, omit this parameter.\n",
            "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
            "format": "uuid"
          },
          "custom_structure": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetStructureTransformation"
            },
            "description": "By default, targets include all columns in <a href=\"https://faraday.ai/developers/reference/createtargetpreview\">the target preview</a>, with no name changes.\n\nUsers may use this parameter to specify their own set of \"structure transformations\" to override the default selection, order, and name of exported columns.\n\nThe shape of this parameter is an array of objects where the order of the columns to export is given by the order of the array. Each item represents a 1:1 mapping of scope input column to target output column. Only those columns specified here are emitted in the target output.\n"
          },
          "filter": {
            "$ref": "#/components/schemas/TargetFilterPost"
          },
          "human_readable": {
            "type": "boolean",
            "description": "By default, column names are exported in a machine-readable format with underscored uuids. \n\nSetting this to `true` replaces ids with literates in the exported column names.\n"
          },
          "limit": {
            "$ref": "#/components/schemas/TargetLimitPost"
          },
          "name": {
            "type": "string",
            "description": "A user-friendly name of the target.",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "options": {
            "$ref": "#/components/schemas/TargetOptionsPost"
          },
          "representation": {
            "$ref": "#/components/schemas/TargetModesPost"
          },
          "scope_id": {
            "type": "string",
            "description": "The UUID of a scope - see <a href=\"https://faraday.ai/developers/reference/createscope\">/scopes</a> for more detail.",
            "example": "8e63467d-9478-4fba-b05a-d5e98fd06d12",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Target` type.)\n\nInstructions on how to export output data defined by a scope.\n\nThere are three types of targets:\n<table>\n<thead>\n<tr><th>Target type</th><th>Description</th><th>API requirement</th></tr>\n</thead>\n<tbody>\n<tr><td><strong>Publication</strong></td><td>Faraday <em>hosts</em> your predictions for convenient retrieval as needed.</td><td>Specify a <code>type</code> of <code>hosted_csv</code> in <code>options</code>. Omit <code>connection_id</code>.</td></tr>\n<tr><td><strong>Replication</strong></td><td>Faraday copies your predictions to systems <em>you</em> control. You may then push them to third parties like Facebook, Google Ads, etc.</td><td>Specify a valid <code>connection_id</code> and the corresponding <code>type</code> of the connection in <code>options</code>.</td></tr>\n<tr><td><strong>Managed</strong></td><td>Faraday manages a push to third parties like Facebook, Google Ads, and more.</td><td>Must be on an enterprise plan. Contact Customer Success to set up.</td></tr>\n</tbody>\n</table>\n"
      },
      "TargetPut": {
        "type": "object",
        "required": [
          "name",
          "options",
          "representation"
        ],
        "properties": {
          "analysis_config": {
            "type": "object",
            "properties": {
              "attributes": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "fig/age",
                  "pattern": "^fig/[a-z][a-z0-9_]+$"
                },
                "description": "Configuration for the analysis of attributes.\n\nYour account must have an identity graph feature store set. Faraday provided attributes must be prefixed with `fig/` ex. `fig/age`.\n"
              },
              "geographies": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "postcode",
                    "state"
                  ]
                },
                "description": "Configuration for the analysis of geographic dimensions\n"
              },
              "traits": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "fig/age",
                  "pattern": "^(fig/)?[a-z][a-z0-9_]+$"
                },
                "description": "Configuration for the analysis of traits. For traits created through `output_to_traits` via `/datasets`, specify the trait name. For traits from Faraday's Internal Graph (FIG), specify the name prefixed by `fig/` ex. `fig/age`.\n"
              }
            },
            "description": "Configuration for the analysis of the target.\n"
          },
          "connection_id": {
            "type": "string",
            "description": "If this is a replication (externally-hosted) target, the UUID of a connection - see <a href=\"https://faraday.ai/developers/reference/createconnection\">/connections</a> for more detail. \n\nIf this is not a replication target, omit this parameter.\n",
            "example": "5e0dfa56-2d52-4c06-a870-bc79c71e86a3",
            "format": "uuid"
          },
          "custom_structure": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetStructureTransformation"
            },
            "description": "By default, targets include all columns in <a href=\"https://faraday.ai/developers/reference/createtargetpreview\">the target preview</a>, with no name changes.\n\nUsers may use this parameter to specify their own set of \"structure transformations\" to override the default selection, order, and name of exported columns.\n\nThe shape of this parameter is an array of objects where the order of the columns to export is given by the order of the array. Each item represents a 1:1 mapping of scope input column to target output column. Only those columns specified here are emitted in the target output.\n"
          },
          "filter": {
            "$ref": "#/components/schemas/TargetFilterPut"
          },
          "human_readable": {
            "type": "boolean",
            "description": "By default, column names are exported in a machine-readable format with underscored uuids. \n\nSetting this to `true` replaces ids with literates in the exported column names.\n"
          },
          "limit": {
            "$ref": "#/components/schemas/TargetLimitPut"
          },
          "name": {
            "type": "string",
            "description": "A user-friendly name of the target.",
            "maxLength": 64,
            "pattern": "^(?!\\s*$).+"
          },
          "options": {
            "$ref": "#/components/schemas/TargetOptionsPut"
          },
          "payload_map": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "**Deprecated: use `custom_structure`.**\n\nBy default, targets include all columns in <a href=\"https://faraday.ai/developers/reference/createtargetpreview\">the target preview</a>, with no name changes.\nThis parameter is an override of the default that enables an explicit mapping of columns that should be included in the target export, along with the exported column name.\nEach key is the name the column originally had, and each value is the desired name.\nExample:\n```\n{\n  \"person_first_name\": \"first_name\",\n  \"person_last_name\": \"last_name\",\n  \"city\": \"city\"\n}\n```\nIn the example above, the target will only include the \"first_name\", \"last_name\", and \"city\" columns.\n"
          },
          "representation": {
            "$ref": "#/components/schemas/TargetModesPut"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Target` type.)\n\nInstructions on how to export output data defined by a scope.\n\nThere are three types of targets:\n<table>\n<thead>\n<tr><th>Target type</th><th>Description</th><th>API requirement</th></tr>\n</thead>\n<tbody>\n<tr><td><strong>Publication</strong></td><td>Faraday <em>hosts</em> your predictions for convenient retrieval as needed.</td><td>Specify a <code>type</code> of <code>hosted_csv</code> in <code>options</code>. Omit <code>connection_id</code>.</td></tr>\n<tr><td><strong>Replication</strong></td><td>Faraday copies your predictions to systems <em>you</em> control. You may then push them to third parties like Facebook, Google Ads, etc.</td><td>Specify a valid <code>connection_id</code> and the corresponding <code>type</code> of the connection in <code>options</code>.</td></tr>\n<tr><td><strong>Managed</strong></td><td>Faraday manages a push to third parties like Facebook, Google Ads, and more.</td><td>Must be on an enterprise plan. Contact Customer Success to set up.</td></tr>\n</tbody>\n</table>\n"
      },
      "TargetReferencedReference": {
        "type": "object",
        "required": [
          "dataset_id",
          "column_name"
        ],
        "properties": {
          "column_name": {
            "type": "string",
            "description": "the name of the column in dataset_id that should be referenced"
          },
          "dataset_id": {
            "type": "string",
            "description": "dataset id to reference",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TargetStructureTransformation": {
        "type": "object",
        "required": [
          "output_col",
          "scope_col"
        ],
        "properties": {
          "aggregation": {
            "type": "string",
            "description": "The method of aggregation. Applies to aggregation targets only.",
            "enum": [
              "avg",
              "count",
              "countif",
              "mode",
              "ignore"
            ]
          },
          "aggregation_criteria": {
            "type": "string",
            "description": "For scope columns that can be aggregated with `countif` (currently just persona sets), this is the value being counted (i.e. the persona ID). Applies to aggregation targets only.",
            "maxLength": 64
          },
          "is_identity_col": {
            "type": "boolean",
            "description": "Set this to true when exporting first party identifiers (given by <a href=\"https://faraday.ai/developers/reference/createdataset\">identity_sets</a>).\n\nIf `true`, `scope_col` represents the dataset field name being selected (ex: \"client_email\").\n"
          },
          "output_col": {
            "type": "string",
            "description": "The name of this column in the target export. Can be the same as `scope_col`.",
            "pattern": "^[_a-z][_a-z0-9]*$"
          },
          "scope_col": {
            "type": "string",
            "description": "The name of the scope column to export. \n\nUsers can supply either the machine-readable name (with underscored uuid) or the human-readable name (with literates).\n",
            "pattern": "^[_a-z][_a-z0-9]*$"
          }
        },
        "additionalProperties": false
      },
      "TargetTransformPresetAggregated": {
        "type": "string",
        "description": "One of:\n  * default: Faraday default aggregated representation\n  * google_ads: Aggregated upload format for Google Ads\n\nIf not specified `default` is used.",
        "enum": [
          "default",
          "google_ads"
        ]
      },
      "TargetTransformPresetHashed": {
        "type": "string",
        "description": "One of:\n  * default: Faraday default hashed representation\n  * linkedin: Hashed upload format for Linkedin\n  * taboola: Hashed upload format for Taboola\n  * snapchat: Hashed upload format for Snapchat\n  * tiktok: Hashed upload format for Tiktok\n  * pinterest: Hashed upload format for Pinterest\n  * youtube: Hashed upload format for Youtube\n  * google_ads: Hashed upload format for Google Ads\n  * facebook: Hashed upload format for Facebook\n\nIf not specified `default` is used.",
        "enum": [
          "default",
          "linkedin",
          "taboola",
          "snapchat",
          "tiktok",
          "pinterest",
          "youtube",
          "google_ads",
          "facebook"
        ]
      },
      "TargetTransformPresetIdentified": {
        "type": "string",
        "description": "One of:\n  * default: Faraday default identified representation\n  * linkedin: Plaintext upload format for Linkedin\n  * youtube: Plaintext upload format for Youtube\n  * klaviyo: Plaintext upload format for Klaviyo\n  * segment: Plaintext upload format for Segment\n  * iterable: Plaintext upload format for Iterable\n  * poplar: Plaintext upload format for Poplar\n  * salesforce: Plaintext upload format for Salesforce\n  * hubspot: Plaintext upload format for Hubspot\n  * address_only: Plaintext upload format for address only\n  * liveramp: Plaintext upload format for LiveRamp\n\nIf not specified `default` is used.",
        "enum": [
          "default",
          "linkedin",
          "youtube",
          "klaviyo",
          "segment",
          "iterable",
          "poplar",
          "salesforce",
          "hubspot",
          "address_only",
          "liveramp"
        ]
      },
      "TargetTransformPresetReferenced": {
        "type": "string",
        "description": "One of:\n  * default: Faraday default referenced representation\n\nIf not specified `default` is used.",
        "enum": [
          "default"
        ]
      },
      "Trait": {
        "type": "object",
        "required": [
          "created_at",
          "id",
          "name",
          "resource_type",
          "status",
          "updated_at"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "(For user traits only) If not null, this resource will no longer receive updates, but will still be visable.",
            "format": "date-time"
          },
          "breaks": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "For continuous data types, list of reasonable cutoff values.",
            "example": [
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              15,
              20,
              25,
              30,
              35,
              40,
              45,
              50
            ]
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "For STRING type, list of allowed values.",
            "example": [
              "Large families",
              "Single suburbanites",
              "Single urbanites",
              "Small families",
              "Upper middle class small families"
            ]
          },
          "category": {
            "$ref": "#/components/schemas/TraitCategory",
            "description": "A broad category describing the flavor of this Trait."
          },
          "coverage": {
            "type": "number",
            "description": "The percentage (0.1 meaning 10%) of the population for which we know the trait value.",
            "example": 0.5
          },
          "created_at": {
            "type": "string",
            "description": "When this resource was created.",
            "format": "date-time"
          },
          "deprecated": {
            "type": "boolean",
            "description": "(For Faraday traits only) This trait will no longer receive updated data. Please use the updated version of the trait instead, if available."
          },
          "description": {
            "type": "string",
            "description": "Information about this field.",
            "example": "The number of baths in the house."
          },
          "emitted_by_datasets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TraitInputFromDatasets"
            }
          },
          "id": {
            "type": "string",
            "description": "A unique ID for this resource.",
            "format": "uuid"
          },
          "literate": {
            "type": "string",
            "description": "A more human-consumable version of the name of this field.",
            "example": "Number of baths"
          },
          "lookup_table": {
            "type": "object",
            "description": "A mapping of the input values used in modeling, to how they should be displayed in reports."
          },
          "name": {
            "type": "string",
            "description": "How to refer to this Trait in other API calls to Faraday.",
            "example": "favorite_color",
            "pattern": "^[_a-z][_a-z0-9]*$"
          },
          "permissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TraitPermission"
            },
            "description": "What the account is able to use this trait for. Contact support to change access."
          },
          "precision": {
            "type": "string",
            "description": "Precision refers to the specificity used to assign a trait. For example, 'person' precision indicates a trait specific to an individual, such as a preference for baseball, while 'address' precision pertains to a characteristic related to a location, such as the number of bedrooms in a house.",
            "example": "person",
            "enum": [
              "person",
              "address",
              "postcode",
              "geom"
            ]
          },
          "resource_type": {
            "$ref": "#/components/schemas/ResourceType"
          },
          "statistical_type": {
            "$ref": "#/components/schemas/TraitStatisticalType",
            "description": "A string describing the nature of data represented by the trait.\n\ncategorical_nominal: the field contains one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: the field contains one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: the field contains one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: the field contains numeric values with a natural ordering. Example: \"lifetime_value\".\n\nDeprecated values (still accepted): categorical, multicategorical, ordinal, nominal. See the TraitStatisticalType schema for type compatibility constraints and deprecation equivalences.\n"
          },
          "status": {
            "$ref": "#/components/schemas/ResourceStatus"
          },
          "tier": {
            "$ref": "#/components/schemas/TraitTier"
          },
          "type": {
            "$ref": "#/components/schemas/PrimitiveDataType",
            "description": "What type of data this field contains."
          },
          "unit": {
            "type": "string",
            "description": "For numeric types, in what units is the data stored.",
            "example": "dollars"
          },
          "updated_at": {
            "type": "string",
            "description": "When this resource was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A fact about a person or geographic entity. \n\nThe fact could be provided by Faraday, or alternatively could be defined by the client using data they have uploaded to Faraday.\n\nThese traits can be used by name in any of modeling, analysis, and reporting.\n"
      },
      "TraitCategory": {
        "type": "string",
        "description": "A broad category describing the flavor of a trait.\n",
        "enum": [
          "fig/demography",
          "fig/environment",
          "fig/geography",
          "fig/identity",
          "fig/lifestyle",
          "fig/life_event",
          "fig/property",
          "fig/reachability",
          "fig/society",
          "fig/financial",
          "fig/vehicles",
          "fig/civic",
          "fig/engagement",
          "user_defined"
        ]
      },
      "TraitDataMapColumn": {
        "type": "object",
        "properties": {
          "column_name": {
            "type": "string",
            "description": "The name of a column in the dataset. Required if no `value` is used.",
            "example": "skus",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "format": {
            "$ref": "#/components/schemas/DataMapColumnFormat"
          },
          "null_values": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of values that should be treated as null."
          },
          "transformation_table": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "A mapping of values as they appear in the dataset to how they should be used in models, where the key is what appears in the dataset and value is how it should be interpretted. This is used when multiple distinct values in the source table functionally represent the sme thing, or when combining traits from multiple datasets. Use '*' as the key to capture all values that have been excluded by all other conditions."
          },
          "value": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "A static value for this trait. Required if no `column_name` is used.",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "TraitDataMapColumnMergePatch": {
        "type": "object",
        "properties": {
          "column_name": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "skus",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The name of a column in the dataset. Required if no `value` is used."
          },
          "format": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/DataMapColumnFormat"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "null_values": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A list of values that should be treated as null."
          },
          "transformation_table": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "type": "boolean"
                    }
                  ]
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A mapping of values as they appear in the dataset to how they should be used in models, where the key is what appears in the dataset and value is how it should be interpretted. This is used when multiple distinct values in the source table functionally represent the sme thing, or when combining traits from multiple datasets. Use '*' as the key to capture all values that have been excluded by all other conditions."
          },
          "value": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A static value for this trait. Required if no `column_name` is used.",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "TraitDataMapColumnPost": {
        "type": "object",
        "properties": {
          "column_name": {
            "type": "string",
            "description": "The name of a column in the dataset. Required if no `value` is used.",
            "example": "skus",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "format": {
            "$ref": "#/components/schemas/DataMapColumnFormat"
          },
          "null_values": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of values that should be treated as null."
          },
          "transformation_table": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "A mapping of values as they appear in the dataset to how they should be used in models, where the key is what appears in the dataset and value is how it should be interpretted. This is used when multiple distinct values in the source table functionally represent the sme thing, or when combining traits from multiple datasets. Use '*' as the key to capture all values that have been excluded by all other conditions."
          },
          "value": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "A static value for this trait. Required if no `column_name` is used.",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "TraitDataMapColumnPut": {
        "type": "object",
        "properties": {
          "column_name": {
            "type": "string",
            "description": "The name of a column in the dataset. Required if no `value` is used.",
            "example": "skus",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "format": {
            "$ref": "#/components/schemas/DataMapColumnFormat"
          },
          "null_values": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of values that should be treated as null."
          },
          "transformation_table": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "A mapping of values as they appear in the dataset to how they should be used in models, where the key is what appears in the dataset and value is how it should be interpretted. This is used when multiple distinct values in the source table functionally represent the sme thing, or when combining traits from multiple datasets. Use '*' as the key to capture all values that have been excluded by all other conditions."
          },
          "value": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "A static value for this trait. Required if no `column_name` is used.",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "TraitInputFromDatasets": {
        "type": "object",
        "required": [
          "dataset_id"
        ],
        "properties": {
          "column_name": {
            "type": "string",
            "description": "The name of a column in the dataset. Required if no `value` is used.",
            "example": "skus",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "dataset_id": {
            "type": "string",
            "description": "The dataset the column comes from.",
            "format": "uuid"
          },
          "format": {
            "$ref": "#/components/schemas/DataMapColumnFormat"
          },
          "null_values": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of values that should be treated as null."
          },
          "parsing": {
            "type": "object",
            "required": [
              "candidate_row_count",
              "populated_row_count",
              "parsed_row_count",
              "stale_row_count"
            ],
            "properties": {
              "candidate_row_count": {
                "type": "integer",
                "description": "Rows of the dataset available to this trait."
              },
              "examples": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "A sample of the values that could not be read, to compare against the declared format.\n",
                "example": [
                  "202401",
                  "2024-01"
                ]
              },
              "parsed_row_count": {
                "type": "integer",
                "description": "Populated rows whose value could be read as the declared format. Divided by\n`populated_row_count` this is the read rate, which should be 100%; any shortfall means the\nvalues and the declared format disagree, and those rows contribute no value to the trait.\n"
              },
              "populated_row_count": {
                "type": "integer",
                "description": "Candidate rows where the column held a value. An empty column is not a failure to read one.\n"
              },
              "stale_before": {
                "type": "string",
                "description": "The date those rows were judged against: anything earlier was counted as implausible. The\nbound is relative to when the trait was built, so it is reported rather than left to be\nrecalculated against a different day. Present only when rows were actually counted.\n",
                "example": "1896-08-31",
                "format": "date"
              },
              "stale_examples": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "A sample of the values that were read successfully but resolved to an implausible date.\nThese never appear in `examples`, because nothing went wrong when reading them.\n",
                "example": [
                  "000101",
                  "010203"
                ]
              },
              "stale_row_count": {
                "type": "integer",
                "description": "Rows whose value was read successfully but produced a date too far in the past to be\nplausible, which usually means the format is being misread. Unlike an event stream, a trait\ndoes not exclude these rows — the implausible value is kept and used. The count is reported\nso a misread format is visible rather than silently shaping a model feature.\n"
              }
            },
            "additionalProperties": false,
            "description": "How well this input's declared `format` read the column's values. One report, because one input\nreads one column.\n\nOmitted when the input declares no `format` — there is then nothing that can fail to read — and\nfor traits last built before this was reported. Neither case means every value was read.\n"
          },
          "transformation_table": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "A mapping of values as they appear in the dataset to how they should be used in models, where the key is what appears in the dataset and value is how it should be interpretted. This is used when multiple distinct values in the source table functionally represent the sme thing, or when combining traits from multiple datasets. Use '*' as the key to capture all values that have been excluded by all other conditions."
          },
          "value": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "A static value for this trait. Required if no `column_name` is used.",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "TraitInputFromDatasetsMergePatch": {
        "type": "object",
        "properties": {
          "column_name": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "skus",
                "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "The name of a column in the dataset. Required if no `value` is used."
          },
          "format": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/DataMapColumnFormat"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "null_values": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A list of values that should be treated as null."
          },
          "transformation_table": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "type": "boolean"
                    }
                  ]
                },
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A mapping of values as they appear in the dataset to how they should be used in models, where the key is what appears in the dataset and value is how it should be interpretted. This is used when multiple distinct values in the source table functionally represent the sme thing, or when combining traits from multiple datasets. Use '*' as the key to capture all values that have been excluded by all other conditions."
          },
          "value": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A static value for this trait. Required if no `column_name` is used.",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "TraitInputFromDatasetsPost": {
        "type": "object",
        "properties": {
          "column_name": {
            "type": "string",
            "description": "The name of a column in the dataset. Required if no `value` is used.",
            "example": "skus",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "format": {
            "$ref": "#/components/schemas/DataMapColumnFormat"
          },
          "null_values": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of values that should be treated as null."
          },
          "transformation_table": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "A mapping of values as they appear in the dataset to how they should be used in models, where the key is what appears in the dataset and value is how it should be interpretted. This is used when multiple distinct values in the source table functionally represent the sme thing, or when combining traits from multiple datasets. Use '*' as the key to capture all values that have been excluded by all other conditions."
          },
          "value": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "A static value for this trait. Required if no `column_name` is used.",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "TraitInputFromDatasetsPut": {
        "type": "object",
        "properties": {
          "column_name": {
            "type": "string",
            "description": "The name of a column in the dataset. Required if no `value` is used.",
            "example": "skus",
            "pattern": "^[_a-zA-Z0-9][_a-zA-Z0-9 :/-]*$"
          },
          "format": {
            "$ref": "#/components/schemas/DataMapColumnFormat"
          },
          "null_values": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of values that should be treated as null."
          },
          "transformation_table": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "A mapping of values as they appear in the dataset to how they should be used in models, where the key is what appears in the dataset and value is how it should be interpretted. This is used when multiple distinct values in the source table functionally represent the sme thing, or when combining traits from multiple datasets. Use '*' as the key to capture all values that have been excluded by all other conditions."
          },
          "value": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "A static value for this trait. Required if no `column_name` is used.",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "TraitMergePatch": {
        "type": "object",
        "properties": {
          "description": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "The number of baths in the house."
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Information about this field."
          },
          "literate": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "Number of baths"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A more human-consumable version of the name of this field."
          },
          "lookup_table": {
            "oneOf": [
              {
                "type": "object",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "A mapping of the input values used in modeling, to how they should be displayed in reports."
          },
          "statistical_type": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TraitStatisticalType",
                "description": "A string describing the nature of data represented by the trait.\n\ncategorical_nominal: the field contains one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: the field contains one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: the field contains one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: the field contains numeric values with a natural ordering. Example: \"lifetime_value\".\n\nDeprecated values (still accepted): categorical, multicategorical, ordinal, nominal. See the TraitStatisticalType schema for type compatibility constraints and deprecation equivalences.\n"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "unit": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "example": "dollars"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "For numeric types, in what units is the data stored."
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `Trait` type.)\n\nA fact about a person or geographic entity. \n\nThe fact could be provided by Faraday, or alternatively could be defined by the client using data they have uploaded to Faraday.\n\nThese traits can be used by name in any of modeling, analysis, and reporting.\n"
      },
      "TraitPermission": {
        "type": "string",
        "description": "Where the account can use the trait.",
        "enum": [
          "add_to_scope_payload",
          "define_cohort",
          "target_analysis"
        ]
      },
      "TraitPost": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "description": {
            "type": "string",
            "description": "Information about this field.",
            "example": "The number of baths in the house."
          },
          "literate": {
            "type": "string",
            "description": "A more human-consumable version of the name of this field.",
            "example": "Number of baths"
          },
          "lookup_table": {
            "type": "object",
            "description": "A mapping of the input values used in modeling, to how they should be displayed in reports."
          },
          "name": {
            "type": "string",
            "description": "How to refer to this Trait in other API calls to Faraday.",
            "example": "favorite_color",
            "pattern": "^[_a-z][_a-z0-9]*$"
          },
          "statistical_type": {
            "$ref": "#/components/schemas/TraitStatisticalType",
            "description": "A string describing the nature of data represented by the trait.\n\ncategorical_nominal: the field contains one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: the field contains one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: the field contains one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: the field contains numeric values with a natural ordering. Example: \"lifetime_value\".\n\nDeprecated values (still accepted): categorical, multicategorical, ordinal, nominal. See the TraitStatisticalType schema for type compatibility constraints and deprecation equivalences.\n"
          },
          "unit": {
            "type": "string",
            "description": "For numeric types, in what units is the data stored.",
            "example": "dollars"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `Trait` type.)\n\nA fact about a person or geographic entity. \n\nThe fact could be provided by Faraday, or alternatively could be defined by the client using data they have uploaded to Faraday.\n\nThese traits can be used by name in any of modeling, analysis, and reporting.\n"
      },
      "TraitPut": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "Information about this field.",
            "example": "The number of baths in the house."
          },
          "literate": {
            "type": "string",
            "description": "A more human-consumable version of the name of this field.",
            "example": "Number of baths"
          },
          "lookup_table": {
            "type": "object",
            "description": "A mapping of the input values used in modeling, to how they should be displayed in reports."
          },
          "statistical_type": {
            "$ref": "#/components/schemas/TraitStatisticalType",
            "description": "A string describing the nature of data represented by the trait.\n\ncategorical_nominal: the field contains one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: the field contains one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: the field contains one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: the field contains numeric values with a natural ordering. Example: \"lifetime_value\".\n\nDeprecated values (still accepted): categorical, multicategorical, ordinal, nominal. See the TraitStatisticalType schema for type compatibility constraints and deprecation equivalences.\n"
          },
          "unit": {
            "type": "string",
            "description": "For numeric types, in what units is the data stored.",
            "example": "dollars"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `Trait` type.)\n\nA fact about a person or geographic entity. \n\nThe fact could be provided by Faraday, or alternatively could be defined by the client using data they have uploaded to Faraday.\n\nThese traits can be used by name in any of modeling, analysis, and reporting.\n"
      },
      "TraitStatisticalType": {
        "type": "string",
        "description": "A string describing the nature of data represented by the trait.\n\ncategorical_nominal: the field contains one value of an unordered bounded set. Example: \"preferred_channel\" — one of \"email\", \"sms\", \"direct_mail\".\ncategorical_ordinal: the field contains one value of an ordered bounded set. Example: \"spending_tier\" — one of \"low\", \"medium\", \"high\", \"premium\".\nmulticategorical_nominal: the field contains one or more values of an unordered bounded set. Example: \"interests\" — \"outdoors\", \"travel\", \"fitness\".\ncontinuous_ordinal: the field contains numeric values with a natural ordering. Example: \"lifetime_value\".\nbinary: the field contains boolean-like values representing presence/absence. Example: \"has_pool\" — true or false.\ncount: the field contains non-negative integer counts. Example: \"children_count\" — 0, 1, 2, 3.\ninterval: the field contains numeric values where differences are meaningful but ratios are not. Example: \"date_of_birth\" as epoch.\nratio: the field contains numeric values where both differences and ratios are meaningful, with a true zero. Example: \"age\" — 0, 25, 50.\n\nType compatibility (new values only):\n- continuous_ordinal requires a numeric type (long, float, double).\n- categorical_nominal requires string or boolean.\n- categorical_ordinal requires string.\n- multicategorical_nominal requires array_of_strings.\n\nDeprecated values (still accepted, will be removed in a future version):\ncategorical: equivalent to categorical_nominal.\nmulticategorical: equivalent to multicategorical_nominal.\nordinal: ambiguous — prefer categorical_ordinal or continuous_ordinal.\nnominal: ambiguous — prefer categorical_nominal.\n",
        "enum": [
          "categorical",
          "multicategorical",
          "ordinal",
          "nominal",
          "continuous_ordinal",
          "categorical_nominal",
          "multicategorical_nominal",
          "categorical_ordinal",
          "binary",
          "count",
          "interval",
          "ratio"
        ]
      },
      "TraitTier": {
        "type": "string",
        "description": "A broad category describing the flavor of a trait.\n",
        "enum": [
          "standard",
          "premium"
        ]
      },
      "Upload": {
        "type": "object",
        "required": [
          "subpath",
          "file_size",
          "created_at",
          "md5_hash"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "description": "When this file was uploaded",
            "format": "date-time"
          },
          "file_size": {
            "type": "number",
            "description": "The size of the uploaded file in bytes",
            "example": 377
          },
          "md5_hash": {
            "type": "string",
            "description": "The result of an MD5 hash on the file uploaded. \nThis hash is a way of confirming Faraday's copy of the file matches yours.\n"
          },
          "subpath": {
            "type": "string",
            "description": "The file's name and directory",
            "example": "orders/orders1.csv"
          }
        },
        "additionalProperties": false,
        "description": "Information about files previously uploaded as Datasets."
      },
      "UploadDirectory": {
        "type": "string",
        "description": "Subdirectory of uploads where files are stored and retrieved.\n\nA directory is dedicated to one or more files which ought to have the same shape and contents. One or more datasets can pull from that folder (and in different ways) and push to one or more event streams. So if you have two different types of orders from two different POS/ecommerce systems, you would put them each in separate folders. Then you would create two different datasets that would both point to an `orders` stream.\n",
        "example": "abc_orders",
        "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_]*$"
      },
      "UploadFileName": {
        "type": "string",
        "description": "The name of an individual data file in a dataset",
        "example": "data_01.csv",
        "pattern": "^[A-Za-z0-9_][-A-Za-z0-9_.]*\\.(csv|CSV|txt|TXT|gpg|GPG|pgp|PGP|gz|GZ|bz2|BZ2)$"
      },
      "UseCase": {
        "type": "object",
        "required": [
          "id",
          "revision_id",
          "title",
          "preface",
          "created_at"
        ],
        "properties": {
          "applies_to": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UseCaseAppliesTo"
              }
            ],
            "description": "Computed property: what this use case applies to, taken from its\nmost recent review. Read-only; absent until a review has classified\nit.\n"
          },
          "archived_at": {
            "type": "string",
            "description": "Set when this use case has been archived.",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "draft": {
            "type": "boolean",
            "description": "Advisory flag marking the use case as a work in progress. While\n`true`, no implementation guide is generated for it (see\n`generated_guide`) and a review weighs the incomplete status\naccordingly. Defaults to `false`; set it back to `false` once the\nuse case is ready.\n"
          },
          "generated_guide": {
            "type": "string",
            "description": "Computed property: the implementation guide generated from this\nuse case's `preface` and `technical_details`. Read-only, and empty\nuntil a guide has been generated. A guide is generated automatically\nonce a review judges the use case adequate (and it is not a draft).\nNot versioned — reflects the latest generated guide at read time.\n"
          },
          "generated_guide_status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UseCaseGuide"
              }
            ],
            "description": "Computed property: the status of the most recent implementation-guide\ngeneration for this use case, or absent if none has run. Read-only.\nGeneration happens automatically once a review judges the use case\nadequate (and it is not a draft); when its `status` is `\"ready\"`, the\ngenerated Markdown is on `generated_guide`.\n"
          },
          "guide": {
            "type": "string",
            "description": "Markdown implementation guide. Deprecated — guides are now\ngenerated from the use case (see `generated_guide`); this\nhuman-authored field is retained for backward compatibility.\nOptional.\n",
            "deprecated": true
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "preface": {
            "$ref": "#/components/schemas/UseCasePreface"
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UseCaseResource"
            },
            "description": "Computed property: every resource link declared via the\nknowledgebase. Not versioned — reflects the live state of\nuse_case_resources at read time.\n"
          },
          "review": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UseCaseReview"
              }
            ],
            "description": "Computed property: the most recent review of this use case, or\nabsent if it has never been reviewed. Read-only; request a review\nwith `POST /knowledgebase/use_cases/{use_case_id}/review`.\n"
          },
          "revision_id": {
            "type": "string",
            "format": "uuid"
          },
          "technical_details": {
            "type": "string",
            "description": "Markdown technical annex that the guide generator and the\nconfiguration auditor consume: data sources and schemas, data\ngrain, stable/reference keys, blockers (e.g. hashed vs cleartext\nidentity), feature flags, and egress destinations. Optional.\n"
          },
          "title": {
            "type": "string"
          }
        },
        "description": "The full current revision of a use case, including the live computed\n`resources` list.\n"
      },
      "UseCaseAppliesTo": {
        "type": "string",
        "description": "What a use case applies to, inferred by its review: `this_account`\n(its configuration lives on the account it is stored on, which is\naudited against it — a direct brand, a platform running in a single\naccount, or one end-client subaccount) or `subaccounts` (a pattern\napplied to subaccounts the client provisions programmatically, one per\nend-client, for which an implementation guide is produced instead of an\naudit). Absent until a review has classified it.\n",
        "enum": [
          "this_account",
          "subaccounts"
        ]
      },
      "UseCaseChecklist": {
        "type": "object",
        "required": [
          "flavor",
          "items"
        ],
        "properties": {
          "flavor": {
            "type": "string",
            "description": "The use-case archetype: `direct_brand` (a brand configuring Faraday\nfor itself), `indirect_single_account` (an indirect/platform client\nin one account), or `indirect_subaccount` (one end-client subaccount\nof a platform that provisions one subaccount per client).\n",
            "enum": [
              "direct_brand",
              "indirect_single_account",
              "indirect_subaccount"
            ]
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UseCaseChecklistItem"
            },
            "description": "The requirements for this flavor, each classified."
          }
        },
        "description": "A use case's flavor plus its per-flavor requirement checklist. See\n`POST /knowledgebase/use_case_checklist`.\n"
      },
      "UseCaseChecklistItem": {
        "type": "object",
        "required": [
          "label",
          "status"
        ],
        "properties": {
          "label": {
            "type": "string",
            "description": "The requirement, as a short noun phrase."
          },
          "note": {
            "type": "string",
            "description": "One short sentence on what is missing or what to add. Empty when\ncovered.\n"
          },
          "status": {
            "type": "string",
            "description": "Whether the draft covers this requirement, partially covers it, or\nis missing it.\n",
            "enum": [
              "covered",
              "partial",
              "missing"
            ]
          }
        }
      },
      "UseCaseChecklistRequest": {
        "type": "object",
        "required": [
          "title"
        ],
        "properties": {
          "preface": {
            "type": "object",
            "properties": {
              "background": {
                "type": "string"
              },
              "problem": {
                "type": "string"
              },
              "solution": {
                "type": "string"
              }
            },
            "description": "The narrative framing, as far as it has been written."
          },
          "technical_details": {
            "type": "string",
            "description": "The machine-readable annex, as far as it has been written."
          },
          "title": {
            "type": "string",
            "description": "The use case's working title."
          }
        },
        "description": "The draft content of a use case to run the real-time checklist over.\nMirrors the writable use-case fields; nothing here is persisted.\n"
      },
      "UseCaseGuide": {
        "type": "object",
        "required": [
          "id",
          "use_case_id",
          "use_case_revision_id",
          "status",
          "created_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "generated_at": {
            "type": "string",
            "description": "When generation completed.",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "description": "`pending` while the guide is being generated, `ready` once it has\nbeen generated (its Markdown is then on `generated_guide`), `error`\nif generation failed (see `status_error`).\n",
            "enum": [
              "pending",
              "ready",
              "error"
            ]
          },
          "status_error": {
            "type": "string",
            "description": "Failure detail when `status` is `error`."
          },
          "use_case_id": {
            "type": "string",
            "format": "uuid"
          },
          "use_case_revision_id": {
            "type": "string",
            "description": "The use case revision the guide expands.",
            "format": "uuid"
          }
        },
        "description": "A generated implementation guide for a use case, produced automatically\nonce a review judges the use case adequate. The generated Markdown\nsurfaces on the use case's `generated_guide` once `status` is `\"ready\"`;\nthis object carries the generation's status.\n"
      },
      "UseCasePatch": {
        "allOf": [
          {
            "$ref": "#/components/schemas/UseCaseUpdateMergePatch"
          }
        ],
        "description": "JSON Merge Patch. Fields not present are left at their current values.\nSetting a content field to null clears it. `revision_id` is required:\nit names the revision you read, and the server returns 409 if its\ncurrent revision has moved past it (optimistic locking).\n"
      },
      "UseCasePost": {
        "type": "object",
        "required": [
          "title"
        ],
        "properties": {
          "draft": {
            "type": "boolean",
            "description": "Advisory flag marking the use case as a work in progress. While\n`true`, no implementation guide is generated for it (see\n`generated_guide`) and a review weighs the incomplete status\naccordingly. Defaults to `false`.\n"
          },
          "guide": {
            "type": "string",
            "description": "Markdown implementation guide. Deprecated — guides are now\ngenerated from the use case (see `generated_guide`); this\nhuman-authored field is retained for backward compatibility.\nOptional.\n",
            "deprecated": true
          },
          "preface": {
            "$ref": "#/components/schemas/UseCasePreface"
          },
          "technical_details": {
            "type": "string",
            "description": "Markdown technical annex that the guide generator and the\nconfiguration auditor consume: data sources and schemas, data\ngrain, stable/reference keys, blockers (e.g. hashed vs cleartext\nidentity), feature flags, and egress destinations. Optional.\n"
          },
          "title": {
            "type": "string"
          }
        },
        "description": "Fields accepted when creating a new use case."
      },
      "UseCasePreface": {
        "type": "object",
        "properties": {
          "background": {
            "type": "string",
            "description": "Markdown. The pre-existing situation that motivated this use case."
          },
          "problem": {
            "type": "string",
            "description": "Markdown. The specific problem the client is trying to solve."
          },
          "solution": {
            "type": "string",
            "description": "Markdown. How Faraday addresses the problem at a conceptual level."
          }
        },
        "description": "The narrative framing of a use case. All three fields are optional\nmarkdown blocks; an empty preface means the use case hasn't been written\nup beyond its title and guide.\n"
      },
      "UseCasePrefaceContent": {
        "type": "object",
        "properties": {
          "background": {
            "type": "string",
            "description": "Markdown. The pre-existing situation that motivated this use case."
          },
          "problem": {
            "type": "string",
            "description": "Markdown. The specific problem the client is trying to solve."
          },
          "solution": {
            "type": "string",
            "description": "Markdown. How Faraday addresses the problem at a conceptual level."
          }
        },
        "additionalProperties": false
      },
      "UseCasePrefaceContentMergePatch": {
        "type": "object",
        "properties": {
          "background": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Markdown. The pre-existing situation that motivated this use case."
          },
          "problem": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Markdown. The specific problem the client is trying to solve."
          },
          "solution": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Markdown. How Faraday addresses the problem at a conceptual level."
          }
        },
        "additionalProperties": false
      },
      "UseCasePrefaceContentPost": {
        "type": "object",
        "properties": {
          "background": {
            "type": "string",
            "description": "Markdown. The pre-existing situation that motivated this use case."
          },
          "problem": {
            "type": "string",
            "description": "Markdown. The specific problem the client is trying to solve."
          },
          "solution": {
            "type": "string",
            "description": "Markdown. How Faraday addresses the problem at a conceptual level."
          }
        },
        "additionalProperties": false
      },
      "UseCasePrefaceContentPut": {
        "type": "object",
        "properties": {
          "background": {
            "type": "string",
            "description": "Markdown. The pre-existing situation that motivated this use case."
          },
          "problem": {
            "type": "string",
            "description": "Markdown. The specific problem the client is trying to solve."
          },
          "solution": {
            "type": "string",
            "description": "Markdown. How Faraday addresses the problem at a conceptual level."
          }
        },
        "additionalProperties": false
      },
      "UseCaseResource": {
        "type": "object",
        "required": [
          "resource_id",
          "resource_type"
        ],
        "properties": {
          "resource_id": {
            "type": "string",
            "format": "uuid"
          },
          "resource_type": {
            "type": "string",
            "description": "The Postgres table name of the linked resource — `cohorts`,\n`new_outcomes`, `targets`, `scopes`, `recommenders`, `rosters`,\n`connections`, `source_tables`, etc.\n"
          }
        },
        "description": "A link from a use case to a Faraday resource that supports it (a cohort,\noutcome, target, etc). Computed live from the join table — not part of\nthe versioned use-case content.\n"
      },
      "UseCaseReview": {
        "type": "object",
        "required": [
          "id",
          "use_case_id",
          "use_case_revision_id",
          "status",
          "findings",
          "created_at"
        ],
        "properties": {
          "adequate": {
            "type": "boolean",
            "description": "True if the use case is adequate for downstream generation and\nauditing. Absent until `status` is `ready`.\n"
          },
          "applies_to": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UseCaseAppliesTo"
              }
            ],
            "description": "What this use case applies to, as classified by this review. Absent\nwhen the review could not determine it (e.g. a stub) or until\n`status` is `ready`.\n"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "findings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UseCaseReviewFinding"
            },
            "description": "The blockers and recommendations, most important first."
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "model": {
            "type": "string",
            "description": "The model used for the review."
          },
          "reviewed_at": {
            "type": "string",
            "description": "When the review pass completed.",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "description": "`pending` while the review is enqueued, `ready` once it has been\nfilled in, `error` if the review failed (see `status_error`).\n",
            "enum": [
              "pending",
              "ready",
              "error"
            ]
          },
          "status_error": {
            "type": "string",
            "description": "Failure detail when `status` is `error`."
          },
          "summary": {
            "type": "string",
            "description": "One or two sentences on the overall state. Markdown."
          },
          "use_case_id": {
            "type": "string",
            "format": "uuid"
          },
          "use_case_revision_id": {
            "type": "string",
            "description": "The use case revision this review was requested against.",
            "format": "uuid"
          }
        },
        "description": "An agentic review of a use case: whether it carries enough — its\npreface plus technical details — for a correct implementation guide to\nbe generated and for the account to be audited against it. Requested\nvia `POST /knowledgebase/use_cases/{use_case_id}/review` and filled in\nasynchronously.\n"
      },
      "UseCaseReviewFinding": {
        "type": "object",
        "required": [
          "severity",
          "text"
        ],
        "properties": {
          "severity": {
            "type": "string",
            "description": "`blocker` — the use case cannot be confidently turned into a correct\nguide or audited until this is resolved. `recommendation` — the\nguide can be written without it, but the use case is materially\nbetter with it addressed.\n",
            "enum": [
              "blocker",
              "recommendation"
            ]
          },
          "text": {
            "type": "string",
            "description": "What is missing or wrong, and what to add or fix. Plain text."
          }
        },
        "description": "One thing the reviewer noticed about the use case."
      },
      "UseCaseRevision": {
        "type": "object",
        "required": [
          "id",
          "revision_id",
          "title",
          "preface",
          "created_at"
        ],
        "properties": {
          "archived_at": {
            "type": "string",
            "description": "Set when this use case has been archived.",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "draft": {
            "type": "boolean",
            "description": "Advisory flag marking the use case as a work in progress. While\n`true`, no implementation guide is generated for it (see\n`generated_guide`) and a review weighs the incomplete status\naccordingly. Defaults to `false`; set it back to `false` once the\nuse case is ready.\n"
          },
          "guide": {
            "type": "string",
            "description": "Markdown implementation guide. Deprecated — guides are now\ngenerated from the use case (see `generated_guide`); this\nhuman-authored field is retained for backward compatibility.\nOptional.\n",
            "deprecated": true
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "preface": {
            "$ref": "#/components/schemas/UseCasePreface"
          },
          "revision_id": {
            "type": "string",
            "format": "uuid"
          },
          "technical_details": {
            "type": "string",
            "description": "Markdown technical annex that the guide generator and the\nconfiguration auditor consume: data sources and schemas, data\ngrain, stable/reference keys, blockers (e.g. hashed vs cleartext\nidentity), feature flags, and egress destinations. Optional.\n"
          },
          "title": {
            "type": "string"
          }
        },
        "description": "A specific saved revision of a use case. Same shape as `UseCase` except\n`resources` is omitted, because resource links are a live property of\nthe use case as a whole, not of any individual revision.\n"
      },
      "UseCaseRevisionSummary": {
        "type": "object",
        "required": [
          "revision_id",
          "created_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "revision_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "description": "One entry in the list of saved use case revisions."
      },
      "UseCaseSummary": {
        "type": "object",
        "required": [
          "id",
          "title",
          "created_at"
        ],
        "properties": {
          "applies_to": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UseCaseAppliesTo"
              }
            ],
            "description": "Computed property: what this use case applies to, taken from its\nmost recent review. Read-only; absent until a review has classified\nit.\n"
          },
          "archived_at": {
            "type": "string",
            "description": "Set when this use case has been archived.",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          }
        },
        "description": "A use case summary, returned by the listing endpoint. Excludes the\npreface, guide, and resources to keep the listing payload small.\n"
      },
      "UseCaseUpdate": {
        "type": "object",
        "required": [
          "revision_id",
          "title"
        ],
        "properties": {
          "draft": {
            "type": "boolean",
            "description": "Advisory flag marking the use case as a work in progress. While\n`true`, no implementation guide is generated for it (see\n`generated_guide`) and a review weighs the incomplete status\naccordingly. Defaults to `false`; set it back to `false` once the\nuse case is ready.\n"
          },
          "guide": {
            "type": "string",
            "description": "Markdown implementation guide. Deprecated — guides are now\ngenerated from the use case (see `generated_guide`); this\nhuman-authored field is retained for backward compatibility.\nOptional.\n",
            "deprecated": true
          },
          "preface": {
            "$ref": "#/components/schemas/UseCasePrefaceContent"
          },
          "revision_id": {
            "type": "string",
            "format": "uuid"
          },
          "technical_details": {
            "type": "string",
            "description": "Markdown technical annex that the guide generator and the\nconfiguration auditor consume: data sources and schemas, data\ngrain, stable/reference keys, blockers (e.g. hashed vs cleartext\nidentity), feature flags, and egress destinations. Optional.\n"
          },
          "title": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "UseCaseUpdateMergePatch": {
        "type": "object",
        "properties": {
          "draft": {
            "oneOf": [
              {
                "type": "boolean",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Advisory flag marking the use case as a work in progress. While\n`true`, no implementation guide is generated for it (see\n`generated_guide`) and a review weighs the incomplete status\naccordingly. Defaults to `false`; set it back to `false` once the\nuse case is ready.\n"
          },
          "guide": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite",
                "deprecated": true
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Markdown implementation guide. Deprecated — guides are now\ngenerated from the use case (see `generated_guide`); this\nhuman-authored field is retained for backward compatibility.\nOptional.\n"
          },
          "preface": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/UseCasePrefaceContentMergePatch"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ]
          },
          "revision_id": {
            "type": "string",
            "format": "uuid"
          },
          "technical_details": {
            "oneOf": [
              {
                "type": "string",
                "description": "Pass this value to overwrite the existing value.",
                "title": "Overwrite"
              },
              {
                "type": "null",
                "description": "Pass `null` to clear this field's existing value.",
                "title": "Clear"
              }
            ],
            "description": "Markdown technical annex that the guide generator and the\nconfiguration auditor consume: data sources and schemas, data\ngrain, stable/reference keys, blockers (e.g. hashed vs cleartext\nidentity), feature flags, and egress destinations. Optional.\n"
          },
          "title": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "UseCaseUpdatePost": {
        "type": "object",
        "required": [
          "revision_id",
          "title"
        ],
        "properties": {
          "draft": {
            "type": "boolean",
            "description": "Advisory flag marking the use case as a work in progress. While\n`true`, no implementation guide is generated for it (see\n`generated_guide`) and a review weighs the incomplete status\naccordingly. Defaults to `false`; set it back to `false` once the\nuse case is ready.\n"
          },
          "guide": {
            "type": "string",
            "description": "Markdown implementation guide. Deprecated — guides are now\ngenerated from the use case (see `generated_guide`); this\nhuman-authored field is retained for backward compatibility.\nOptional.\n",
            "deprecated": true
          },
          "preface": {
            "$ref": "#/components/schemas/UseCasePrefaceContentPost"
          },
          "revision_id": {
            "type": "string",
            "format": "uuid"
          },
          "technical_details": {
            "type": "string",
            "description": "Markdown technical annex that the guide generator and the\nconfiguration auditor consume: data sources and schemas, data\ngrain, stable/reference keys, blockers (e.g. hashed vs cleartext\nidentity), feature flags, and egress destinations. Optional.\n"
          },
          "title": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "UseCaseUpdatePut": {
        "type": "object",
        "required": [
          "revision_id",
          "title"
        ],
        "properties": {
          "draft": {
            "type": "boolean",
            "description": "Advisory flag marking the use case as a work in progress. While\n`true`, no implementation guide is generated for it (see\n`generated_guide`) and a review weighs the incomplete status\naccordingly. Defaults to `false`; set it back to `false` once the\nuse case is ready.\n"
          },
          "guide": {
            "type": "string",
            "description": "Markdown implementation guide. Deprecated — guides are now\ngenerated from the use case (see `generated_guide`); this\nhuman-authored field is retained for backward compatibility.\nOptional.\n",
            "deprecated": true
          },
          "preface": {
            "$ref": "#/components/schemas/UseCasePrefaceContentPut"
          },
          "revision_id": {
            "type": "string",
            "format": "uuid"
          },
          "technical_details": {
            "type": "string",
            "description": "Markdown technical annex that the guide generator and the\nconfiguration auditor consume: data sources and schemas, data\ngrain, stable/reference keys, blockers (e.g. hashed vs cleartext\nidentity), feature flags, and egress destinations. Optional.\n"
          },
          "title": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ValidationError": {
        "type": "object",
        "required": [
          "message",
          "path",
          "context"
        ],
        "properties": {
          "context": {
            "$ref": "#/components/schemas/ValidationErrorContext"
          },
          "message": {
            "type": "string",
            "description": "A human-readable error message."
          },
          "path": {
            "type": "string",
            "description": "The location in the document that failed validation."
          },
          "suggestion": {
            "type": "string",
            "description": "A suggestion for fixing this error."
          }
        },
        "description": "A JSON Schema validation error."
      },
      "ValidationErrorContext": {
        "type": "object",
        "required": [
          "errorType"
        ],
        "properties": {
          "errorType": {
            "type": "string",
            "description": "The type of validation error which occurred."
          }
        },
        "description": "More information about the error."
      },
      "WebhookEndpoint": {
        "type": "object",
        "required": [
          "created_at",
          "enabled_events",
          "id",
          "status",
          "updated_at",
          "url"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "description": "When this webhook endpoint was created.",
            "format": "date-time"
          },
          "enabled_events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookEventType"
            },
            "description": "The event types to enable for this endpoint."
          },
          "id": {
            "type": "string",
            "example": "2c1881c4-a0c0-424d-89e1-b481f3cb118c",
            "format": "uuid"
          },
          "secret": {
            "type": "string",
            "description": "Symmetric signing key - base64 encoded random bytes prefixed with `whsec_`.",
            "example": "whsec_...",
            "x-secret": true
          },
          "status": {
            "type": "string",
            "description": "The status of the webhook. It can be either `enabled` or `disabled`.",
            "enum": [
              "enabled",
              "disabled"
            ]
          },
          "updated_at": {
            "type": "string",
            "description": "When this webhook endpoint was last updated.",
            "format": "date-time"
          },
          "url": {
            "type": "string",
            "description": "The URL of the webhook endpoint.",
            "example": "https://hooks.slack.com/services/...",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "description": "A webhook is a way to send notifications from Faraday to another system. \n\nFaraday webhooks conform to the [standard webhooks specification](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md).\n\nWhen an event triggers a webhook, Faraday sends a POST request to all registered endpoint URLs\nwith a thin JSON payload describing which resource has been updated.\n\nThe structure of the payload is:\n```\n  {\n    \"timestamp\": \"2024-09-26T14:27:05.944507+00:00\",  // iso-formatted string\n    \"type\": \"resource.ready_with_update\",             // event type\n    \"data\": {\n      \"account_id\": \"...\",      // uuid of the account\n      \"resource_id\": \"...\",     // uuid of the resource\n      \"resource_type\": \"...\"    // one of 'atlases', 'cohorts', 'connections', 'datasets', 'persona_sets', 'recommenders', 'scopes', 'streams', 'targets', 'traits'\n    }\n  }\n```\nRefer to the `webhooks` section of [the yml spec](https://github.com/faradayio/sdk_docs/blob/main/static/api.simplified.yml).\n\nThe headers `svix-id`, `svix-timestamp`, and `svix-signature` contain the unique message id, the timestamp\nof the message attempt (seconds since epoch), and the HMAC signature of the message (comma-separated list), \nrespectively.\n"
      },
      "WebhookEndpointMergePatch": {
        "type": "object",
        "properties": {
          "enabled_events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookEventType"
            },
            "description": "The event types to enable for this endpoint."
          },
          "status": {
            "type": "string",
            "description": "The status of the webhook. It can be either `enabled` or `disabled`.",
            "enum": [
              "enabled",
              "disabled"
            ]
          },
          "url": {
            "type": "string",
            "description": "The URL of the webhook endpoint.",
            "example": "https://hooks.slack.com/services/...",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PATCH the `WebhookEndpoint` type.)\n\nA webhook is a way to send notifications from Faraday to another system. \n\nFaraday webhooks conform to the [standard webhooks specification](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md).\n\nWhen an event triggers a webhook, Faraday sends a POST request to all registered endpoint URLs\nwith a thin JSON payload describing which resource has been updated.\n\nThe structure of the payload is:\n```\n  {\n    \"timestamp\": \"2024-09-26T14:27:05.944507+00:00\",  // iso-formatted string\n    \"type\": \"resource.ready_with_update\",             // event type\n    \"data\": {\n      \"account_id\": \"...\",      // uuid of the account\n      \"resource_id\": \"...\",     // uuid of the resource\n      \"resource_type\": \"...\"    // one of 'atlases', 'cohorts', 'connections', 'datasets', 'persona_sets', 'recommenders', 'scopes', 'streams', 'targets', 'traits'\n    }\n  }\n```\nRefer to the `webhooks` section of [the yml spec](https://github.com/faradayio/sdk_docs/blob/main/static/api.simplified.yml).\n\nThe headers `svix-id`, `svix-timestamp`, and `svix-signature` contain the unique message id, the timestamp\nof the message attempt (seconds since epoch), and the HMAC signature of the message (comma-separated list), \nrespectively.\n"
      },
      "WebhookEndpointPost": {
        "type": "object",
        "required": [
          "enabled_events",
          "url"
        ],
        "properties": {
          "enabled_events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookEventType"
            },
            "description": "The event types to enable for this endpoint."
          },
          "url": {
            "type": "string",
            "description": "The URL of the webhook endpoint.",
            "example": "https://hooks.slack.com/services/...",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to POST a new value of the `WebhookEndpoint` type.)\n\nA webhook is a way to send notifications from Faraday to another system. \n\nFaraday webhooks conform to the [standard webhooks specification](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md).\n\nWhen an event triggers a webhook, Faraday sends a POST request to all registered endpoint URLs\nwith a thin JSON payload describing which resource has been updated.\n\nThe structure of the payload is:\n```\n  {\n    \"timestamp\": \"2024-09-26T14:27:05.944507+00:00\",  // iso-formatted string\n    \"type\": \"resource.ready_with_update\",             // event type\n    \"data\": {\n      \"account_id\": \"...\",      // uuid of the account\n      \"resource_id\": \"...\",     // uuid of the resource\n      \"resource_type\": \"...\"    // one of 'atlases', 'cohorts', 'connections', 'datasets', 'persona_sets', 'recommenders', 'scopes', 'streams', 'targets', 'traits'\n    }\n  }\n```\nRefer to the `webhooks` section of [the yml spec](https://github.com/faradayio/sdk_docs/blob/main/static/api.simplified.yml).\n\nThe headers `svix-id`, `svix-timestamp`, and `svix-signature` contain the unique message id, the timestamp\nof the message attempt (seconds since epoch), and the HMAC signature of the message (comma-separated list), \nrespectively.\n"
      },
      "WebhookEndpointPut": {
        "type": "object",
        "required": [
          "enabled_events",
          "status",
          "url"
        ],
        "properties": {
          "enabled_events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookEventType"
            },
            "description": "The event types to enable for this endpoint."
          },
          "status": {
            "type": "string",
            "description": "The status of the webhook. It can be either `enabled` or `disabled`.",
            "enum": [
              "enabled",
              "disabled"
            ]
          },
          "url": {
            "type": "string",
            "description": "The URL of the webhook endpoint.",
            "example": "https://hooks.slack.com/services/...",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "description": "(Parameters used to PUT a value of the `WebhookEndpoint` type.)\n\nA webhook is a way to send notifications from Faraday to another system. \n\nFaraday webhooks conform to the [standard webhooks specification](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md).\n\nWhen an event triggers a webhook, Faraday sends a POST request to all registered endpoint URLs\nwith a thin JSON payload describing which resource has been updated.\n\nThe structure of the payload is:\n```\n  {\n    \"timestamp\": \"2024-09-26T14:27:05.944507+00:00\",  // iso-formatted string\n    \"type\": \"resource.ready_with_update\",             // event type\n    \"data\": {\n      \"account_id\": \"...\",      // uuid of the account\n      \"resource_id\": \"...\",     // uuid of the resource\n      \"resource_type\": \"...\"    // one of 'atlases', 'cohorts', 'connections', 'datasets', 'persona_sets', 'recommenders', 'scopes', 'streams', 'targets', 'traits'\n    }\n  }\n```\nRefer to the `webhooks` section of [the yml spec](https://github.com/faradayio/sdk_docs/blob/main/static/api.simplified.yml).\n\nThe headers `svix-id`, `svix-timestamp`, and `svix-signature` contain the unique message id, the timestamp\nof the message attempt (seconds since epoch), and the HMAC signature of the message (comma-separated list), \nrespectively.\n"
      },
      "WebhookEventType": {
        "type": "string",
        "description": "The type of event that triggered the webhook.\n",
        "enum": [
          "resource.errored",
          "resource.ready_with_update"
        ]
      },
      "WebhookMessageForResource": {
        "type": "object",
        "required": [
          "type",
          "timestamp",
          "data"
        ],
        "properties": {
          "data": {
            "type": "object",
            "required": [
              "account_id",
              "resource_type",
              "resource_id"
            ],
            "properties": {
              "account_id": {
                "type": "string",
                "description": "The ID of the account that owns the resource.",
                "format": "uuid"
              },
              "resource_id": {
                "type": "string",
                "description": "The ID of the resource that triggered the event.",
                "format": "uuid"
              },
              "resource_type": {
                "$ref": "#/components/schemas/ResourceType"
              }
            },
            "description": "The data associated with the event. The structure of this object will depend on the event type.\n"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "type": {
            "$ref": "#/components/schemas/WebhookEventType"
          }
        }
      }
    },
    "parameters": {
      "ResourceIds": {
        "description": "Filter results to only the resources matching the given IDs. Repeat the parameter for multiple IDs.",
        "explode": true,
        "in": "query",
        "name": "ids",
        "required": false,
        "schema": {
          "items": {
            "format": "uuid",
            "type": "string"
          },
          "maxItems": 100,
          "type": "array"
        },
        "style": "form"
      },
      "cohort_id": {
        "description": "The UUID of a cohort",
        "in": "path",
        "name": "cohort_id",
        "required": true,
        "schema": {
          "format": "uuid",
          "type": "string"
        }
      },
      "dataset_id": {
        "description": "The UUID of a dataset",
        "in": "path",
        "name": "dataset_id",
        "required": true,
        "schema": {
          "format": "uuid",
          "type": "string"
        }
      },
      "notification_id": {
        "description": "The ID of a notification",
        "in": "path",
        "name": "notification_id",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "persona_set_id": {
        "description": "The UUID of a persona set",
        "in": "path",
        "name": "persona_set_id",
        "required": true,
        "schema": {
          "format": "uuid",
          "type": "string"
        }
      },
      "resource_id": {
        "description": "The ID of a resource that has persistent notifications",
        "in": "path",
        "name": "resource_id",
        "required": true,
        "schema": {
          "format": "uuid",
          "type": "string"
        }
      },
      "resource_type": {
        "description": "The resource type of a resource which has a persistent notification.",
        "in": "path",
        "name": "resource_type",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/ResourceType"
        }
      },
      "scope_id": {
        "description": "The UUID of a scope",
        "in": "path",
        "name": "scope_id",
        "required": true,
        "schema": {
          "format": "uuid",
          "type": "string"
        }
      },
      "stream_id": {
        "description": "The UUID of a stream",
        "in": "path",
        "name": "stream_id",
        "required": true,
        "schema": {
          "format": "uuid",
          "type": "string"
        }
      }
    },
    "securitySchemes": {
      "apiKey": {
        "in": "header",
        "name": "Authorization",
        "type": "apiKey"
      },
      "bearer": {
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "externalDocs": {
    "description": "Find out more about the Faraday SDK",
    "url": "https://developer.faraday.ai/"
  },
  "info": {
    "contact": {
      "email": "support@faraday.ai",
      "name": "Support",
      "url": "https://faraday.ai/contact"
    },
    "description": "The [Faraday](https://faraday.ai) API makes it easy to predict customer behavior programmatically. See our [API change policy](https://faraday.ai/legal).",
    "license": {
      "name": " "
    },
    "termsOfService": "https://faraday.ai/terms",
    "title": "Faraday REST API",
    "version": "1.0.0"
  },
  "security": [
    {
      "bearer": []
    }
  ],
  "servers": [
    {
      "url": "https://api.faraday.ai/v1"
    }
  ],
  "tags": [
    {
      "description": "Uploading data to Faraday",
      "name": "uploads"
    },
    {
      "description": "Specifying how to import data",
      "name": "datasets"
    },
    {
      "description": "Specifying how to import collections of geographic locations",
      "name": "atlases"
    },
    {
      "description": "Retrieving the locations imported by atlases",
      "name": "locations"
    },
    {
      "description": "Extracting data from datasets",
      "name": "streams"
    },
    {
      "description": "Declaring cohorts (populations of customers, etc.)",
      "name": "cohorts"
    },
    {
      "description": "Declare business outcomes (propensity to buy, etc)",
      "name": "outcomes"
    },
    {
      "description": "Segment cohorts into personas",
      "name": "persona_sets"
    },
    {
      "description": "Get predictions about individuals",
      "name": "scopes"
    },
    {
      "description": "Managing attributes that wrap assertion streams",
      "name": "attributes"
    },
    {
      "description": "Managing feature store collections",
      "name": "feature_stores"
    },
    {
      "description": "Configuration of external environments for data import and export",
      "name": "connections"
    },
    {
      "description": "Configuration for exporting data from Faraday, possibly to an external environment (with connections)",
      "name": "targets"
    },
    {
      "description": "Account configuration",
      "name": "accounts"
    },
    {
      "description": "Per-account overview, use cases, and revision history (the account knowledgebase)",
      "name": "knowledgebase"
    },
    {
      "description": "Account and resource migrations",
      "name": "migrations"
    },
    {
      "description": "Get usage stats for active scopes",
      "name": "usages"
    },
    {
      "description": "Get dependency graph for the account's resources",
      "name": "graph"
    },
    {
      "description": "APIs in early access. Subject to change without notice.",
      "name": "experimental"
    }
  ],
  "webhooks": {
    "resource.errored": {
      "post": {
        "description": "This webhook is triggered when a resource has errored.\n",
        "operationId": "resource.errored",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookMessageForResource"
              }
            }
          },
          "description": "The payload of the webhook"
        },
        "summary": "Resource Errored",
        "tags": [
          "webhooks"
        ]
      }
    },
    "resource.ready_with_update": {
      "post": {
        "description": "This webhook is triggered when a resource has run successfully and is ready with an update to its data.\n",
        "operationId": "resource.ready_with_update",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookMessageForResource"
              }
            }
          },
          "description": "The payload of the webhook"
        },
        "summary": "Resource Ready With Update",
        "tags": [
          "webhooks"
        ]
      }
    }
  }
}
